You are here
Home > Lập Trình > Tự Học Matlab > Matlab Nâng Cao > Xử Lý Ảnh Matlab > 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

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

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!

0 0 bỏ phiếu
Đánh giá bài viết

Thủ Thuật Windows

Nếu như trong quá trình bạn tải file Active về mà bị thông báo là "tệp chứa virus" và bị xóa thì hãy làm theo các bước sau trước khi tải về nhé:

Bước 1: Tắt Windows Defender (Win 10), bạn hãy làm theo các bước này để tắt Defender tạm thời nhé, sau khi Active xong, bạn có thể bật lại:
1. Mở ứng dụng Settings.
2. Trên cửa sổ Settings, bạn tìm và click chọn Update & security.
3. Tiếp theo click chọn Windows Defender.
4. Chuyển trạng thái tùy chọn Real-time protection sang OFF.

Bước 2: Ngoài ra, Nếu trong quá trình tải về mà bạn dùng trình duyệt Chrome hay Cốc Cốc thì sau khi file tải xong không được bấm "Hủy" mà bạn nên bấm tổ hợp phím “Ctrl + J” để vào phần quản trị download, tìm đến file mà bạn tải rồi click vào ô “Khôi phục tệp…” nhé.

Có một số trường hợp file Active tải về mặc định bị xóa, nếu gặp trường hợp này bạn cần chắc chắn rằng Windows Defender hay phần mềm diệt virus trên máy đã được tắt. Sau đó bạn bấm “Ctrl +J“, tại link tải active mà bạn vừa tải về đã bị xóa, bạn hãy click vào đó để trình duyệt tải lại một lần nữa và lần này là sẽ thành công.

BQT: VuTienBlog

Subscribe
Thông báo
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả các ý kiến
Top
11
0
Bác có thắc mắc? Nhấn vào đây để bình luận!x
()
x