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!

Quản Trị Viên
  • Nếu trong bài viết có Link Tải mà bạn tiến hành tải về bị hỏng (Lỗi) bạn có thể Bình luận phía dưới thông báo để Mình sẽ Fix lại Link tải cho bạn trong thời gian sớm nhất.
  • Nếu bạn thắc mắc vấn đề gì trong bài viết mà chưa hiểu hay chưa rõ ràng ở phần nào đó. Bạn hãy bình luận phía dưới Mình và Bạn cùng đưa ra lời giải đáp thỏa đáng nhé!
  • Cám ơn bạn đã GHÉ THĂM VuTienIT.Com. Mình chúc bạn sẽ giải quyết được vấn đề bạn đang gặp phải.

Xem thêm bài viết Subscribe

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

Thông báo
avatar
250
wpDiscuz