MATLAB ỨNG DỤNG TRONG VIỄN THÔNG - Trang 203

Nâng cao chất lượng ảnh

182

0

( )

( )

r

r

s T r

p w dw

=

=

(12.5)

Khi đó, có thể chứng minh rằng phân bố xác suất của ảnh mới sẽ là phân bố đều trên [0,1]:

1 0

1

( )

0

nôi khaùc

s

s

p s

≤ ≤

= ⎨

(12.6)

Như vậy, phép biến dổi này làm cho các giá trị mức xám của ảnh trở nên có xác suất xuất hiện
phân bố đều trên toàn khoảng [0,1], nghĩa là dải động của ảnh sẽ lớn hơn và độ tương phản
cao hơn. Quá trình biến đổi này gọi là quá trình cân bằng ảnh. Khi làm việc với các giá trị
mức xám rời rạc như trong các ảnh số thì hàm mật độ xác suất sẽ trở thành histogram của ảnh
và quá trình biến đổi nói trên được gọi là quá trình cân bằng histogram. Gọi ( )

r

j

p r

với j = 1,

2, ..., L là các giá trị histogram chuẩn hoá của ảnh thì quá trình cân bằng histogram được biểu
diễn bởi phương trình sau:

1

1

( )

( )

k

k

j

k

k

r

j

j

j

n

s

T r

p r

n

=

=

=

=

=

(12.7)

trong đó k = 1, 2, ..., L và

k

s

là các giá trị mức xám của ảnh.

Quá trình cân bằng histogram được thực hiện bởi hàm histeq với các cú pháp như sau:

>> g = histeq(f,nlev)

Trong đó,

nlev

xác định số giá trị mức xám rời rạc trong ảnh mới. Nếu

nlev

= L thì hàm

histeq thực hiện quá trình cân bằng T(

k

r

) một cách trực tiếp. Nếu

nlev

< L thì hàm này tìm

cách phân bố các mức xám để tạo một histogram phẳng. Giá trị mặc định của

nlev

là 64.

Thông thường ta chọn

nlev

bằng số mức xám tối đa của ảnh.

Ví dụ 12-5. Dùng hàm histeq để cân bằng histogram cho ảnh:
Ví dụ sau đây minh hoạ cách sử dụng hàm histeq để cân bằng histogram cho một ảnh gray
scale được biểu diễn bởi ma trận f. Các hình 12.7a và 12.7b là ảnh gốc cùng với istogram của
nó, hình 12.7c và d là ảnh và histogram sau khi cân bằng. Chất lượng ảnh được cải thiện rõ
rệt.

>> imshow(f)

>> figure, imhist(f)

>> ylim('auto')

>> g = histeq(f, 256);

>> figure, imshow(g)

>> figure, imhist(g)

>> ylim('auto')

Hàm truyền đạt của quá trình cân bằng chính là hàm xác suất tích luỹ của các mức xám của
ảnh. Bạn đọc có thể vẽ lại ảnh này bằng cách dùng các lệnh dưới đây:

>> hnorm = imhist(f)./numel(f);

% Histogram chuẩn hoá

>> cdf = cumsum(hnorm);

% Hàm truyền đạt (tích luỹ)

>> x = linspace(0, 1, 256);

>> plot(x, cdf)

% Vẽ cdf theo x.

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.