1

我正在尝试在单个 matlab 图形中绘制多个图像以创建全景图。我的代码有效,但它只是image(im, x, y)在 for 循环中使用来覆盖图像。

因为我有这么多的图像,这导致 matlab 不得不进行大量的 alpha 混合,并且在短时间内,绘图会变慢。

我需要一种方法将迄今为止绘制的图像展平为单个图像,以便有效地将图形作为背景。

有什么建议么?

编辑 或者,有没有办法使用 image(im, x, y) 或类似的东西在背景中绘制到矩阵缓冲区,然后将单个缓冲区绘制到图形?

4

3 回答 3

0

查看博客文章:使用 MATLAB 混合图像,带有很好的示例(包括多个图像叠加)和 MATLAB 代码。

于 2013-08-23T21:34:32.710 回答
0

您可以创建一个由所有图像合成的单个图像(特别是因为它看起来没有透明度)。然后 Matlab 将一次只渲染一个图像,而不是计算多个图像。您必须预先定义您的边界,以防您需要剪辑。之后,您只需用新像素替换像素(在内存中,而不是在磁盘上)。这是否可能取决于您正在绘制什么样的图片。如果这很难,那么 Ben 的方法的变体将起作用 - 使用该 getframe函数(请参阅此链接)。它会拍摄您的人物快照,然后您可以将其绘制回屏幕。虽然它通常用于制作电影,但在这种情况下它没有理由不起作用......

于 2013-02-07T05:45:00.933 回答
0

我不确定这是否会帮助您提高速度,但在您完成该过程后可能会有所帮助。

您可以使用

saveas(figureHandle, 'filename', 'filetype')

将图形保存到图片文件。然后,您可以像以前一样使用关闭当前图形close all并重新应用新图片,只是现在它将是单个图像。

每隔几张图片就这样做,它可能会加快你的程序。它肯定会加快您查看图片的速度。

于 2013-02-07T03:42:57.723 回答