自迁移出 MediaWiki 以来,本页内容尚未经过审查。如果您愿意帮忙,请查看帮助指南!
Phase Unwrapping 是一个对相位图像执行相位展开的插件,重点是展开由 DHM 生成的图像(可能使用 DHM Utilities/Reconstruction 创建)。它目前支持两种不同的算法。第一种是质量引导展开方法,第二种是双波长展开方法。
基于质量的展开
基于质量的展开算法的工作原理是,当涉及到某些像素代表图像真实相位值的程度时,应将某些像素视为比其他像素“更好”。为了确定这些值,该算法使用“质量”映射,为图像中的每个像素分配一个质量值。插件内置了多种质量类型,并且可以在您自己的插件中创建您自己的质量类型。
为了展开图像,算法从中心像素开始。然后,它会查看四个相邻像素并选择质量最高的像素,并将其相对于自身展开。然后,它查看六个相邻像素并选择质量最高的像素,相对于已以最高质量展开的相邻像素展开它。重复此过程直到整个图像被展开。
要执行基于质量的展开,请运行命令Plugins › DHM › Phase Unwrapping › Double Wavelength。以下是所有参数的说明:
- 相位图像:您要解包的相位图像。
- 质量:您希望使用什么算法来计算质量映射。根据质量类型,它可能会添加其他参数,这些参数将直接出现在该参数之后。
- 单帧:如果相位图像是堆栈,如果您不想展开整个堆栈,请选择此选项。
- 像素相位值:代表相位中一个周期的像素值差。
- 输出类型:输出的图像类型。如果选择 32 位,则比例将与原始图像相同。如果选择 32 位弧度,则原始比例将缩小为[0, 2π]。
- 显示进度:显示展开过程中的进度。该算法可能需要一些时间,尤其是对于较大的图像,因此这可以用来缓解等待时的无聊感。
还可以使用 QualityUnwrappingOp 和 QualityUnwrappingStackOp 操作以编程方式解开单个图像或一堆图像。有关如何执行此操作的更多详细信息,请参阅文档。
预定义的质量类型
无
这会将每个像素的质量值分配为零。其产生的确切结果是未指定的,并且仅当原始图像中没有残差(线积分不为零的闭合曲线)时才应使用。
边缘可见度
根据Interferometric visibility计算质量。较高的可见度值对应于较高的质量值。这种质量类型需要全息图作为额外参数。
渐变
这根据任意图像的梯度大小计算质量。较低的梯度值对应于较高的质量值。
相位梯度
这与梯度质量类似,但它使用相位图像并在计算中考虑相位值的环绕。作者发现它可以在当前所有质量类型中产生最佳结果。
创建自定义质量类型
要创建自定义质量类型,您必须首先将此插件作为依赖项包含在内,然后创建一个类型为 Quality.class 并实现 Quality 接口(或者最好扩展AbstractQuality)的 Scijava 插件。创建插件类后,它将自动显示在质量引导解包命令中。插件的名称将是对话框中显示的字符串。插件的优先级将决定它在列表中的位置。
Quality 接口包含一些您可能想要覆盖的默认方法。有关您需要执行的操作的更多信息,请查看 javadocs,您可以从 github 存储库构建该文档。
Quality 使用我们的自定义Dynamic Parameters 来处理输入,因为某些参数可能会发生变化。如果您的质量类型不需要任何额外的输入,则无需担心使用它。但是,如果您确实需要额外的输入,则必须使用动态参数覆盖param()。如果您需要多个参数,则应使用包含所有参数的 HoldingParameter。
双波长展开
双波长展开算法基于文献中许多地方描述的双波长算法。给定同一事物在不同波长下的两个图像,将两个图像相减,然后将任何小于零的值增加一个波长。该结果称为粗图。这实际上将相位图像改变为更长“拍频”的相位图像。这个想法是,有时波长短是展开时的一个问题,通过产生较长波长的相位图像,可以避免这些问题。该算法也比其他展开算法快得多。 然而,该算法存在一些问题。首先,它放大了原始图像中存在的噪声。为了弥补这一点,可以扩展该算法。粗略图可以舍入为单个波长之一,然后可以添加该波长的原始图像。这个结果被称为精细地图。从理论上讲,这种方法效果很好,但在实践中,粗略地图永远不会真正与原始图像之一对齐,并且执行此过程会导致整个图像变圆并突然出现小跳跃。
另一个问题是该算法在复杂情况下效果不佳。我们尚未确定出现这种情况的任何确切原因,但这可能是由于不同波长在物体附近的传播方式不同所致。它从来没有在单波长算法可以工作的地方工作过,所以在这些问题之后,该算法唯一真正的优势是它更快。它仍然存在额外噪音或额外舍入的问题。
还有一个问题:最终的图像仍然可以被包裹。之后您始终可以使用单波长展开算法,但此时,您最好首先使用单波长算法。
如果您能找到改进算法实现的方法,请告诉我们。
要在 ImageJ 中使用此算法,请运行命令 Plugins › DHM › Phase Unwrapping › Quality Guided。以下是所有参数的说明:
- 相位图像 1:要使用的第一个相位图像。
- 波长 1:用于创建第一张图像的光的波长。上面没有单位,因为波长的实际值并不重要,重要的是它与其他波长之间的差异。
- 相位图像 2:要使用的第二个相位图像。
- 波长 2:用于创建第二个图像的光的波长。
- 像素相位值:代表相位中一个周期的像素值差。
- 显示中间步骤:是否显示该过程中采取的所有步骤。它主要用于调试目的,但在尝试确定正在发生的情况时可能会有所帮助。如果关闭,则仅显示粗略地图和精细地图。
还可以使用 DoubleWavelengthOp 和 DoubleWavelengthStackOp Ops 以编程方式解开单个图像或一堆图像。有关如何执行此操作的更多详细信息,请参阅文档。