有效地在matlab中叠加多个图像

时间:2013-02-07 03:38:45

标签: matlab image-processing graphics

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

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

我需要一种方法将我到目前为止绘制的图像压平成单个图像,我可以将图像作为背景高效地插入图像。

有什么建议吗?

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

3 个答案:

答案 0 :(得分:0)

我不确定这是否会对你的速度有所帮助,但可能在你完成这个过程之后。

您可以使用

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

将图形保存到图片文件中。然后,您可以使用close all关闭当前数字并重新应用之前的新图片,但现在它将是单个图像。

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

查看博客文章:Blend images with MATLAB,附带精彩示例(包括多个图像叠加层)和MATLAB代码。