Xử Lý Ảnh Matlab – Thay Đổi Ảnh Màu 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!

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