matlab怎么将灰度图像转为rgb图像
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab怎么将灰度图像转为rgb图像相关的知识,希望对你有一定的参考价值。
一般彩色图像至少需要三个维度的信息,比如RGB、HSV、YIQ等等。每种颜色相当于一个三维向量,不同的表示法则相当于同一个向量在不同的坐标轴下(即不同的基下)的表示。而将其变为灰度后,只剩下一个维度,相当于将三维向量投影为一维标量一样,是不可能回复为原来的向量的。要想恢复,就必须储存另外两个维度的信息,合在一起还是三维向量,这还不如直接保存原来的彩色图像数据。如果你一定要将其分解为灰度基和另两个基下的表示,可以用YIQ表示,他的Y分量就和灰度数据等价,美国电视信号NTSC就是YIQ表示的,因此可以和黑白电视兼容(黑白电视只能接受Y信号,得到灰度图像)。用命令rgb2ntsc和ntsc2rgb可以将数据在RGB和YIQ之间互换。下面是例子
clear;clc;
RGB = imread(\'peppers.png\');%RGB图像
YIQ = rgb2ntsc(RGB);%YIQ表示
GRAY=rgb2gray(RGB);%灰度图像,它和YIQ中的Y等价,只不过灰度图像的值是0~255的整数,而Y是0~1的实数,即GRAY=uint8(255*YIQ(:,:,1))
RGB_restore=ntsc2rgb(YIQ);%从YIQ表示恢复的RGB图像
subplot 221
imshow(RGB);title(\'原图像RGB\')
subplot 222
imshow(GRAY);title(\'灰度图GRAY\')
subplot 224
imshow(YIQ(:,:,1));title(\'转换为YIQ后的Y分量\',\'(和灰度图等价)\')
subplot 223
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图像。下面是例子
clear;clc;
RGB = imread(\'peppers.png\');%RGB图像
g=rgb2gray(RGB);%灰度图g
R=double(RGB(:,:,1));%红色分量R
G=double(RGB(:,:,2));%绿色分量G,于是RGg就是一种我们自己定义的颜色表示方法了
p=0.2989;q=0.5870;t=0.1140;
B=(double(g)-p*R-q*G)/t;%通过RGg计算得到的蓝色分量B,他和原图像中的蓝色分量是一致的
subplot 131
imshow(RGB);title(\'原图像RGB\')
subplot 132
imshow(g);title(\'灰度图g\')
subplot 133
imshow(uint8(cat(3,R,G,B)));title(\'从RGg表示恢复的RGB图像\',\'(和原图像一致)\') 参考技术A 按一下操作:A=double(m)G=mat2gray(A);figure(1);imshow(G)imwrite(G,'kkk.BMP')注意:m是灰度值矩阵.本回答被提问者采纳
以上是关于matlab怎么将灰度图像转为rgb图像的主要内容,如果未能解决你的问题,请参考以下文章