Xử Lý Ảnh Matlab – Biến Đổi Ảnh Màu Thành Ảnh Âm Bản

Xử Lý Ảnh Matlab – Biến Đổi Ảnh Màu Thành Ảnh Âm Bản

Ở bài viết trước tôi và bạn đã cùng nhau học cách biến đổi một bức ảnh màu thành 3 ảnh theo 3 kênh là Red, Green, Blue cũng như học cách iến đổi sang ảnh xám. Nếu bạn chưa xem bài viết đó thì vui lòng bạn hãy xem lại  “Biến đổi ảnh màu” trước khi học bài này.

xu ly anh matlab bien doi anh mau thanh anh am ban
xu ly anh matlab bien doi anh mau thanh anh am ban

| Ảnh Âm Bản Là Gì?

Thì chắc bạn cũng nhìn loại ảnh kiểu như này rất nhiều rồi đúng không?

anh am ban
anh am ban

Ảnh âm bản là ảnh ngược lại ảnh bình thường. Ví dụ nếu bạn từng chụp ảnh ngày xưa thì thường người ta chụp bằng phim. Nó không giống bây giờ chụp và lưu luôn vào thẻ nhớ. Người ta có 1 cái cuộn phim lưu trữ ảnh đã chụp rồi. Khi bạn nhìn vào cuộn phim đó chính là ảnh âm bản. Từ ảnh đó người ta sẽ rửa và cho ra 1 cái ảnh màu bình thường.

Trong phần mền Matlab thì có một hàm giúp bạn biến đổi 1 bức ảnh sang ảnh âm bản đó là hàm:

resultImage = imcomplement(hinhAnh)

Trong đó: imcomplement() Là hàm giúp bạn chuyển đổi ảnh sang ảnh màu có 1 tham số truyền vào đó là bức ảnh bạn muốn chuyển. Khi chuyển xong nó sẽ trả về cho bạn bức ảnh được lưu vào biến resultImage

Bài tập áp dụng

Dưới đây tôi và bạn cùng làm một bài tập nhỏ xử lý bức ảnh màu sang ảnh âm bản.

bien doi anh mau thanh anh am ban
bien doi anh mau thanh anh am ban

1. pushbutton1 (Chon Hinh Anh)

global hinhAnh;
[tenFile, duongDanFile] = uigetfile({'*.jpg;*.JPG','JPG Files (*.jpg, *JPG)';
                                   '*.tif;*.TIF','TIF Files (*.tif, *.TIF)';...
                                   '*.gif;*.GIF','GIF Files (*.gif, *.GIF)';...
                                   '*.png;*.PNG','PNG Files (*.png, *.PNG)';...
                                   '*.bmp;*.BMP','BMP Files (*.bmp, *.BMP)';...
                                   '*.*','Tat Ca Files(*.*)'}, 'VuTenIT Chon Hinh Anh');
if ~strcmp(tenFile,'')
    fullname = strcat(duongDanFile,tenFile);
    hinhAnh  = imread(fullname);
    axes(handles.axes1);
    imshow(hinhAnh);
end

Trong đó:

  • global hinhAnh; Tạo biến toàn cục lưu trữ hình ảnh
  • uigetfile Mở một Dialog Box
  • strcat Nối 2 chuỗi
  • imread Đọc hình ảnh
  • imshow Hiện thị ảnh đó nên axes1

2. pushbutton2 (Bien Doi Anh)

global hinhAnh;
anhAmBan = imcomplement(hinhAnh);
axes(handles.axes2);
imshow(anhAmBan);

Trong đó: imcomplement() Biến đổi ảnh màu sang ảnh âm bản

Oke giờ bạn thử thay trương trình nên xem được không?

xu ly anh matlab - bien doi anh mau thanh anh am ban
xu ly anh matlab – bien doi anh mau thanh anh am ban

| Cân bằng mức xám

Cân bằng mức xám thì có tác dụng làm tăng độ tương phản của ảnh xám nên. Có nghĩa là các chỗ nào tối thì sáng nên sẽ làm cho độ tương phản rõ hơn để người dùng đễ dàng nhìn thấy.

Câu lệnh:

anhXam        = rgb2gray(hinhAnh);
canBangMucXam = histeq(anhXam, 256);

Trong đó:

  • rgb2gray : Biến đổi ảnh màu thành ảnh xám
  • histeq : Cân bằng mức xám. Có 2 tham số truyền vào đó là ảnh xám và giá trị bạn muốn cân bằng.

Bài tập áp dụng

Tôi và bạn cùng nhau làm bài tập dưới đây để hiểu rõ hơn 2 câu lệnh trên cũng như là để bạn biết cách sử lý vấn đề

xu ly anh matlab - can bang muc xam
xu ly anh matlab – can bang muc xam

1. pushbutton1 (Chon Anh)

global image
[FileName,PathName] = uigetfile({'*.png;*.PNG','PNG Files (*.png, *.PNG)';
                                 '*.jpg;*.JPG','JPG Files (*.jpg, *JPG)';...
                                 '*.tif;*.TIF','TIF Files (*.tif, *.TIF)';...
                                 '*.gif;*.GIF','GIF Files (*.gif, *.GIF)';...
                                 '*.bmp;*.BMP','BMP Files (*.bmp, *.BMP)';...
                                 '*.*','All Files(*.*)'},'Chon hinh anh de xu ly');
if ~strcmp(FileName,0)
   fullname = strcat(PathName, FileName) ;
   image    = imread(fullname);
   axes(handles.axes1);
   imshow(image);
end

2. pushbutton2 (Xy Ly Anh)

global image
[~ , ~, p] = size(image);
if p ==3
   image         = rgb2gray(image);
   canBangMucXam = histeq(image, 256);
   axes(handles.axes2);
   imshow(image);
   axes(handles.axes3);
   imshow(canBangMucXam);
else
   % Can bang anh xam'
   canBangMucXam = histeq(image, nlev);
   axes(handles.axes2);
   imshow(image);
   axes(handles.axes3);
   imshow(canBangMucXam);
end

Trong đó:

  • size Là kiểm tra ảnh. Nếu p = 3 thì là ảnh RGB

Oke bạn sẽ được kết quả như này

histeq matlab
histeq matlab

Tổng Kết

Như vây tôi và bạn đã cùng nhau học cách biến đổi một bức ảnh màu thành ảnh âm bản cũng như học cách cân bằng ảnh xám thành công! Hi vọng bài viết này sẽ giúp ích cho bạn! Chúc bạn thành công!

Thủ Thuật Windows 7, Windows 8.1, Windows 10

Tác Giả: VuTienIT

Website: Thủ Thuật Windows

Mô Tả:Tôi ưa thích khám phá tìm hiểu các vấn đề về liên quan tới điện thoại, máy tính. Và tôi cũng ưa thích lập trình Website. Bạn có thể tìm thấy tôi thông qua Facebook cũng như xem các Video tôi hướng dẫn về Thủ Thuật Computer. Bạn có thắc mắc gì về bài viết xin để lại bình luận phía dưới Tôi xin được giải đáp cho bạn!

Lưu ý khi bạn bình luận tại VuTienIT.Com

Bạn hãy sử dụng địa chỉ Email thật và tên thật để VuTienIT có thể xưng hô và trả lời bình luận qua Email.
Bạn hãy bình luận bằng Tiếng Việt và có dấu.
Nếu bạn muốn tìm kiếm phần mền nào đó các bạn có thể nhập tên phần mền vào ô tìm kiếm bên trên đầu.
Nếu Link tải File bị hỏng bạn hãy bình luận bên dưới VuTienIT sẽ cập nhật lại Link tải cho bạn.
Nếu bạn thấy thích bài viết này thì bạn hãy Share bài viết để VuTienIT có nhiều bài viết hay hơn dành cho bạn!
VuTienIT chúc bạn gặp nhiều may mắn thành công trong cuộc sống.
 

Hãy trở thành người đầu tiên bình luận!

Thông báo
avatar
250

wpDiscuz