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