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 Leftij.plugin.filter.Transformer("left") Image > Transform > Rotate 90 Degrees Rightij.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 报告,开发人员可能会更改此行为。