まだ ImageJ / Python プログラミングを始めて間もない 3年ほど前に書いた記事で imagePlus を複製するには、Duplicator を使わなければならないと書きました。単に、
imp2 = imp1
と書くだけでは、imp1 に imp2 というエイリアスができただけで、どちらをいじっても同じポインタを示すので、imp2 に行った操作が imp1 にも適用されてしまう、と指摘しました。
このあたりは、Python や Java を使っている人には常識なのかもしれませんが、当時は両方とも初心者でしたので... (今も Java は部分的にしか理解していません)。
yasuo-ssi.hatenablog.com その時、多分何かのサンプルプログラムを見たか、あるいは、ImageJ 上で画像の複写を行いそれをマクロとして記録したものを基にコードを書いたのかは忘れましたが、Duplicator を使いました。
しかし、最近 imagePlus や imageProcessor のレファレンスマニュアルを見たら、これらに duplicate() というメソッドがあり、それをやるとわざわざ Duplicator を使わなくても大丈夫そうであることが分かりました。
例えば imagePlus を複写するときは...
imp2 = imp1.duplicate()
imageProcessor なら...
ip2 = ip1.duplicate() もしくは、
ip2 = imp1.getProcessor().duplicate()
になるようです。
うぅーん、見逃していました。