Nâng cao chất lượng ảnh
184
Hàm truyền đạt được vẽ ở hình 12.8.
Hàm truyền đạt của quá trình cân bằng histogram là một hàm được tạo ra tuỳ theo
histogram của ảnh. Nói cách khác, đây là một hàm có tính thích nghi đối với ảnh đầu vào. Tuy
nhiên, với một bức ảnh cụ thể thì hàm truyền đạt này không thể thay đổi. Mặt khác, việc mở
rộng phạm vi biến thiên của các giá trị mức xám không phải lúc nào cũng mang lại chất lượng
cao hơn. Trong một số trường hợp, ta cần biến đổi các mức xám của ảnh sao cho histogram
của ảnh mới có một dạng cụ thể định trước. Quá trình này gọi là quá trình phối hợp (hay xác
định) histogram.
Nguyên tắc của quá trình này khá đơn giản. Giả sử ảnh có độ xám là đại lượng liên tục trên
[0,1]. Gọi r, z lần lượt là giá trị độ xám của ảnh gốc và ảnh mới, ( )
r
p r
và
( )
z
p z
là các hàm
mật độ xác suất tương ứng của chúng. Ở phần trên, ta thấy phép biến đổi
0
( )
( )
r
r
s T r
p w dw
=
=
∫
sẽ trả về mức xám s có mật độ xác suất phân bố đều. Ta định nghĩa một
biến z có tính chất như sau:
0
( )
( )
z
z
H z
p w dw s
=
=
∫
(12.8)
z chính là độ sáng của ảnh có hàm mật độ xác suất là
( )
z
p z
. Từ hai phương trình trên suy ra:
1
1
( )
( ( ))
z H
s
H
T r
−
−
=
=
(12.9)
Vậy để xác định hàm truyền đạt của qúa trình phối hợp, cần xác định
1
H
−
. Với các dữ liệu
ảnh rời rạc, việc này luôn thực hiện được nếu ( )
z
k
p z
đúng là histogram của 1 ảnh nào đó
(nghĩa là có diện tích bằng 1 và các giá trị mức xám đều không âm).
Trong MATLAB, quá trình phối hợp histogram cũng được thực hiện bằng hàm histeq nhưng
với cú pháp như sau:
>> g = histeq(f,hgram)
>> newmap = histeq(X,map,hgram)
Dải các giá trị mức xám [0,G] được chia thành
length(hgram)
khoảng đều nhau,
hgram
là
một vector gồm các số nguyên đếm số gía trị mức xám trong mỗi khoảng chia. Giá trị mặc
định của
hgram
là
hgram = ones(1,n)*prod(size(A))/n.
Cú pháp thứ hai dùng cho ảnh
index, hàm
histeq
thực hiện cân bằng trên ma trận màu của ảnh.
Ví dụ 12-6. Dùng hàm histeq để phối hợp histogram cho ảnh:
Ví dụ dưới đây cho thấy với các ảnh có nhiều phần tối (hình 12.9a và b), quá trình cân bằng
histogram không mang lại kết quả rõ rệt (hình 12.9c và d) nhưng nếu dùng quá trình phối hợp
histogram sao cho histogram của ảnh mới có dạng bimodal Gaussian thì hiệu quả sẽ tốt hơn
(hình 12.9e và f). Dạng histogram mong muốn được vẽ ở hình 12.9g.
imshow(f)
%
Ảnh gốc
figure, imhist(f)
% và histogram tương ứng
f1
=
histeq(f,256)
figure, imshow(f1)
% Ảnh sau khi cân bằng histogram
figure, imhist(f1)
% và histogram tương ứng
%% Thiết lập dạng histogram mong muốn (bimodal Gaussian)