Tải bản đầy đủ (.docx) (31 trang)

Tiểu luận môn điện toán đám mây SONG SONG HÓA THUẬT TOÁN HISTOGRAM EQUALIZATION

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (501.48 KB, 31 trang )

Đại Học Quốc Gia TP.HCM
Trường Đại Học Công Nghệ Thông Tin
***
BÀI THU HOẠCH MÔN
ĐIỆN TOÁN LƯỚI & ĐÁM MÂY
ĐỀ TÀI:
SONG SONG HÓA THUẬT TOÁN
HISTOGRAM EQUALIZATION
GVHD :PGS.TS NGUYỄN PHI KHỨ
Người thực hiện: :Dương Trí Dũng
Mã học viên: :CH1301008
TP.HCM – 2014
1
LỜI CẢM ƠN
Lời đầu tiên, em xin gửi lời cảm ơn chân thành đến thầy PGS.TS Nguyễn Phi
Khứ đã tận tình truyền đạt kiến thức, đóng góp ý kiến cũng như hướng dẫn để em
thực hiện bài thu hoạch này.
Mặc dù đã rất cố gắng nhưng bài thu hoạch khó tránh khỏi những thiếu sót,
em rất mong thầy cô và bạn bè đóng góp ý kiến để bài thu hoạch hoàn thiện hơn.
Tp. HCM, tháng 06 năm 2014
Dương Trí Dũng
2
LỜI CAM ĐOAN
Tôi cam đoan đây là công trình nghiên cứu của riêng tôi.
Các số liệu, kết quả nêu trong tiểu luận là trung thực và chưa từng được ai
công bố trong bất kỳ công trình nào khác.
Dương Trí Dũng (đã ký)
3
MỤC LỤC
DANH SÁCH CÁC HÌNH
4


LỜI MỞI ĐẦU
Lập trình song song bao hàm việc thiết kế một hệ thông tính toán sử dụng
nhiều bộ xử lý để giải quyết một bài toán. Lập trình song song làm tăng tốc độ thực
hiện của chương trình bằng cách chia chương trình thành nhiều phần có thể thực
hiện đồng thời và mỗi phần được thực hiện trên một bộ vi xử lý. về lý thuyết thì
một chương trình có thuật toán tôi ưu và phù hợp vổi tính toán song song được thực
hiện trên n bộ vi xử lý có thể chạy nhanh n lần so với khi thực hiện trên một bộ vi
xử lý. [3]
Đề tài lập trình song song đã được nghiên cứu rât rông lãi trên thế giới trong
nhiều năm qua. Có rất nhiều project nghiên cứu về lập trình song song và các
software hổ trợ lập trình song song. PVM là một hệ lập trình song song khá phổ
biến hiện nay. PVM cung cấp một môi trường phần mềm dựa trên hệ thông
Message-passing Multicomputer được phát triển bởi Oak Ridge National
Laboratories. PVM có một thư viện các thủ tục và hàm hổ trợ lập trình song song có
thể sử dụng với Ngôn ngữ C++. PVM có thể chạy trên nhiều hệ điều hành khác
nhau như Unix, Windows NT, Windows 95, Linux [3]
Mục tiêu của tiểu luận là nghiên cứu lập trình song song và ứng dụng lập
trình song song để xây dựng các thuật toán song song đạt hiệu quả cao trong việc
nén tín hiệu video và hình ảnh, làm tăng tốc độ nén tín hiệu. Chương trình cài đặt
thuật toán song song bằng ngôn ngữ Visual C++ sử dụng thư viện PVM chạy trên
môi trường windows 32bit như windows 95/97/98/NT. [3]
5
Chương 1. TỔNG QUAN VỀ CHIẾN LƯỢT SONG SONG VÀ
XỬ LÝ ẢNH
1.1. Chiến lượt song song
Các bài toán thực tế luôn đòi hỏi máy tính phải thực hiện nhanh để cho được
kết quả trong một khoảng thời gian chấp nhận được. Tuy nhiên tốc độ của các máy
tính hiện đại và nhanh nhất hiện nay vẫn chưa đáp ứng được. [3]
Các bài toán đòi hỏi tính toán nhanh bao gồm các bài toán về phương pháp
tính và các bài toán giả lập khoa học kỹ thuật. Các bài toán này cần một khối lượng

tính toán rất lớn (có thể lên đến hàng tỷ tỷ phép toán) trên một khối lượng dữ liệu
khổng lồ. Các phép tính này phải hoàn thành trong mộl thời gian chấp nhận được
đốì với bài toán. Ví dụ với bài toán về dự báo thời tiết nếu phải cần 2 ngày để thông
báo kết quả Ihời tiết của ngày hôm sau thì bài toán sẽ trô nôn vô nghĩa. Thực tế trên
nhiều lãnh vực nhiều bài toán không thể giải quyết trong thời gian châp nhận được
đốì với các máy tính nhanh nhất hiện nay. [3]
Ví dụ: Bài toán dự đoán thời tiết bằng máy tính đòi hỏi phải chạy trên các
máy tính cực mạnh. Bầu khí quyển trái đất được chia thành các miền 3 chiều gọi là
cell. Bài toán cần giải nhiều phương trình phực tạp với sô" ẩn rất lớn để bắt được
các thay đổi khác nhau. Các điều kiện trong mỗi cell (nhiệt độ, áp suất, độ ẩm, tốc
độ và hướng gió ) được tính tại mỗi thời điểm bằng cách dùng các điều kiện tại
thời điểm ưưđc. Các phép tính trên mỗi cell được lặp lại nhiều lần tại mỗi thời điểm
khác nhau cho đến khi đạt được kết quả mong muôn. Giả sử bầu khí quyển chia
thành các ccll kích thước 1 mile X 1 mile X 1 mile. Một dự báo thô sơ cần khoảng
5xl08 cell. Giả sử tại mỗi thời điểm mỗi cell cần 200 phép tính sô" chấm động. Vậy
tại một thời điểm cần 10!1 phép toán chấm động. Nếu muôn dư báo ihời tiết Irong
10 ngày dùng bước thời gian là 10 phút thì cần tất cả là 104 thời điểm, tức là 1015
phép tính số chấm động. Một máy tính hoạt động với tốc độ lOOMflops (108 só
chấm động /1 giây) sẽ mất khoảng 107 giây hay trên 100 ngày để thực hiện phép
tính ??? [3]
6
Một phương pháp để tăng tốc độ tính toán đã được nghiên CƯÚ trong nhiều
năm nay là xử lý song song. Mục đích chính của xử lý song song là các phép toán
được Ihực hiện đồng thời do đó giảm được thời gian thực hiện.
Bằng cách dùng nhiều bộ vi xử lý hoạt động cùng nhau trên một hệ thôYig. Bài
toán chính được chia thành nhiều phần, mỗi phần được thực hiện song song trên các
bộ vi xử lý khác nhau. Lập trình bài toán theo phương pháp này gọi là lập trình song
song. [3]
Một máy tính song song (parallel Computer) đơn giản là một tập hợp các bộ
vi xử lý hay các máy tính được nôi với nhau thông qua mạng máy tính. Ý tưởng của

máy tính song song la : n máy tính có thể thực hiện nhanh gấp n lần một máy tính
đơn thực hiện, do đó bài toán thực hiện trên n máy tính sẽ thực hiện trong khoảng
1/n thời gian thực hiện trên máy đơn. [3]
1.2. Xử lý ảnh
Xử lý ảnh là một lĩnh vực mang tính khoa học và công nghệ. Nó là một
ngành khoa học mới mẻ so với nhiều ngành khoa học khác nhưng tốc độ phát triển
của nó rất nhanh, kích thích các trung tâm nghiên cứu, ứng dụng, đặc biệt là máy
tính chuyên dụng riêng cho nó. [2]
Xử lý ảnh được đưa vào giảng dạy ở bậc đại học ở nước ta khoảng chục năm
nay. Nó là môn học liên quan đến nhiều lĩnh vực và cần nhiều kiến thức cơ sở khác.
Đầu tiên phải kể đến Xử lý tín hiệu số là một môn học hết sức cơ bản cho xử lý tín
hiệu chung, các khái niệm về tích chập, các biến đổi Fourier, biến đổi Laplace, các
bộ lọc hữu hạn Thứ hai, các công cụ toán như Đại số tuyến tính, Sác xuất, thống
kê. Một số kiến thứ cần thiết như Trí tuệ nhân tao, Mạng nơ ron nhân tạo cũng được
đề cập trong quá trình phân tích và nhận dạng ảnh. [2]
Các phương pháp xử lý ảnh bắt đầu từ các ứng dụng chính: nâng cao chất
lượng ảnh và phân tích ảnh. Ứng dụng đầu tiên được biết đến là nâng cao chất
lượng ảnh báo được truyền qua cáp từ Luân đôn đến New York từ những năm 1920.
Vấn đề nâng cao chất lượng ảnh có liên quan tới phân bố mức sáng và độ phân giải
của ảnh. Việc nâng cao chất lượng ảnh được phát triển vào khoảng những năm
7
1955. Điều này có thể giải thích được vì sau thế chiến thứ hai, máy tính phát triển
nhanh tạo điều kiện cho quá trình xử lý ảnh sô thuận lợi. Năm 1964, máy tính đã có
khả năng xử lý và nâng cao chất lượng ảnh từ mặt trăng và vệ tinh Ranger 7 của Mỹ
bao gồm: làm nổi đường biên, lưu ảnh. Từ năm 1964 đến nay, các phương tiện xử
lý, nâng cao chất lượng, nhận dạng ảnh phát triển không ngừng. Các phương pháp
tri thức nhân tạo như mạng nơ ron nhân tạo, các thuật toán xử lý hiện đại và cải
tiến, các công cụ nén ảnh ngày càng được áp dụng rộng rãi và thu nhiều kết quả khả
quan. [2]
8

Chương 2. LÝ THUYẾT SONG SONG VÀ THUẬT TOÁN
HISTOGRAM EQUALIZATION
2.1. Lý thuyết song song
2.1.1. Các dạng máy tính song song
Hê thống Shared memory Multiprocessor [6]
Hệ thống Shared Memory Mulliprocessor gồm nhiều processor, các
processor trao đổi thông tin với nhau thông qua bộ nhớ chung. Bộ nhớ chung còn
gọi là bộ nhớ loàn cục (global memory)
Hình 2.1. Hệ thống share memory multiprocessor
Nguồn: Hệ thống share memory multiprocessor theo [6]
Việc trao đổi thông tin giữa các processor thông qua 2 lệnh:
Global read (X, Y)
Global write (U, V)
9
Lệnh Global read đọc dữ liệu X trong bộ nhớ chung và lưu vào biến cục bộ
Y. Tương lự lệnh global write ghi biến cục bộ u vào biến V trong bộ nhớ chung.
Hộ thông Message-Passing Multicomputer [6]
Hệ thông gồm một tập hợp các máy tính được nối với nhau qua liên kết mạng.
Mỗi máy tính gồm một bộ vi xử lý và bộ nhớ liêng. Bộ nhớ liêng không thể truy
xuất bởi các máy tính khác mà chỉ có thể truy xuất bởi chính bộ vi xử lý nối với nó.
hệ thông mạng cho phép các máy tính trao đổi các thông báo qua lại với nhau. Các
thông báo có thể chứa các dữ liệu mà các máy tính khác cần để tính toán. Hệ thống
này gọi là Message Passing Multicomputer hay đơn giản là Multicomputer.
Hình 2.2. Hệ thống message passing
Nguồn: Hệ thống message passing theo [3]
Chương trình thực hiện trên Multicomputer được chia thành nhiều phần , các
phần được thực hiện đồng thời trên các máy tính.
Một bài toán được chia thành các process đồng thời, mỗi process biểu diễn
một phần nhỏ của bài toán. Nếu có 6 process và 6 máy tính thì mỗi process được
thực hiện trên một máy tính. Nếu sô' process nhiều hơn số’ máy tính thì nhiều hơn

một process sẽ được thực hiện trên một máy tính. Các process liên lạc với nhau
bằng cách gởi /nhận các message thông qua mạng máy tính.
Để diễn tả các Ihuật toán trên mồ hình multicomputer ta dùng 2 lệnh send và
receive để trao đổi thông tin giữa các máy tính.
send (X, i)
receive (Y, j)
10
Một processor p thực hiện lệnh send sẽ gởi thông báo X đến processor Pị, sau đó p
sẽ tiếp tục thực hiện lệnh kế tiếp sau lệnh send. Một processor p thực hiện lệnh
receive tạm ngưng chương trình đang thực hiện cho đến khi dữ liệu được nhận từ
prccessor Pj. p lưu dữ liệu vào biến Y và tiếp tục thực hiện chương trình.
2.1.2. Các mô hình tính toán song song
Bất kỳ máy tính tuần tự hay song song đều thực hiện các lệnh trên các dữ
liệu cần xử lý. Một dòng các lệnh (stream of instruction) ra lệnh cho máy tính cách
thực hiện tại mỗi bước. Một dòng dữ liệu (stream of data) gồm các dữ liệu được xử
lý bởi dòng các lệnh. Phụ thuộc tồn tại một hay nhiều dòng lệnh hay dữ liệu la có
thể chia thành 4 lớp máy tính :
Single Instruction stream, Single Data Stream (SISD)
Multiple Instruction stream, Single Data Stream (MISD)
Single Instruction stream. Multiple Data Stream (SIMD)
Multiple Instruction stream, Multiple Data Stream (MIMD)
SISD Computer [6]
Mô hình này là mô hình máy tính Von Neuman. Lớp máy tính này gồm một
đơn vị xử lý nhận một dòng lệnh hoạt động trên một dòng dữ liệu. CPU thực hiện
chương trình trong bộ nhớ một cách tuần tự từng lệnh một. Thuật toán trên mô hình
này là tuần tự.
Hình 2.3. SISD computer
Nguồn: SISD computer theo [3]
MISD Computer [6]
Máy tính gồm N processor, mỗi processor có một đơn vi điều khiển và dùng

chung một đơn vị bộ nhớ. Có N dòng lệnh và một dòng dữ liệu. Tại mỗi bước, dữ
liệu được đọc từ bộ nhđ dùng chung và được xử lý bởi các processor một cách đồng
thời theo các dòng lệnh nhận từ các đơn vị điều khiển. Thuật toán trên mổ hình này
11
là thuật toán song song, mỗi processor xử lý môt chương trình riêng trên một dòng
dữ liệu chung.
Hình 2.4. MISD Computer
Nguồn: MISD Computer theo [3]
SIMD Computer [6]
Lớp máy tính này gồm N processor như nhau, mỗi processor có bộ nhớ riêng
có thể chưa chương trình và dữ liệu. Có một dòng lệnh và N dòng dữ liệu. Tất cả
các processor nhận một dòng lệnh chung và hoạt động dưới sự điều khiển của một
đơn vị điều khiển duy nhất.
Thuật toán của mô hình này là thuật toán song song. Mỗi processor xử lý
một chương trình duy nhât được chép và lưu trong bộ nhớ riêng. Có N dòng dữ liệu,
mỗi dòng ứng với một processor.
Các processor hoạt động một cách đồng bộ. Tại mỗi thời điểm các processor
Ihực hiện một lệnh giông nhau nhưng trên các dữ liệu khác nhau.
12
Hình 2.5. SIMD Computer
Nguồn: SIMD Computer theo [3]
MIMD Computer [6]
Lớp máy tính này gồm N processor, mỗi processor nối với bộ nhớ riêng. Có
N dòng lệnh và N dòng dữ liệu. Tại mỗi bước, mỗi dòng dữ liệu được đọc từ bộ nhớ
riêng và được xử lý bởi một processor theo dòng lệnh nhận từ các đơn vị điều khiển
riêng.
Thuật toán trên mô hình này là thuật toán song song, mỗi processor xử lý
môt chương trình riêng trên một dòng dữ liệu riêng.Các processor hoạt động có thể
đồng bộ hay không đồng bộ. Tại mỗi thời điểm các processor có Ihể ihực hiện các
lệnh khác nhau trên các dữ liệu khác nhau.

13
Hình 2.6. MIMD Computer
Nguồn: MIMD Computer theo [3]
2.1.3. Các phương pháp đánh giá độ phức tạp của các thuật
toán song song hóa
Speedup [3]
Một phương pháp để đánh giá hiệu quả của thuậl toán song song là dùng
Speedup. Speedup S(n) được định nghĩa như sau :
14
S(n) = thời gian thực hiện khi dùng một processor _ t
s
/ thời gian thực hiện
khi dùng n processor t
Ta có S(n) < n do đó giải thuật song song nên được thiết kế sao cho speedup
S(n) « n.
Các nguyên nhân có thổ làm giảm giá trị speedup
Thời gian trao đổi thông tin giữa các processor
Các processor không đồng hộ, một s ố tốc độ xử lý cao, một sô tốc độ
xử lý chậm
Các phép tính thêm vào Irong thuật toán song song nhưng khổng có
trong thuật toán tuần tự.
Có thể tồn tại các phần không Ihể song song hóa mà phải thực hiện
bằng thuật toán tuần tự.
Độ phức tạp v[3]
Cũng như các thuật toán tuần tự , các thuật toán song song có thể được đánh
giá bằng độ phức tạp thuật toán. Độ phức tạp chính là số các bước tính toán cần
thiết để thực hiện thuật toán.7
Lập trình song song là chia bài toán thành nhiều process có thể thực hiện một
cách đồng thời.
Thời gian thực hiện song song tp gồm thời gian tính toán tcoịnp và thời gian

trao đổi thông tin tcomm
Ta có: tp — t
coinm
+ t
com
p
Để dễ phân tích thuật toán ta giả sử tất cả các processor đều hoạt động ở
cùng một tốc độ và mỗi lệnh trao đổi thông tin đều cùng một thời gian thực hiện.
Đánh giá độ phức tạp thời gian tính toán tcomm ta tính sô" bước tính toán của mỗi
process. Số^ lớn nhâ\ các bước tính toán của tất cả các process chính là độ phức tạp.
Thời gian trao đổi thông tin cũng đo một cách tương tự bằng cách tính số
bước gởi và nhận thông tin trong thuật toán.
15
2.2. Lý thuyết xử lý ảnh
2.2.1. Điểm ảnh (picture Element)
Gốc của ảnh (ảnh tự nhiên) là ảnh liên tục về không gian và độ sáng. Để xử
lý bằng máy tính (số), ảnh cần phải được số hoá. Số hoá ảnh là sự biến đổi gần đúng
một ảnh liên tục thành một tập điểm phù hợp với ảnh thật về vị trí (không gian) và
độ sáng (mức xám). Khoảng cách giữa các điểmảnh đó được thiết lập sao cho mắt
người không phân biệt được ranh giới giữa chúng. Mỗi một điểm như vậy gọi là
điểm ảnh (PEL: Picture Element) hay gọi tắt là Pixel. Trong khuôn khổ ảnh hai
chiều, mỗi pixel ứng với cặp tọa độ ( x , y). v[3]
Định nghĩa: Điểm ảnh (Pixel) là một phần tử của ảnh số tại toạ độ (x, y) với
độ xám hoặc màu nhất định. Kích thước và khoảng cách giữa các điểm ảnh đó được
chọn thích hợp sao cho mắt người cảm nhận sự liên tục về không gian và mức xám
(hoặc màu) của ảnh số gần như ảnh thật. Mỗi phần tử trong ma trận được gọi là một
phần tử ảnh. v[3]
2.2.2. Độ phân giải của ảnh
Định nghĩa v[3]: Độ phân giải (Resolution) của ảnh là mật độ điểm ảnh
được ấn định trên một ảnh số được hiển thị.

Theo định nghĩa, khoảng cách giữa các điểm ảnh phải được chọn sao cho mắt người
vẫn thấy được sự liên tục của ảnh. Việc lựa chọn khoảng cách thích hợp tạo nên
một mật độ phân bổ, đó chính là độ phân giải và được phân bố theo trục x và y
trong không gian hai chiều.
Ví dụ: Độ phân giải của ảnh trên màn hình CGA (Color Graphic Adaptor) là
một lưới điểm theo chiều ngang màn hình: 320 điểm chiều dọc * 200 điểm ảnh
(320*200). Rõ ràng, cùng màn hình CGA 12” ta nhận thấy mịn hơn màn hình CGA
17” độ phân giải 320*200. Lý do: cùng một mật độ (độ phân giải) nhưng diện tích
màn hình rộng hơn thì độ mịn (liên tục của các điểm) kém hơn. v[3]
16
2.2.3. Mức xám của ảnh
Một điểm ảnh (pixel) có hai đặc trưng cơ bản là vị trí (x, y) của điểm ảnh
và độ xám của nó. Dưới đây chúng ta xem xét một số khái niệm và thuật ngữ
thường dùng trong xử lý ảnh.
Định nghĩa: Mức xám của điểm ảnh là cường độ sáng của nó được gán bằng
giá trị số tại điểm đó.
Các thang giá trị mức xám thông thường: 16, 32, 64, 128, 256 (Mức 256 là
mức phổ dụng. Lý do: từ kỹ thuật máy tính dùng 1 byte (8 bit) để biểu diễn mức
xám: Mức xám dùng 1 byte biểu diễn: 2
8
=256 mức, tức là từ 0 đến 255).
Ảnh đen trắng: là ảnh có hai màu đen, trắng (không chứa màu khác) với mức
xám ở các điểm ảnh có thể khác nhau.
Ảnh nhị phân: ảnh chỉ có 2 mức đen trắng phân biệt tức dùng 1 bit mô tả 2
1

mức khác nhau. Nói cách khác: mỗi điểm ảnh của ảnh nhị phân chỉ có thể là 0 hoặc
1.
Ảnh màu: trong khuôn khổ lý thuyết ba màu (Red, Blue, Green) để tạo nên
thế giới màu, người ta thường dùng 3 byte để mô tả mức màu, khi đó các giá trị

màu: 2
8
*
3
=2
24 ≈
16,7 triệu màu.
Chúng ta cầ đọc thêm sách tham khảo để có thêm thông tin về các khái niệm
này.
2.2.4. Định nghĩa ảnh số
Ảnh số là tập hợp các điểm ảnh với mức xám phù hợp dùng để mô tả ảnh gần
với ảnh thật.
2.2.5. Khái nhiệm Histogram Equalization
Histogram trong máy ảnh số là một dạng biểu đồ biểu diễn số lượng điểm
ảnh tương ứng với mức độ sáng tối của bức ảnh sau khi chụp.
Cụ thể hơn, trục dọc biểu diễn số lượng điểm ảnh, các đỉnh càng cao thì càng có
nhiều điểm ảnh ở khu vực đó và độ chi tiết càng nhiều. Trục ngang tính từ trái qua
phải với mốc giá trị từ 0 đến 255 biểu diễn độ sáng của mỗi khu vực ảnh. Gốc giá
trị 0 được coi là tối nhất tựa như màu đen tuyền trong khi càng dịch sang phải giá trị
17
này càng tăng, ngọn sáng nhất của ánh sáng ở giá trị 255. Khu vực giữa hai giá trị
này có độ sáng trung bình. Như vậy, biểu đồ histogram càng có nhiều điểm ảnh ở
gần khu vực gốc (giá trị 0) thì ảnh càng tối, nhiều điểm ảnh ở gần khu vực ngọn
255 thì ảnh càng sáng. Những điểm ảnh nằm trên cột dọc của một trong hai giá trị
này sẽ bị mất chi tiết (hoặc tối quá hoặc sáng quá). Một hình ảnh vừa đủ sáng và rõ
nét thì biểu đồ sẽ có dạng hình quả núi với đỉnh nằm trong khu vực sáng trung bình
và thoải dần sang tận gốc hai bên trái phải của đồ thị.
Histogram chỉ là một phương án hỗ trợ khi bạn không nhìn thấy tốt bức ảnh
trên màn hình LCD ví dụ dưới ánh mặt trời sáng, nơi có độ sáng phức tạp… Quan
trọng nhất vẫn là bạn nhìn trực tiếp vào bức ảnh và kinh nghiệm của bạn.

Biểu đồ Histogram biểu thị ánh sáng tăng dần từ trái qua phải. Hầu hết các máy ảnh
hiện nay thì trục sáng tối được chia làm 5 phần đều nhau thể hiện khoảng sáng (tối)
ở khu vực đó và ta có thể gọi mỗi khoảng này là một stop. Khoảng ở giữa có mức
sáng trung bình tức là có màu tương đồng mới màu ghi 18% gọi là stop 0. Hắt dần
sang bên trái của khoảng này thì màu càng tối (tối nhất giá trị 0) – lần lượt theo ảnh
minh họa bên dưới là stop -1 và stop -2 và hắt dần sang phải thì càng sáng (sáng
nhất giá trị 255) – lần lượt theo ảnh minh họa bên dưới là stop +1 và stop +2.
18
Chương 3. TRÌNH BÀY THUẬT GIẢI TUẦN TỰ VÀ CHIẾN
LƯỢT SONG SONG HÓA THUẬT TOÁN HISTOGRAM
EQUALIZATION
3.1 Thuật toán Histogram Equalization tuần tự [4]
3.1.1. Trình bày thuật toán
Thuật toán bao gồm các bước sau:
Bước 1: Vẽ biểu đồ Histogram của vùng ảnh.
Bước 2: Lập bảng sau với L = 10 là số mức xám mới, n = 16 là tổng số pixel của
vùng ảnh.
Bước 3: Thay thế mức xám rk trong vùng ảnh ban đầu thành mức xám sk tương ứng
và vẽ biểu đồ Histogram thu được.
Minh họa giải thuật bằng dữ liệu:
Bước 1:
2 3 3 2
4 2 4 3
3 2 3 5
2 4 2 4
19
Hình 3.1. Dữ liệu của ảnh ban đầu
Nguồn: Dữ liệu của ảnh ban đầu theo [1]
Bước 2:
sMức xám rk 0 1 2 3 4

Số pixel nk 0 0 6 5 4
S(nj) với j=0 k 0 0 6 11 15
sk = £(nj)/n với j=0 k 0 0 6/16 11/16 15/16
Kết quả sk = Round(sk*(L - 1)) 0 0 3 6 8
sMức xám rk 5 6 7 8 9
Số pixel nk 1 0 0 0 0
S(nj) với j=0 k 16 16 16 16 16
sk = £(nj)/n với j=0 k 1 1 1 1 1
Kết quả sk = Round(sk*(L - 1)) 9 9 9 9 9
20
Hình 3.2. Dữ liệu sau sau các phép tính của thuật toán
Nguồn: Dữ liệu sau sau các phép tính của thuật toán theo [1]
Bước 3:
3 6 6 3
8 3 8 6
6 3 6 9
3 8 3 8
Hình 3.3. Dữ liệu sau khi thay thế mức xám
Nguồn: Dữ liệu sau khi thay thế mức xám theo [1]
3.1.2. Độ phức tạp của giải thuật:
Tại bước 2 và bước 3 của thuật toán. Lần lượt phải xét qua từng pixel để tính
toán và thay đổi giá trị tương ứng của nó. Với ảnh có số lượng pixel là N thì độ
phức tạp của giải thuật là O(N).
21
3.2. Thuật toán Histogram Equalization song song
3.2.1. Chiến lượt song song hóa
Tại bước 1 khi thực hiện tuần tự, việc thống kê lượng mức xám thực hiện lần
lượt xét qua mỗi pixel để thống kê. Nếu ảnh số lượng điểm ảnh lớn thì việc thống
kê ở bước này sẽ diễn ra chậm chạp. Vì vậy ta có thể song song hóa bước này như
sau:

- Master chia dữ liệu ban đầu thành s phần, mỗi phần tương ứng với
dữ liệu cho mỗi Slave, mỗi phần có số lượng điểm ảnh là: N/p.
Ví dụ: N = 16 và s = 4, với dữ liệu ở phần tuần tự ta có:
Slave
1
2 3 3 2
2 3 3 2
Maste
r
4 2 4 3

Slave
2
4 2 4 3
3 2 3 5
2 4 2 4
Slave
3
3 2 3 5
Slave
4
2 4 2 4
Hình 3.3. Chiến lượt song song hóa thống kê ở bước 1
Tương tự cho bước 3, việc gán lại giá trị tương ứng cho mỗi pixel cũng được
thực hiện như sau:
Slave
1
3 6 6 3
2 3 3 2
22

Maste
r
4 2 4 3

Slave
2
8 3 8 6
3 2 3 5
2 4 2 4
Slave
3
6 3 6 9
Slave
4
3 8 3 8
Hình 3.4. Chiến lượt song song hóa thống kê ở bước 3
3.2.2. Trình bày thuật toán
Thuật toán bao gồm các bước sau:
Bước 1: Master chia N pixel thành s phần, gửi cho s Slave.
Bước 2: Tại mỗi Slave, thống kê mức xám tương ứng với số lượng pixel mà nó
nhận được từ Master. Sau khi tính xong gửi về cho Master.
Bước 3: Master tổng hợp mức sám của N pixel từ s Slave gửi về.
Bước 4: Tính toán như tại bước 2 của giải thuật tuần tự.
Bước 5: Master chia N pixel thành s phần, gửi cho s Slave.
Bước 6: Tại mỗi Slave thực hiện thay đổi giá trị cho mỗi pixcel tại vị trí tương ứng.
Bước 7: Master nhận kết quả từ s Slave và kết thúc thuật toán.
Minh họa bằng dữ liệu
Bước 1: Xem hình 3.3.
Bước 2:
Slave1

sMức xám rk 0 1 2 3 4
23
Số pixel nk 0 0 2 2 0
sMức xám rk 5 6 7 8 9
Số pixel nk 0 0 0 0 0
Hình 3.5. Thống kê mức sám ở Slave1
Slave2
sMức xám rk 0 1 2 3 4
Số pixel nk 0 0 1 1 2
sMức xám rk 5 6 7 8 9
Số pixel nk 0 0 0 0 0
Hình 3.6. Thống kê mức sám ở Slave2
Slave3
sMức xám rk 0 1 2 3 4
Số pixel nk 0 0 1 2 0
sMức xám rk 5 6 7 8 9
Số pixel nk 1 0 0 0 0
Hình 3.7. Thống kê mức sám ở Slave3
24
Slave4
sMức xám rk 0 1 2 3 4
Số pixel nk 0 0 2 0 2
sMức xám rk 5 6 7 8 9
Số pixel nk 0 0 0 0 0
Hình 3.8. Thống kê mức sám ở Slave4
Bước 3: Tổng hợp lượng mức xám từ s Slave gửi về, ta được:
sMức xám rk 0 1 2 3 4
Số pixel nk 0 0 6 5 4
sMức xám rk 5 6 7 8 9
Số pixel nk 1 0 0 0 0

Hình 3.9. Thống kê mức sám ở 4 Slave
Bước 4: Tính toán như tại bước 2 của giải thuật tuần tự.
Bước 5: Master chia N pixel thành s phần, gửi cho s Slave. Hình vẽ 3.4.
Bước 6: Tại mỗi Slave thực hiện thay đổi giá trị cho mỗi pixcel tại vị trí tương ứng.
Slave
1
3 6 6 3 → 2 3 3 2
Slave 8 3 8 6

4 2 4 3
25

×