如何用MATLAB把bmp格式变成灰度图像

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用MATLAB把bmp格式变成灰度图像相关的知识,希望对你有一定的参考价值。

楼上回答正确,其实还可用更为简单的方法,此为图像处理中的基础,举简例说明。\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 参考技术A 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);本回答被提问者和网友采纳 参考技术B 楼上回答正确,其实还可用更为简单的方法,此为图像处理中的基础,举简例说明。
假设你需将名为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
参考技术C 可将你要转换的图像读入到一个矩阵中,然后采用mat2gray函数将此数据矩阵转换为灰度图像。
如:
BMP=imread('图像名.bmp');
K=filter2(fspecial('Sobel'),BMP);
I=mat2gray(K);
imshow(BMP);
figure,imshow(I);
参考技术D 么叫灰度图?任何颜色都有红、绿、蓝三原色组成,假如原来某点的颜色为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

matlab图片灰度模式转rgb模式,不需要还原彩色~

不需要还原彩色,只需要把double形式的转换为[:,:,3]的uint8形式,要保持rgb模式与灰度图一致~

参考技术A 直接把灰度值赋给RGB三个通道就可以了
g=imread('D:\1.bmp');%1.bmp是灰度图
f=repmat(g,[1,1,3]);%f就是你所要的
imshow(f)
参考技术B 楼上正解追问

f得到的是double类型的,怎么变成uint8?

追答

强制类型转换f = (uint8)f;就可以把其他类型数据转换为uint8

追问

强制类型转换后得到的是一片黑~~

追答

imshow(f,[]) 用这一条命令试试

追问

虽然还是不对,但还是要谢谢你~~

本回答被提问者采纳

以上是关于如何用MATLAB把bmp格式变成灰度图像的主要内容,如果未能解决你的问题,请参考以下文章

matlab中怎么把图像变成灰度图

matlab各种灰度变换怎么实现以及观察

如何把MATLAB中灰度图像转化为黑白图像

matlab怎么读取一幅图像,并转换为灰度图像

matlab怎么读取一幅图像,并转换为灰度图像

matlab中如何求一个图像的灰度级