繁体   English   中英

我们可以通过DM脚本获取不在前面的图像吗?

[英]Can we get the image that is not in front by DM script?

我对处理系列的多个图像有疑问:

  1. 当我们编码时,我们可以通过image front:=GetFrontImage()获得前面的image front:=GetFrontImage() 我还可以获得不在前面的图像吗? 例如,如果总共有20个图像,我可以通过类似于这个伪命令的东西直接获取第7个图像(从前到后安装): image img7:=GetFrontThe7thImage()

  2. 我有一系列图像,图像名称的格式是一致的,如前图像的名称是xxx001,第二个是xxx002,第三个是xxx003,...,第N个图像是xxxN,我可以使用编码定义如image N:=imagexxxN ,然后我直接使用图像N进行数学处理? 或者我应该使用循环并逐个获取图像?

1)

由于您可以在一个窗口/已保存的数据集中拥有多个图像( - 只需将一个图像复制并粘贴到另一个窗口上),因此通常可以使用ImageDocuments进行迭代。 ImageDocument是存储到硬盘驱动器并从硬盘驱动器加载的对象。 当您创建图像但不显示图像时,此图像还没有ImageDocument,但所有(一次)显示的图像都有。

要选择最后一个图像( 最后面的图像),您可以执行以下操作:

number nDocs = CountImageDocuments()
imageDocument docLast = GetImageDocument( nDocs-1 )
image imgLast := ImageDocumentGetImage( docLast, 0 )
SelectImage( imgLast )

请注意,您也可以使用OOP编码样式将事物放在一行中,其中方法的第一个参数放在命令前面以允许管道。 因此,您可以选择第2个最前方的图像(前提是至少有2个)

GetImageDocument(1).ImageDocumentGetImage(0).SelectImage()

2)

您需要一个循环来访问多个图像,但是对于并行处理,您可以考虑将数据放入3D数据堆栈中。 (另请注意,您可以使用File/Open Series...多个图像加载到3D堆栈中File/Open Series... )。 根据您要执行的操作,您可以使用Slice2命令在“z Slice2 ”上逐个“切片”操作此堆栈,或者您可以作为整体对3D数据进行操作。

  1. 对于此部分,您需要两个函数CountImages()和FindImageByIndex()。 这是一个展示它们如何工作的示例:

     Result("\\nAvailable images:\\n"); Number imageCount = CountImages(); if (imageCount > 0) { for (Number imageIndex = 0; imageIndex < imageCount; imageIndex++) { Image nextImage := FindImageByIndex(imageIndex); String imageName = nextImage.ImageGetName(); Result("Image " + imageIndex + ": " + imageName + "\\n"); } } else Result("None\\n"); Result("\\n"); 
  2. 如果您的图像全部打开并且系统地按照您的指示命名,那么您可以使用GetNamedImage()函数找到特定的图像,如下所示:

     String baseName = "xxx"; Number desiredImageNumber = 3; String imageName = baseName + Format(desiredImageNumber, "%03.0f"); Image desiredImage := GetNamedImage(imageName); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM