如何在MATLAB中叠加一系列图像
这是我试图运行的代码,但问题是我有2000张图片,只能显示一张 我认为您真正想要的是将图像存储为图像堆栈。 这将允许您在中查看图像堆栈,例如,并在其中滚动等 我会将它们存储为一个tiff文件,并执行类似操作(请注意,所有图像的大小必须相同):如何在MATLAB中叠加一系列图像,matlab,matrix,3d,imaging,Matlab,Matrix,3d,Imaging,这是我试图运行的代码,但问题是我有2000张图片,只能显示一张 我认为您真正想要的是将图像存储为图像堆栈。 这将允许您在中查看图像堆栈,例如,并在其中滚动等 我会将它们存储为一个tiff文件,并执行类似操作(请注意,所有图像的大小必须相同): numOfImages=2000; 输出文件名='imgstack.tif'; 对于k=1:numOfImages 加载的_image=imread(sprintf('frame-%d.png',k)); imwrite(加载的图像,输出文件名,'Writ
numOfImages=2000;
输出文件名='imgstack.tif';
对于k=1:numOfImages
加载的_image=imread(sprintf('frame-%d.png',k));
imwrite(加载的图像,输出文件名,'WriteMode',append','Compression','none');
结束
问题在于可视化。您可以使用蒙太奇功能查看MxNxP堆栈或单元格阵列,其中每个单元格表示一幅图像
在上面的代码中
如果您希望将数据可视化为卷(您在最近的注释中已指出),则IPT中的volshow或volumeViewer将执行此操作
figure, montage(images)
其中Imatrix是要在其上执行体积可视化的MxNxP阵列。
sprintf('frame-1065.png',i)
始终给出相同的结果,而不管i
的值如何。你所说的叠加图像是什么意思?我有一组从1到2456的图像,我需要通过在每个图像上叠加来创建一个3D绘图。因此,我开始创建循环,但它似乎不起作用。你的意思是,你在寻找一个合成图像?我试图通过将一组图像叠加在一起,从中获取一个体积imshow
不显示体积图像,但MATLAB中有其他工具可用于此。此外,如果要处理体积图像,我建议您使用MATLAB工具箱。使用DIPimage,您可以执行以下操作:readtimeseries('frame-*.png')
读取所有图像,将它们堆叠到3D图像中并显示。出现问题,我想用这些图像创建一个卷,而不是多帧图像数组。请参阅我的更新。将来,我建议在你的OP中包含这样的信息,以便在StackOverflow上获得最佳效果。你的建议太棒了!只发布你的代码不允许我循环浏览从1到1256的图片…我应该怎么做?@VegaOmega是的,是的。它从1
循环到numOfImages
。设置变量numOfImages=1256
,您就可以上路了。您可能需要调整文件名的大小,但我是从您的问题中选择的。亲爱的@kkuilla,我尝试过这种方法,但正如您所看到的,我遇到了这个错误。@VegaOmega修复了这个问题。。抱歉…太棒了。非常感谢你,这是你的一部分。
figure, montage(images)
volumeViewer(Imatrix)
figure, volshow(Imatrix)