我正在尝试在单个 matlab 图形中绘制多个图像以创建全景图。我的代码有效,但它只是image(im, x, y)在 for 循环中使用来覆盖图像。
因为我有这么多的图像,这导致 matlab 不得不进行大量的 alpha 混合,并且在短时间内,绘图会变慢。
我需要一种方法将迄今为止绘制的图像展平为单个图像,以便有效地将图形作为背景。
有什么建议么?
编辑 或者,有没有办法使用 image(im, x, y) 或类似的东西在背景中绘制到矩阵缓冲区,然后将单个缓冲区绘制到图形?
我正在尝试在单个 matlab 图形中绘制多个图像以创建全景图。我的代码有效,但它只是image(im, x, y)在 for 循环中使用来覆盖图像。
因为我有这么多的图像,这导致 matlab 不得不进行大量的 alpha 混合,并且在短时间内,绘图会变慢。
我需要一种方法将迄今为止绘制的图像展平为单个图像,以便有效地将图形作为背景。
有什么建议么?
编辑 或者,有没有办法使用 image(im, x, y) 或类似的东西在背景中绘制到矩阵缓冲区,然后将单个缓冲区绘制到图形?
查看博客文章:使用 MATLAB 混合图像,带有很好的示例(包括多个图像叠加)和 MATLAB 代码。
您可以创建一个由所有图像合成的单个图像(特别是因为它看起来没有透明度)。然后 Matlab 将一次只渲染一个图像,而不是计算多个图像。您必须预先定义您的边界,以防您需要剪辑。之后,您只需用新像素替换像素(在内存中,而不是在磁盘上)。这是否可能取决于您正在绘制什么样的图片。如果这很难,那么 Ben 的方法的变体将起作用 - 使用该 getframe函数(请参阅此链接)。它会拍摄您的人物快照,然后您可以将其绘制回屏幕。虽然它通常用于制作电影,但在这种情况下它没有理由不起作用......
我不确定这是否会帮助您提高速度,但在您完成该过程后可能会有所帮助。
您可以使用
saveas(figureHandle, 'filename', 'filetype')
将图形保存到图片文件。然后,您可以像以前一样使用关闭当前图形close all并重新应用新图片,只是现在它将是单个图像。
每隔几张图片就这样做,它可能会加快你的程序。它肯定会加快您查看图片的速度。