Matlab,图像函数的逆

时间:2014-09-09 11:01:21

标签: image matlab

我有一个关于.png图像的系列,这些图像是由Matlab运行的'图像'关于mxn矩阵的系列文章。在这样做时,它应用了默认的colormap(jet)。 我现在需要从图像中获取数据(数据本身丢失)。据我了解,图像函数采用我的mxn矩阵和色图,并使用它生成mxnx3张量(RGB值)。是否有可能(除了像查找表一样搜索颜色图),让Matlab从图像中去,并根据用于生成它的颜色图重建数据。

这当然可以完成,因为从原始数据到RGB值的映射是基于色彩映射的线性,但我只能想到使用色彩映射作为查找表。有没有一种反转图像功能?

感谢。

3 个答案:

答案 0 :(得分:3)

从任意m - by - n矩阵转换为&#34;图像后,数据丢失 <#34;:
Matlab 移位缩放您的数据到范围[0..255]和量化它到256个离散级别。
即使您愿意忽略量化误差,仍然需要恢复未知的移位和比例因子,以便将映射的彩色图像转换为原始矩阵。

您可以使用rgb2ind将图片转换为量化的[0..255]值:

 [x map] = rgb2ind( img, 256 ); 

但是由于您不知道正确的比例和班次,因此您无法将x转换为原始数据。

答案 1 :(得分:0)

您可以使用ismember和某些reshapes的第二个输出轻松完成查找:

[~,x] = ismember(reshape(Img,[],3), jet, 'rows');
reshape(x, size(Img(:,:,1)))

答案 2 :(得分:0)

我不知道一个工具可以完全按照你的方式行事。一些数据肯定会丢失Png每像素最多48位(实际上,你对色彩图的限制要少得多),而Matlab使用的则是64位。但在我看来,如果你使用默认的jet色彩图,你将只有64个级别。

实际上我认为你可以获得有用的结果。 Jet应该是HSV色彩映射。所以也许rgb2hsv会给你一个可映射的色调值。使用插值函数应该可以计算回来。但那基本上就是查找。