使用Image.CData在MATLAB中快速重绘图像

时间:2015-11-20 19:24:07

标签: image matlab matlab-figure

我想绘制一次,然后经常更新(非常)并在MATLAB中重新绘制(少)常常的图像。我的图像是一个更新和重绘的矢量。为了显示此图片,我使用I = imagesc(reshape(data, nVoxels))绘制并I.CData(:) = data进行更新。 (重绘是分开处理的。)这很好。

现在,为了使对应于xy坐标系(x水平,y垂直 - 非常标准),其中reshape(data, nVoxels)的第一维是x,第二维是y,我需要绘制像这样:

I = imagesc(reshape(data, nVoxels)');
axis('xy');

但我现在如何快速更新图像数据呢?

到目前为止,我发现我需要做

I.CData = reshape(data, nVoxels)';

但我更喜欢像以前那样做一些事情,更新CData而无需重新分配,也无需转置数据。

这可能吗?我特别感兴趣的是在循环中经常更新;重绘是使用计时器独立处理的。

1 个答案:

答案 0 :(得分:1)

当您创建图像以翻转它并旋转轴时,可以通过设置x和y限制来避免转置:

I = imagesc([nVoxels(2) 1], [1 nVoxels(1)], reshape(data, nVoxels));
camroll(90);

然后使用

I.CData(:) = data;

试。

但是,与使用drawnow()更新数字相比,转置时间可能会微不足道。