matlab图像灰度处理(matlab转换为灰度图像)

admin 496 0

各位老铁们,大家好,今天由我来为大家分享matlab图像灰度处理,以及matlab转换为灰度图像的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

一、matlab怎么将灰度图像转为rgb图像

一般彩色图像至少需要三个维度的信息,比如RGB、HSV、YIQ等等。每种颜色相当于一个三维向量,不同的表示法则相当于同一个向量在不同的坐标轴下(即不同的基下)的表示。而将其变为灰度后,只剩下一个维度,相当于将三维向量投影为一维标量一样,是不可能回复为原来的向量的。要想恢复,就必须储存另外两个维度的信息,合在一起还是三维向量,这还不如直接保存原来的彩色图像数据。如果你一定要将其分解为灰度基和另两个基下的表示,可以用YIQ表示,他的Y分量就和灰度数据等价,美国电视信号NTSC就是YIQ表示的,因此可以和黑白电视兼容(黑白电视只能接受Y信号,得到灰度图像)。

用命令rgb2ntsc和ntsc2rgb可以将数据在RGB和YIQ之间互换。下面是例子

RGB= imread('peppers.png');%RGB图像

GRAY=rgb2gray(RGB);%灰度图像,它和YIQ中的Y等价,只不过灰度图像的值是0~255的整数,而Y是0~1的实数,即GRAY=uint8(255*YIQ(:,:,1))

RGB_restore=ntsc2rgb(YIQ);%从YIQ表示恢复的RGB图像

imshow(RGB);title('原图像RGB')

imshow(GRAY);title('灰度图GRAY')

imshow(YIQ(:,:,1));title({'转换为YIQ后的Y分量','(和灰度图等价)'})

imshow(RGB_restore);title({'从YIQ表示恢复的RGB图像','(和原图像一致)'})

当然,这种分解是不唯一的,只要保证三个基互不相关即可。因此我们可以自己定义分解方法。比如,我们要将RGB表示转换为RGg表示,也就是用灰度分量g取代蓝色分量B,红色分量R和绿色分量G不变。我们可以从RGg计算出蓝色分量B,因为灰度g=p*R+q*G+t*B(其中p=0.2989,q=0.5870,t=0.1140),于是B=(g-p*R-q*G)/t。于是我们只要保留R和G两个颜色分量,再加上灰度图g,就可以回复原来的RGB图像。下面是例子

RGB= imread('peppers.png');%RGB图像

R=double(RGB(:,:,1));%红色分量R

G=double(RGB(:,:,2));%绿色分量G,于是RGg就是一种我们自己定义的颜色表示方法了

B=(double(g)-p*R-q*G)/t;%通过RGg计算得到的蓝色分量B,他和原图像中的蓝色分量是一致的

imshow(RGB);title('原图像RGB')

imshow(g);title('灰度图g')

imshow(uint8(cat(3,R,G,B)));title({'从RGg表示恢复的RGB图像','(和原图像一致)'})

二、怎样用matlab对一幅图像进行灰度直方图规定化处理

H(I(i,j)+1)=H(I(i,j)+1)+1;%求各灰度级的像素数

s=zeros(1,256);t=zeros(1,256);

s(i)=H(i)/(m*n);%求各灰度级的频率

% t(i)=t(i)+s(j);%求累计频率的和

J=imread('1.jpg'); h=rgb2gray(J); g=imhist(h);

matchhistc= cumsum(matchhist);

M= double(intmax(class(f)))+ 1;

tk= zeros(1,M);%映射关系hist-->tk

%if strcmp(mapl,'SML')以下为单映射规则(‘SML’)

for k= 1:M%删除histc(k)=0的单元

mappingL= zeros(size(matchhist));

for l= linit:N%规定直方图从上一次最小处计算,节省运算时间

if matchhistc(l)== matchhistc(l- 1);%去掉相等为0的单元

mappingL(l)= abs(histc(k)- matchhistc(l));

mappingL(N)= abs(histc(k)- matchhistc(N));

indtemp1= find(mappingL== 0);

mappingL(setdiff(indtemp1,indtemp2))= inf;

[minmap,tk(k)]= min(mappingL(linit:N));

histm(tk(k))= histm(tk(k))+ H(k);

title('直方图规定化后图像')

title(['规定化后直方图'])

subplot(3,2,5),a=rgb2gray(f);g=histeq(a,matchhist);imshow(g);title('图像的规定化');

subplot(3,2,6),a=rgb2gray(f);g=histeq(a,matchhist);h=imhist(g);plot(h),title('图像的规定化直方图');

三、matlab 如何计算一幅图像中某一灰度值的像素个数

1、第一步,打开需要处理的图像,然后编写以下代码,见下图红框标注处,转到下面的步骤。

2、第二步,执行完上面的操作之后,可以看到图像均衡的图片,见下图,转到下面的步骤。

3、第三步,执行完上面的操作之后,画出平衡图片的直方图,在平衡前后对图片进行比较,见下图。这样,就解决了这个问题了。

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

1、打开图片:在主界面上输入命令将图像转换为数据;Data= imread('folder icon.bmp')。

2、查看数据:双击工作区中的数据,我们可以看到图像数据的具体信息。

3、验证图像结果:输入命令,我们可以看到数据数据是图片所代表的;Imshow(数据)。

4、灰度说明:我们可以通过输入指令获得灰度后的矩阵; GDATA= rgb2gray(数据)。

5、查看灰色矩阵:双击,右边的工作区,gdata,可以看到数据的具体信息。

6、显示灰度图像:如下图所示,可以看到图片后的灰度。

五、matlab 如何将彩图转成灰度图

1、打开图片:在主界面上输入命令将图像转换为数据;Data= imread('folder icon.bmp')。

2、查看数据:双击工作区中的数据,我们可以看到图像数据的具体信息。

3、验证图像结果:输入命令,我们可以看到数据数据是图片所代表的;Imshow(数据)。

4、灰度说明:我们可以通过输入指令获得灰度后的矩阵;GDATA= rgb2gray(数据)。

5、查看灰色矩阵:双击,右边的工作区,gdata,可以看到数据的具体信息。

6、显示灰度图像:如下图所示,可以看到图片后的灰度。

六、采用matlab将图像灰度化的方法

对于初学图像处理的小伙伴们,对于图像的灰度化很重要。所谓灰度化就是将一个彩色的图片转换成一个黑白的图像,便于处理。

打开matlab程序,如图所示的界面;

在matlab祝主界面输入一下指令清屏;

将自己准备的图片放在matlab的工作目录中,直接将图片复制到工作目录中,如图所示;

对于详细的复制方法,可参见经验:matlab如何打开一个图片转换为矩阵

在主界面输入一下指令,将图片转换成数据;

data=imread('文件夹图标.bmp');

双击工作空间中的,data我们可以看到图片数据的具体信息;

输入一下指令,我们可以看到,data数据就是表示的图片;

我们输入一下指令,就可以获得一个灰度后的矩阵;

双击,右侧的工作空间,gdata,就可以看数据的具体信息了;

如图下面的指令,可以看到灰度话以后图片;

七、怎样用matlab将一幅图像转化为灰度图像

在matlab软件中利用灰度命令即可将一幅图像转化为灰度图像,具体操作请参照以下步骤,演示软件为matlab2012b。

1、首先在电脑上打开matlab程序,然后输入指令【clear;clc;】,进行清屏。

2、然后将准备好的图片复制到matlab的工作目录中。

3、在主界面输入指令【data=imread('文件夹图标.bmp');】,将图片转换成数据。

4、然后双击工作空间中的data,就可以看到图片数据的具体信息。

5、输入指令【imshow(data);】,可以看到,data数据表示的图片。

6、输入指令【gdata=rgb2gray(data);】,就可以获得一个灰度后的矩阵。

7、双击右侧的工作空间的gdata,就可以看数据的具体信息了。

8、然后输入指令【imshow(gdata);】,就可以看到灰度化后的图片。

关于matlab图像灰度处理,matlab转换为灰度图像的介绍到此结束,希望对大家有所帮助。