0

我一直在做一个项目,我试图通过 ImageJ 宏旋转图像,基本上相关部分如下所示:

IJ.run(sourceImage, "Arbitrarily...", "angle=" + angle + " grid=1 interpolate enlarge");

因此,当我对运行上述方法的方法进行角度为 20、30、40、50、60 的 5 次调用时,执行此操作的时间越来越长(对于线程和单线程应用程序)所以大约处理时间为:

===========================
290 - 1. execution
656 - 2. execution
649 - 3. execution
1353 - 4. execution
6931 - 5. execution
===========================

那么,当连续调用特定宏时,为什么 ImageJ 上的宏调用会变慢?

4

1 回答 1

0

我看不到您在这里使用 ImageJ 宏语言的位置。您显示的代码是 Javascript 或 Java,您调用的命令是运行 Java 插件,而不是宏。

每次调用IJ.run(sourceImage, "Arbitrarily...", ...),您都在扩大您的sourceImage,因此每次后续调用都必须处理更多像素。

尝试enlarge从函数调用中省略参数,看看减速是否仍然存在。

如果您想在每次旋转时从原始图像sourceImage开始,请在旋转前复制您的使用imp = new Duplicator().run(imp);

顺便说一句,出于兼容性原因,命令“Arbitrarily...”仍然可用,但不久前已被“Rotate...”取代,当使用插件记录命令时,您也可以通过 ImageJ 菜单获得该命令> Macros > Record...并切换到Record: JavascriptJava

于 2013-04-30T10:01:35.400 回答