我有关于处理多个系列图像的问题:
image front:=GetFrontImage()
获得正面图像。我还能得到前面没有的图像吗?例如,如果总共有20个图像,我可以通过类似于这个伪命令:image img7:=GetFrontThe7thImage()
的东西直接得到第7张图像(从前面到后面)吗?image N:=imagexxxN
这样的编码定义,然后直接使用图像N进行数学处理吗?或者我应该用一个循环来一个接一个地得到图像?发布于 2015-07-21 06:33:15
1)
由于您可以在一个窗口/保存的数据集中拥有多个映像(只需将一个图像复制并粘贴到另一个图像上),因此使用ImageDocuments
进行迭代通常是比较省事的。ImageDocument是存储在硬盘中并从硬盘中加载的对象。当您创建一个图像,但不显示它时,这个图像还没有一个ImageDocument,但是所有(一次)显示的图像都有。
若要选择最后一个图像(最后面的图像),可以执行以下操作:
number nDocs = CountImageDocuments()
imageDocument docLast = GetImageDocument( nDocs-1 )
image imgLast := ImageDocumentGetImage( docLast, 0 )
SelectImage( imgLast )
请注意,您也可以使用OOP编码方式,将方法的第一个参数放在命令的前面,以允许管道行,也可以在一行中获取内容。因此,您可以按行选择第二位最前面的图像(前提是至少有2张)。
GetImageDocument(1).ImageDocumentGetImage(0).SelectImage()
2)
您需要一个循环来访问多个图像,但是对于并行处理,您可以考虑将数据放入一个3D数据堆栈中。(还请注意,您可以使用File/Open Series...
将多幅图像加载到3D堆栈中)。根据您想要做的事情,您可以使用Slice2
命令对这个堆栈“逐片”迭代z维,或者您可以对整个3D数据进行操作。
发布于 2015-07-21 01:45:03
https://stackoverflow.com/questions/31526131
复制相似问题