VI – Phân tích và làm giàu ản h( nâng cao chất lượng ản h)
a- Điều chỉnh các giá trị cường độ đến một khoảng xác định
- Ta có thể điều chỉnh các giá trị cường độ trong một ảnh bằng cách sử dụng hàm imadjust khi ta chỉ ra khoảng của các giá trị cường độ trong ảnh ra .
- Chẳng hạn , mã sau đây sẽ tăng độ tương phản trong một ảnh cường độ có độ tương phản thấp bằng cách ánh xạ lại các giá trị dữ liệu để điền đầy toàn bộ khoảng giá trị cường độ [0,255] I = imread('pout.tif'); J = imadjust(I); imshow(J) figure, imhist(J,64) - Hình sau hiển thị ảnh đã
được điều chỉnh và biểu
Chỉ định giới hạn điều chỉnh
- Ta có thể chỉ ra khoảng của các giá trị vào và giá trị ra sử dụng hàm imadjust . Ta chỉ ra những khoảng này trong hai véctơ và truyền đến hàm imadjust như là tham số . Véctơ đầu tiên chỉ ra các giá trị cường độ thấp và cao mà ta muốn ánh xạ . Véctơ thứ hai chỉ ra tỉ lệ qua đó ta muốn ánh xạ chúng
Chú ý : Ta phải chỉ ra các cường độ như là các giá trị giữa 0 và 1 bất kể ảnh vào I thuộc
lớp nào .
- Chẳng hạn , ta có thể giảm độ tương phản của một ảnh bằng cách thu hẹp khoảng dữ liệu . Trong ví dụ dưới đây , áo choàng của người đàn ông có màu đen để lộ một số chi tiết nào . Hàm imadjust ánh xạ khoảng [0,51] trong ảnh vào thuộc lớp uint8 thành ảnh ra [128,255] . Điều này làm sáng đáng kể ảnh ra và cũng mở rộng khoảng động ( dynamic range ) của phần tối trong ảnh gốc , làm cho nó dễ dàng nhìn thấy các chi tiết trên chiếc áo choàng . Chú ý rằng , tuy nhiên bởi vì tất cả các giá trị lớn hơn 51 trong ảnh gốc được ánh xạ thành 255 ( trắng ) trong ảnh ra , ảnh ra xuất hiện như vừa bị rửa .
I = imread('cameraman.tif'); J = imadjust(I,[0 0.2],[0.5 1]); imshow(I)
Thiết lập ngưỡng điều chỉnh tự động
- Để sử dụng hàm imadjust , ta phải thực hiện hai bước điển hình : 1. Quan sát biểu đồ của ảnh để quyết định giá trị cường độ giới hạn
2. Chỉ ra những ngưỡng này dưới dạng một phân số trong khoảng 0 đến 1 để ta có thể truyền chúng vào hàm imadjust trong véc tơ [low_in high_in]
- Một cách thuận tiện hơn để chỉ ra các giá trị ngưỡng là sử dụng hàm stretchlim . Hàm này tính toán biểu đồ của ảnh và tính các giá trị ngưỡng điều chỉnh một cách tự động . Hàm trả về các giá trị dưới dạng phân số trong một véctơ mà ta có thể truyền theo dạng [low_in high_in] như là tham số tới hàm imadjust . Chẳng hạn :
I = imread('rice.png');
J = imadjust(I,stretchlim(I),[0 1]);
- Theo mặc định , hàm stretchlim sử dụng các giá trị cường độ đại diện cho đáy 1%(0.01) và đỉnh 1%(0.99) của khoảng như là các ngưỡng giới hạn điều chỉnh . Ta có thể chỉ ra các khoảng giới hạn khác như là tham số cho hàm stretchlim .
- Hàm imadjust ánh xạ low thành bottom , high thành top . Theo mặc định , những giá trị giữa low và high được ánh xạ một cách tuyến tính tới các giá trị giữa bottom và top . Chẳng hạn , giá trị giữa low và high tương ứng với giá trị giữa bottom và top
- Hàm imadjust có thể chấp nhận một tham số phụ chỉ ra tác nhân tương quan Gamma . Phụ thuộc vào giá trị của Gamma , sự ánh xạ giữa các giá trị trong ảnh vào và ra có thể là không tuyến tính . Chẳng hạn , giá trị giữa low và high có thể ánh xạ tới một giá trị lớn hơn hoặc nhỏ hơn giá trị giữa bottom và top . Hình sau minh hoạ mối quan hệ này . Ba đường cong chuyển đổi chỉ ra các giá trị được ánh xạ ra sao khi Gamma nhỏ hơn , bằng và lớn hơn 1 .
- Ví dụ dưới đây minh hoạ tương quan Gamma. Chú ý rằng trong lời gọi hàm imadjust , khoảng dữ liệu của ảnh vào và ra được chỉ định là các ma trận rỗng . Khi ta chỉ định một ma trận rỗng , hàm imadjust sử dụng khoảng giá trị mặc định [0 ,1] . Trong ví dụ này , cả hai khoảng đều rỗng về phía trái , điều này có nghĩa rằng tương quan Gamma được áp đặt mà không có bất kì sự điều chỉnh dữ liệu nào khác .
[X,map] = imread('forest.tif') I = ind2gray(X,map);
J = imadjust(I,[],[],0.5); imshow(I)