Networks Business Online Việt Nam & International VH2

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

Đăng ngày 26 October, 2022 bởi admin

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
Đầu tiên tất cả chúng ta cùng học một vài câu lệnh trong Matlab tương hỗ việc giải quyết và xử lý hình ảnh ( Image ). Các câu lện nào mà tôi và bạn đã học ở những 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 hạn 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, đổi khác kích cỡ, … ) xong rồi thì lệnh này được 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 khám phá một số ít 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õ yếu tố tất cả 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

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 triển khai xử lý bài toán này. Bạn thực thi 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

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
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ư như bài tập trên nhưng sẽ có một chút ít nâng cao hơn. Nếu bạn cần thì bạn hoàn toà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 hoàn toà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 đổi khác bức ảnh thành ảnh màu khác. Hi vọng rằng bạn sẽ thành thạo những câu lệnh trên. Chúc bạn thành công xuất sắc !

0
0
bỏ phiếu

Đánh giá bài viết

Source: https://vh2.com.vn
Category : Trái Đất