You are here
Home > Lập Trình > Tự Học Matlab > Matlab Nâng Cao > Xử Lý Ảnh Matlab > Xử Lý Ảnh Matlab – Thay Đổi Ảnh Màu Trong Matlab

Xử Lý Ảnh Matlab – Thay Đổi Ảnh Màu Trong Matlab

thay doi anh mau trong matlab

Biến đổi ảnh màu thành ảnh đen trắng, đỏ, xanh,.. trong Matlab

Trong bài viết hôm nay tôi và bạn cùng nhau học cách biến đổi ảnh một hình ảnh màu thành 3 loại ảnh đó là Red, Green, Blue cũng như học cách lưu hình ảnh lại thành hình ảnh mới. Bạn nên xem lại lại bài cách đọc hình ảnh trước nếu bạn quên hoặc chưa xem. Vì trong bài viết này sẽ có một phần áp dụng trong bài viết đó.

xu ly anh matlab thay doi anh mau trong matlab
xu ly anh matlab thay doi anh mau trong matlab

Đầu tiên chúng ta cùng học một vài câu lệnh trong Matlab hỗ trợ việc xử lý hình ảnh (Image). Các câu lện nào mà tôi và bạn đã học ở các bài trước rồi thì tôi xin được phép không nhắc lại để tránh mất thời gian của bạn.

1. Tách ảnh màu thành 3 loại ảnh (kênh)

%Đọc File
[tenFileAnh, duongDanAnh] = uigetfile({'*.*'});
Image      = imread(fullfile(duongDanAnh, tenFileAnh));

%Lấy Kênh Màu
imageRed    = Image(:,:,1);
imageGreen  = Image(:,:,2);
imageBlue   = Image(:,:,3);

%Kết Qủa Image
resultRed   = cat(3,imageRed,   imageGreen*0, imageBlue*0);
resultGreen = cat(3,imageRed*0, imageGreen,   imageBlue*0);
resultBlue  = cat(3,imageRed*0, imageGreen*0, imageBlue);

Trong đó:

  • cat(): Nối 3 kênh lại với nhau. Kênh nào mà nhân với 0 (*0) thì kênh đó sẽ không được hiện thị. Ví dụ cat(3,imageRed, imageGreen*0, imageBlue*0); thì kết quả sẽ được 1 ảnh màu Red (đỏ).
  • resultRed, resultGreen, resultBlue là kết quả của bức ảnh theo 3 kênh R,G,B

2. Tách ảnh màu thành ảnh xám

anhXam = rgb2gray(hinhAnh)

Trong đó: rgb2gray() Biến đổi ảnh màu thành ảnh xám.

3. Lưu hình ảnh

[tenFile, duongDan] = uiputfile({'*.jpg','JPEG Files(*.jpg)';...
                                  '*.bmp','Bitmap Files(*.bmp)';'*.gif','GIF Files(*.gif)';...
                                  '*.tif','TIFF Files(*.tif)';...
                                  '*.*','all image file'},'Luu anh da chon!','anhkq/');
imwrite(hinhAnh, [duongDan,tenFile]);

Trong đó: imwrite() Lệnh này giúp bạn ghi hình ảnh. Có nghĩa là khi bạn sử lý xong bức ảnh (Biến đổi màu, thay đổi kích thước,…) xong rồi thì lệnh này cho phép bạn lưu hình ảnh đó lại thành định dạng nào đó bạn muốn.

4. Bài tập áp dụng

Oke như vậy tôi và bạn đã cùng nhau tìm hiểu một số câu lệnh giúp bạn chuyển đổi một bức ảnh màu thành 3 loại ảnh red, green, blue và ảnh xám. Cũng như hướng dẫn bạn cách lưu ảnh lại theo định dạng bạn muốn.

Bây giờ để bạn hiểu rõ hơn tôi và bạn cùng nhau giải một bài toán dưới đây để hiểu rõ vấn đề chúng ta đã học.

Chú thích: Tôi sẽ hướng dẫn bạn ở mức cơ bản nhất để bạn hiểu bởi vậy tôi sẽ không đi quá nâng cao bạn sẽ không hiểu được.

xu ly anh matlab - bien doi mau sac hinh anh trong matlab
xu ly anh matlab – bien doi mau sac hinh anh trong matlab

Nhiệm vụ chúng ta đó là khi nhấn vào Chon Hinh Anh (pushbutton1) thì hình ảnh đó sẽ được hiện thị vào các axes với các kiểu hình ảnh màu như hình ảnh. Tiếp khi có ảnh rồi ta sẽ tiến hành lưu hình đó lại.

Oke ta tiến hành giải quyết bài toán này. Bạn tiến hành mở file .m của trương trình nên và làm như sau

1. pushbutton1 (String: Chon Hinh Anh)

%Bien toan cuc

global resultRed
%Tao mot dialog box

[tenFileAnh,duongDanAnh] = uigetfile({'*.*'});
if ~isequal(tenFileAnh,0)
   Info = imfinfo(fullfile(duongDanAnh,tenFileAnh));
   if Info.BitDepth == 24
      Image = imread(fullfile(duongDanAnh, tenFileAnh));

      axes(handles.axes5)
      imshow(Image)

      imageRed = Image(:,:,1);
      imageGreen = Image(:,:,2);
      imageBlue = Image(:,:,3);

      % Anh Do
      resultRed = cat(3,imageRed, imageGreen*0, imageBlue*0);
      axes(handles.axes1)
      imshow(resultRed)

      % Anh Green
      resultGreen = cat(3,imageRed*0, imageGreen, imageBlue*0);
      axes(handles.axes2)
      imshow(resultGreen)

      % Anh Blue
      resultBlue = cat(3,imageRed*0, imageGreen*0, imageBlue);
      axes(handles.axes3)
      imshow(resultBlue)

      % Anh Xam'
      anhXam = rgb2gray(Image)
      axes(handles.axes6)
      imshow(anhXam)
   else
      msgbox('Hay chon anh RGB');
      return
   end
else
   return
end

Trong đó:

  • isequal kiểm tra xem có phải là hình ảnh không
  • 24 là loại ảnh màu
  • imshow hiện thị ảnh

Để biết ảnh màu hay không thì bạn nhìn vào đây

bit depth image
bit depth image

2. pushbutton2 (String: Luu Hinh Anh)

Gỉa sử rằng bạn muốn lưu ảnh màu Red (Đỏ) thì tại pushbutton1 bạn cần phải khai báo một biến toàn cục để lưu hình ảnh đỏ. Rồi trong pushbutton2 ta mới lấy ảnh đó để lưu lại được.

global resultRed

[filename,pathname]=uiputfile({'*.jpg','JPEG Files(*.jpg)';...
                              '*.bmp','Bitmap Files(*.bmp)';'*.gif','GIF Files(*.gif)';...
                              '*.tif','TIFF Files(*.tif)';...
                              '*.*','all image file'},'Luu anh da chon!','anhkq/');
imwrite(resultRed,[pathname,filename]);

Oke bạn thử chạy trương trình nên xem thế nào.

thay doi mau hinh anh trong matlab
thay doi mau hinh anh trong matlab
rgb2gray matlab
rgb2gray matlab

Như vậy là chúng ta đã hoàn thành xong bài tập trên rồi đó. Như đã nói ở đầu thì tôi sẽ không giải thích lại các đoạn code mà ta đã học đỡ mất nhiều thời gian của bạn. Nếu bạn không hiểu đoạn nào xin vui lòng xem lại các bài viết trước của tôi cũng như bình luận phía dưới để tôi giải thích cho bạn.

Dưới đây là link tải bài tập tương tự như bài tập trên nhưng sẽ có một chút nâng cao hơn. Nếu bạn cần thì bạn có thể tải về và dùng phần mền Matlab chạy trương trình nên bằng cách

guide MODUL_1

Bạn có thể xem code trong viết gì. Thực ra nó cũng không khó lắm đâu nếu bạn chịu khó xem.

Tổng Kết

Trên đây tôi và bạn đã học xong cách chỉnh sửa biến đổi bức ảnh thành ảnh màu khác. Hi vọng rằng bạn sẽ thành thạo các câu lệnh trê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
1 Comment
Phản hồi nội tuyến
Xem tất cả các ý kiến
Minh Dat
Minh Dat
6 year ago

Chào a! Em đang làm đồ án bên xử lý ảnh. Anh cho e hỏi có hàm lệnh nào mình có thể chuyển tất cả ảnh màu trong folder thành ảnh xám không ạ. Em xin cảm ơn!

Top
11
0
Bác có thắc mắc? Nhấn vào đây để bình luận!x
()
x