Matlab,如何获取imagesc生成的结果?

3
我阅读了一些类似的文章,但它们并不是我想要的。
获取imagesc之后的矩阵?
在Matlab中将imagesc绘图转换为矩阵

我的问题
我有一个所有元素都是double类型的矩阵A
我执行imagesc(A),然后得到一张图片。
现在,我想获得生成该图像的矩阵。我该怎么做?

从这些文章中得知,如果我执行:
I = imagesc(A)
B = get(I, 'CData')

那么如果B == A,这不是我想要的。


1
请查看 getimage - Marcin
2
你说了你不想要什么,但我不清楚你到底想要什么。什么是“制作图像的矩阵”? - Bas Swinckels
抱歉,我没有表达清楚。我知道的是imagesc(A)会缩放数据并将这些数据显示为图像。我想要的是在缩放后获取这些数据。谢谢。 - sflee
2个回答

4
要像imagesc一样按比例缩放图像,请执行以下操作。
Amin = min(A(:));
Amax = max(A(:));
A_scaled = (A - Amin)/(Amax - Amin);

为了证明缩放后的图像与imagesc内部操作相同,请尝试以下方法:
imagesc(A,[Amin Amax]);
pause
imagesc(A_scaled);

1
@twerdster 你可能在最后一行想说的是 image 吧? - Luis Mendo
如果我执行 A = rand(100,100); "code provided by twerdster" image(A_scaled);,那么我将得到一张全蓝的图像,如何通过image()函数得到相同的图像呢? - sflee
非常感谢,您的回答对我非常有帮助。 - user3582665

0

可以用更简单的方式实现。我在Octave中尝试了我的代码。

colormap gray;
h=imshow(F,[]);
B=get(h, 'CData');

F是原始数组,B是缩放后的数据。 - Ayan Sengupta
在MATLAB中,FB都是原始矩阵。缩放仅在视图中隐式进行,而不影响数据。 - Amro

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接