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

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

179

sẽ lấy các giá trị mức xám nằm ở mức 1% và 99% trong vùng biến thiên mức xám của ảnh.
Tuy nhiên, ta cũng có thể thay đổi mở rộng hoặc thu hẹp các giới hạn này bằng cách cung cấp
thêm thông số tol cho hàm stretchlim. Đó là một vector gồm hai phần tử thuộc [0,1] cho biết
ta sẽ chọn các giới hạn ở mức nào trong vùng biến thiên mức xám (mặc định là [0.01 0.99]).

>> [low,high] = stretchlim(I,tol)

Ngoài phương pháp sử dụng hàm imadjust nêu trên, người sử dụng có thể tự định nghĩa các
toán tử biến đổi mức xám và áp dụng vào các ảnh cụ thể. Dưới đây chúng tôi trình bày hai
phép biến đổi mức xám không dùng hàm imadjust, đó là phép biến đổi logarithm và phép mở
rộng độ tương phản.
Phép biến đổi logarithm được thực hiện dựa trên biểu thức sau:

>> g = c*log(1 + double(f))

trong đó

c

là một hằng số. Dạng biến đổi này gần giống với biến đổi trong hình 12.1a với các

giá trị giới hạn trên cả hai trục đều là 0 và 1. Tuy nhiên, nếu ở hình 12.1a đồ thị thay đổi tuỳ
theo gamma thì ở đây hàm log là cố định. Một ứng dụng rất quan trọng của biến đổi logarithm
là nén dải động. Ví dụ, trong chương trước ta thấy rằng các giá trị của phổ Fourier của ảnh
thường thay đổi rất rộng (khoảng [0

6

10 ]). Bằng phép biến đổi log, dải động

6

10 của phổ này

sẽ giảm xuống còn khoảng 14, giúp cho việc quan sát dễ dàng hơn. Sau khi thực hiện biến
đổi, ta chuyển kết quả về kiểu dữ liệu tương ứng với ảnh gốc, thí dụ với ảnh

uint8

, ta có thể

dùng dòng lệnh sau:

>> gs = im2uint8(mat2gray(g));

Phép mở rộng độ tương phản được định nghĩa bằng biểu thức sau và được minh hoạ trên hình
12.4a:

1

( )

1 ( / )

E

s T r

m r

=

=

+

(12.2)

Trong đó r là giá trị mức xám ban đầu, s là giá trị mức xám sau khi biến đổi, m là mức
ngưỡng và E là một hằng số quy định độ dốc của hàm. Hàm này nén các giá trị mức xám dưới
m vào thành một dải hẹp trong vùng tối và nén các giá trị trên m thành một dải hẹp trong vùng
sáng, do đó làm tăng độ tương phản của ảnh.

Hình 12.4.

Biến đổi này được thực hiện bằng dòng lệnh MATLAB sau:

>> g = 1./(1 + (m./(double(f) + eps)).^E)

Hằng số

eps

được thêm vào để tránh trường hợp

f

có phần tử bằng 0.

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.