![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
matlab里面灰度图与RGB转化的问题
我用matlab用数据生成了灰度图。但是发现我用colormapjet之后生成的图像再rgb2gray出来的图,跟直接colormapgray出来的不一样啊,比如下面的。...
我用matlab用数据生成了灰度图。但是发现我用colormap jet之后生成的图像再rgb2gray出来的图,跟直接colormap gray出来的不一样啊,比如下面的。请速速回答,回答满意再加50啊!
展开
2个回答
展开全部
楼上说的很有道理,我测试了下,你用rgb2gray()得到的从,colormap矩阵(一般是64行3列)完全不相等,
>> b=rgb2gray(a);
>> m1=colormap;
>> m2=colormap(gray);
>> m1==m2;
>> c=(m1==m2);
这是我测试的程序代码,C是判断相等的矩阵;我的a是一个彩图矩阵
我如果没记错的话原因是这样的,两种函数的变灰度图的方法不一样,rgb2gray()这种是
用r,g,b分量进行亮度计算,由rgb到yuv(ycbcr)的进行转换,计算y的公式就是了,因为ycbcr空间中,y分量就是原图的灰度拷贝
|Y| | 0.299 0.587 0.114 | |R|
| I| = | 0.596 -0.274 -0.322 | |G|
|Q| | 0.211 -0.523 0.312 | |B|,
colormap(gray)是以一个固定的颜色矩阵作为颜色矩阵,那么他的颜色矩阵永远不会变,而rgb2gray()的颜色矩阵可能随数据变化而变化
我觉得rgb2gray要准确点,colormap(gray)算作伪彩色编码,有点人为的性质
>> b=rgb2gray(a);
>> m1=colormap;
>> m2=colormap(gray);
>> m1==m2;
>> c=(m1==m2);
这是我测试的程序代码,C是判断相等的矩阵;我的a是一个彩图矩阵
我如果没记错的话原因是这样的,两种函数的变灰度图的方法不一样,rgb2gray()这种是
用r,g,b分量进行亮度计算,由rgb到yuv(ycbcr)的进行转换,计算y的公式就是了,因为ycbcr空间中,y分量就是原图的灰度拷贝
|Y| | 0.299 0.587 0.114 | |R|
| I| = | 0.596 -0.274 -0.322 | |G|
|Q| | 0.211 -0.523 0.312 | |B|,
colormap(gray)是以一个固定的颜色矩阵作为颜色矩阵,那么他的颜色矩阵永远不会变,而rgb2gray()的颜色矩阵可能随数据变化而变化
我觉得rgb2gray要准确点,colormap(gray)算作伪彩色编码,有点人为的性质
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |