matlab中imagesc函数得到图像,怎么还原? 15
我有一个矩阵,用imagesc函数得到了一张彩色图像,现在我想把这张图像还原成以前的那个矩阵该怎么做?...
我有一个矩阵,用imagesc函数得到了一张彩色图像,现在我想把这张图像还原成以前的那个矩阵该怎么做?
展开
1个回答
展开全部
理论上从图像是不能完全恢复出原来的矩阵数据的
因为在由数据转化为图像的过程中量化的时候丢失了信息
可以从得到的图像和所使用的colormap恢复一定的数据信息
如果得到图像的数据假设为变量im,应该是1个mxnx3的矩阵
m和n表示图像的像素,第三维大小为3,分别储存图像的r,g,b数据
又知道原来的画图所用的colormap,假设为变量map
那么可以用函数a= rgb2ind(im,map)
这时候得到的a是一个整数矩阵
b=double(a)./double(max(a(:)));
这样得到的b是一个数值范围从0到1的矩阵
0表示最小值,1表示最大值
这是从图像恢复数据可以做到的程度,和原来的数据有较大差距
如果你知道原来的数据的数值范围,也就是最小值和最大值minv maxv
那么还可以 c=minv+(maxv-minv)*b;
进一步得到和原数据相似的矩阵,但是已经不能100%还原矩阵了
因为在由数据转化为图像的过程中量化的时候丢失了信息
可以从得到的图像和所使用的colormap恢复一定的数据信息
如果得到图像的数据假设为变量im,应该是1个mxnx3的矩阵
m和n表示图像的像素,第三维大小为3,分别储存图像的r,g,b数据
又知道原来的画图所用的colormap,假设为变量map
那么可以用函数a= rgb2ind(im,map)
这时候得到的a是一个整数矩阵
b=double(a)./double(max(a(:)));
这样得到的b是一个数值范围从0到1的矩阵
0表示最小值,1表示最大值
这是从图像恢复数据可以做到的程度,和原来的数据有较大差距
如果你知道原来的数据的数值范围,也就是最小值和最大值minv maxv
那么还可以 c=minv+(maxv-minv)*b;
进一步得到和原数据相似的矩阵,但是已经不能100%还原矩阵了
追问
我知道原来的数据的数值范围,能否帮我写出来代码,谢谢
追答
你还得知道你原来用imagesc的时候用的是什么colormap
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询