省型旧形国電の残影を求めて

戦前型旧形国電および鉄道と変褪色フィルム写真を中心とした写真補正編集の話題を扱います。他のサイトでは得られない、筆者独自開発の写真補正ツールや補正技法についても情報提供しています。写真補正技法への質問はコメント欄へどうぞ

Imagej / Python Tips: ROIがあるときのImagePlusの複写に注意

 久しぶりの ImageJ Pythonプログラミング Tipsです。最近引っかかったのですが、ImagePlusオブジェクトを Duplicateしたものに対して、各ピクセルへの反復処理を行っていたところ、どうも配列の範囲を超えてしまうようなのです。

 おかしいなと思って探ってみると、元のImagePlusオブジェクトのごく一部の部分しか複写されていません。結局ImagePlusオブジェクトにROI (選択範囲) の設定を行い、それを

imp1 = Duplicator().run(imp0)

で新たなImagePlusに複写すると、ROIが掛かっている部分しか複写しないことが分かりました。

 ただROIが掛かっているImagePlusをさらにチャンネル分解などの操作を行うと、分割先のImagePlusではROIが解除されるようです。それで今まで問題が出ていなかったのですが、今回モノクロの単チャンネルの画像処理をやろうとして引っ掛かってしまったのでした。

 今回は、ROIを掛ける前にImagePlusに複写することにして問題を回避しましたが...

 

 なお、imp1 = imp0.getProcessor().Duplicate() という方法もありますが、こちらも同じなのか確認していません (が、おそらく同様かと思います)。

------------

 以下の記事もご参照ください。

 以下の記事ではこれはバグ(?)と書きましたが、結局、ROIがあるとROIからしかデータの複写を行わないという仕様のためようです。

yasuo-ssi.hatenablog.com