ImageJ 覆盖在旋转时被移除
ImageJ overlay get removed when rotating
我正在学习 ImageJ,但遇到了问题。
首先,我在图像上添加了一个叠加层(使用菜单中的 Image-Overlay-AddImage)。现在我想旋转图像并保留上层叠加层作为参考。但是当我使用旋转命令(Image-Transform-rotate)时,覆盖被删除了。
但是这个操作可以旋转90度(Image-Transform-Rotate 90 degrees left/gight)和translate命令(Image-Transform-translate)。这些正是我想要的,保留叠加层并更改原始图像。
我想知道为什么它们不同,尤其是 'rotate' 和 'rotate 90 degrees',以及如何在不移除覆盖层的情况下正确旋转。任何人都可以帮助我吗?谢谢!
观察到的行为是由于执行不同旋转的不同代码造成的:
Image > Transform > Rotate 90 Degrees Left →
ij.plugin.filter.Transformer("left")
Image > Transform > Rotate 90 Degrees Right →
ij.plugin.filter.Transformer("right")
而
Image > Transform > Rotate... →
ij.plugin.filter.Rotator
(您可以 get this information in ImageJ 按 [L] 或 运行 插件 > 实用程序 > 查找命令... 然后键入 在搜索栏中旋转)
如果你看一下 ij.plugin.filter.Rotator
class, you'll see that it invokes ImageCanvas#setDisplayList(null)
which will remove the current Overlay
(see also the javadoc) 即使在预览中没有显示网格线。
此行为有点不直观,如果您通过 mailing list or via Fiji's bugzilla 报告,开发人员可能会更改此行为。
我正在学习 ImageJ,但遇到了问题。
首先,我在图像上添加了一个叠加层(使用菜单中的 Image-Overlay-AddImage)。现在我想旋转图像并保留上层叠加层作为参考。但是当我使用旋转命令(Image-Transform-rotate)时,覆盖被删除了。
但是这个操作可以旋转90度(Image-Transform-Rotate 90 degrees left/gight)和translate命令(Image-Transform-translate)。这些正是我想要的,保留叠加层并更改原始图像。
我想知道为什么它们不同,尤其是 'rotate' 和 'rotate 90 degrees',以及如何在不移除覆盖层的情况下正确旋转。任何人都可以帮助我吗?谢谢!
观察到的行为是由于执行不同旋转的不同代码造成的:
Image > Transform > Rotate 90 Degrees Left →
ij.plugin.filter.Transformer("left")
Image > Transform > Rotate 90 Degrees Right →ij.plugin.filter.Transformer("right")
而
Image > Transform > Rotate... →
ij.plugin.filter.Rotator
(您可以 get this information in ImageJ 按 [L] 或 运行 插件 > 实用程序 > 查找命令... 然后键入 在搜索栏中旋转)
如果你看一下 ij.plugin.filter.Rotator
class, you'll see that it invokes ImageCanvas#setDisplayList(null)
which will remove the current Overlay
(see also the javadoc) 即使在预览中没有显示网格线。
此行为有点不直观,如果您通过 mailing list or via Fiji's bugzilla 报告,开发人员可能会更改此行为。