【问题标题】:Matlab, How to get the result generated by imagesc?Matlab,如何获得imagesc生成的结果?
【发布时间】:2013-08-17 13:05:32
【问题描述】:

我读过一些类似的文章,但它们不是我想要的。
Get the matrix after imagesc?
imagesc plot to matrix in matlab

我的问题
我有一个矩阵A,所有元素都是双倍的。
我做imagesc(A) 然后我有一张图片。
现在,我想获得制作图像的矩阵。 我该怎么做?

从那些文章中,如果我这样做

I = imagesc(A)
B = get(I, 'CData')

那么B == A那不是我想要的。

【问题讨论】:

  • 检查getimage
  • 你说了你不想要的,但我不清楚你到底想要什么。什么是“制作图像的矩阵”??
  • 对不起,我没有说清楚。我所知道的是 imagesc(A) 将缩放数据并将这些数据显示为图像。我想要的是在缩放后获取这些数据。谢谢

标签: image matlab scale normalize


【解决方案1】:

要以与 imagesc 相同的方式缩放图像,请执行以下操作

Amin = min(A(:));
Amax = max(A(:));
A_scaled = (A - Amin)/(Amax - Amin);

为了证明缩放后的图像是 imagesc 内部所做的,然后试试这个

imagesc(A,[Amin Amax]);
pause
imagesc(A_scaled);

【讨论】:

  • @twerdster 你可能是指最后一行的image
  • 如果我做A = rand(100,100); "code provided by twerdster" image(A_scaled); 那么我会得到一个全蓝色的图像,我怎样才能通过 image() 得到相同的图形?
  • 非常感谢,您的回答对我很有帮助
【解决方案2】:

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

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

【讨论】:

  • F是原始数组,B是缩放后的数据。
  • 在 MATLAB 中,FB 都是原始矩阵。缩放仅在视图中隐式完成,不会影响数据。
猜你喜欢
  • 1970-01-01
  • 2018-02-03
  • 1970-01-01
  • 2015-08-14
  • 2014-05-12
  • 1970-01-01
  • 2019-05-08
  • 2021-04-03
  • 1970-01-01
相关资源
最近更新 更多