用Matlab将彩色图编程灰度图以后,在变回彩色图如何处理

如题所述

根据图像处理的原则,信息是逐渐丢失的,所以只有灰度图是不能复原成原来的彩色图的。

其数学原理如下:
原来一个彩色点rgb为 [1,2,3] 我们把它平均化后得到 一个灰的点 [2,2,2], 但是只根据这个灰度点是不能计算出原来的彩色点的具体信息的。
可以通过一定的规则(限制条件)对这三个数值进行运算得到彩色的图像,但得到的图像和原图是必然有差别的,比如photoshop中的单色映照什么的。追问

那如果我之前提取出来 彩色图像的颜色特征了呢?是否可以继续操作? 比如说:我取得一张彩色图 然后 提取颜色特征 然后变成灰度图 然后是否能恢复?

追答

对于一张自然彩图而言,对于这么多像素点应该没有一个统一描述的特征吧。我不清楚你说的特征指的是什么,所以也不好说能不能恢复,你可以自行判断:是否能恢复的数学基础就是能否由修改后的数据转化为原来的数据。

追问

比如说:我提取出来RGB信息 然后 恢复的时候进行叠加可以否?

追答

既然你能提取出来rgb信息,那就不用叠加了呀。就像 cxd1301 的回答一样,你直接把存到I这个矩阵中的原图数据拿来用就可以了,为什么还要算来算去去叠加呢。但是,我很疑惑的是你为什么一定要强调“恢复”呢,按照 cxd1301 的回答,只能说是图像的“存储”。

关于图像的计算可以参见
中的文档(关于彩色图像处理那一页)的相关简要说明,可以对彩色图像RGB各通道的信息进行提取,组合等等运算。这些都是恢复原图的方法。但是也仅仅不过是对数据的“拆分”和“存储”以及“再组装”而已啊。

希望你可以把你要做得东西作一个简要介绍。

看了你说是降噪处理的,我想可以这样做

I=imread('car010.jpg'); %%%%%% 存rbg值
H = rgb2gray(I); %%%% 灰度化
J=I-H;

%.....降噪代码
然后再叠加J和降噪以后的H。
但是我估计可能直接这样用代码会有问题,和原图会有一定区别。H是不可能再变回I的,如果变回去了也说明你降噪的失败,这么做降噪的效果需要进行验证。

我推荐另外一种图像制式,LAB模式下进行计算。其中L是明度通道,没有彩色信息,可以当做灰度那样处理,而AB两个通道存储了彩色信息。再进行叠加。(这是著名作品《PHOTOSHOP调色圣典》中极力推荐的一种降噪方式 )

追问

呵呵 有空我看看吧 关键是我现在的论文 就是基于matlab的 没办法

追答

那你尝试先做差再降噪再叠加的方法吧。我猜应该能符合大多数情况。

另外,不是因为你基于Matlab就不能做LAB了,说白了photoshop无非也是用编程语言编的(大概是C++之类);可能你对LAB制式和图像编辑中的细节研究还没有太深入(我自己也不太懂),但是MATLAB是能实现编辑LAB通道的。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-08-20
以下是我做车牌识别时用的,可以参考
首先将图像信息存储,然后再灰度变化,这样保证了原始数据在,就可以恢复。
clear;
clc;
close all;
I=imread('car010.jpg'); %%%%%% 存rbg值
H = rgb2gray(I); %%%% 灰度化
figure(1)
imshow(H); %%%% 绘灰度图
figure(2)
imshow(I); %%%% 绘制原图

有问题欢迎追问,有帮助请采纳
copyright(c) cxd1301追问

我知道这种方式 我的意思是 就拿你的例子来说 H是I的灰度图 我想利用颜色信息 将H变回I因为 我做的是去噪方面的 如果I收到噪声污染 是需要变换成灰度图进行降噪然处理的

追答

这个,你去噪后信息丢失很难恢复了
不过你可以考虑试试用图像作差,
去噪前后的灰度图作差,找出不变的点,显示。但是问题是你去噪的点信息丢失,需要你自己想办法解决。

本回答被提问者和网友采纳
第2个回答  2012-08-21
colormap('default')追问

我从A图使用此命令后 然后将A图转换为灰度图 之后能回复成彩图吗?

相似回答