楼上回答正确,其实还可用更为简单的方法,此为图像处理中的基础,举简例说明。\x0d\x0a假设你需将名为face1.bmp的彩色图转换为face2.bmp的灰度图,代码如下:\x0d\x0aimageName=strcat('face1.bmp');%获取图像名称\x0d\x0aI=imread(imageName);%读取彩色图像\x0d\x0aJ=rgb2gray(I);%转换为灰度图\x0d\x0afigure(1);%窗口显示灰度图\x0d\x0aimshow(J);\x0d\x0afname=strcat('face2.bmp');\x0d\x0aimwrite(J,fname);%保存为BMP格式的灰度图face2
BMP的图像是彩色的,也就是说有RGB三个波段,读出的图像数据是一个M*N*3的数组,如果想把它变成灰度图像的,只要分离出任意RGB中的一个分量即可,例如你的图像是1.BMP, x=imread('1.BMP');imshow(x); y=x(:,:,1); imshow(y);就可以了,不知道你是想怎样把图像变成灰度的,如果三个分量都想要的话,做个计算也可以的,例如把RGB做个平均;y=1/3*x(:,:,1)+1/3*x(:,:,2)+1/3*x(:,:,3);imshow(y);
楼上回答正确,其实还可用更为简单的方法,此为图像处理中的基础,举简例说明。
假设你需将名为face1.bmp的彩色图转换为face2.bmp的灰度图,代码如下:
imageName=strcat('face1.bmp');%获取图像名称
I= imread(imageName); %读取彩色图像
J=rgb2gray(I); %转换为灰度图
figure(1); %窗口显示灰度图
imshow(J);
fname=strcat('face2.bmp');
imwrite(J,fname); %保存为BMP格式的灰度图face2
可将你要转换的图像读入到一个矩阵中,然后采用mat2gray函数将此数据矩阵转换为灰度图像。
如:
BMP=imread('图像名.bmp');
K=filter2(fspecial('Sobel'),BMP);
I=mat2gray(K);
imshow(BMP);
figure,imshow(I);
么叫灰度图?任何颜色都有红、绿、蓝三原色组成,假如原来某点的颜色为RGB(R,G,B),那么,我们可以通过下面几种方法,将其转换为灰度:
1.浮点算法:Gray=R*0.3+G*0.59+B*0.11
2.整数方法:Gray=(R*30+G*59+B*11)/100
3.移位方法:Gray =(R*28+G*151+B*77)>>8;
4.平均值法:Gray=(R+G+B)/3;
5.仅取绿色:Gray=G