MATLAB中将彩色的图像转化为灰度图像

MyYuanLaiPic = imread('e:/image/matlab/darkMouse.jpg');%读取RGB格式的图像  
  1. MyFirstGrayPic = rgb2gray(MyYuanLaiPic);%用已有的函数进行RGB到灰度图像的转换  
  2.   
  3. [rows , cols , colors] = size(MyYuanLaiPic);%获得原来图像的矩阵的参数  
  4. MidGrayPic = zeros(rows , cols);%用获得的参数建立一个全零的矩阵,这个矩阵用来存储用下面的方法产生的灰度图像  
  5. MidGrayPic = uint8(MidGrayPic);%将建立的全零矩阵转化为uint8格式,由于用上面的语句建立以后图像是double型的  
  6.   
  7. for i = 1:rows  
  8.     for j = 1:cols  
  9.         sum = 0;  
  10.         for k = 1:colors  
  11.             sum = sum + MyYuanLaiPic(i , j , k) / 3;%进行转化的关键公式,sum每次都由于后面的数字而不能超过255  
  12.         end  
  13.         MidGrayPic(i , j) = sum;  
  14.     end  
  15. end  
  16. imwrite(MidGrayPic , 'E:/image/matlab/DarkMouseGray.png' , 'png');  
  17.   
  18. %显示原来的RGB图像  
  19. figure(1);  
  20. imshow(MyYuanLaiPic);  
  21.   
  22. %显示通过系统函数运算过的灰度图像  
  23. figure(2);  
  24. imshow(MyFirstGrayPic);  
  25.   
  26. %显示转化以后的灰度图像  
  27. figure(3);  
  28. imshow(MidGrayPic);