とりあえず自分にとってよく使いそうなコードに関するメモです。
ImageCalculator (画像計算機)
Process > ImageCalculator
コード
操作対象はImagePlusです。
from ij import ImagePlus, plugin
ic = plugin.ImageCalculator()
imp2 = ic.run("Subtract create", Imp0, imp1)
命令部分は、Operation の選択肢にある通りです。そして新たな画像(ImagePlus)を作る場合は、Operation名の後に、空白を挟んで create を追加します。
Math (画像計算)
Process > Math
コード
マクロを動かす形式
from ij import IJ, ImagePlus
IJ.run(imp, "Add...","value= 20")
操作を行う対象は、ImagePlusになります。引数は、最初に対象となるImagePlus、次にMathコマンドのうちの使いたいコマンド名を表示通りに文字列として与え、次にパラメータを与えます。パラメータに関してもすべて文字列として与える必要があります。
APIを使う形式
基本的に画像のピクセルを書き換える操作はImagePlusではなく、 ImageProcessor に対して行う必要があります。アクティブなImageProcessorであれば、ImagePlus から imp.gerProcessor() で取得することができますが、そうでなければImagePlusからStackを取得し、そこからImageProcessor を取得しなければなりません。なお、Mathの各コマンドに直接対応するメソッドがない場合もあります。
from ij.process import ImageProcessor
ip.add(20.0)
使えるメソッド ※( )内はパラメータとして与えるデータ形式
add(double or int value)
subtract(double value)
multiply(double value)
and(int value)
or(int value)
min(double value)
max(double value)
gamma(double value)
set(double value)
log()
exp()
sqr() < square
sqrt() < square root
abs()
これを見ると、マクロで簡単に指定できる割り算のメソッドがありません。もっともこれは逆数を掛ければよい、ということかと。それ以外にもメソッドとして指定できないものがありますので、IJ.run を使うメリットはあると思います。
なお、上の、gamma メソッドを使う場合の注意点があります。通常ガンマ値というと、例えば「ガンマ2.2 を掛けて明るくする」という場合、実際には乗数として 1/2.2 を掛けていますが、その乗数の分母をガンマ値と称しています。しかし gamma メソッドでは、乗数自体を入力する必要があります。つまり、ガンマ2.2 で明るくしたい場合、
imp.getProcessor().gamma(1 / 2.2)
と指定する必要があります。
Invert (反転)
Edit > Invert
コード
マクロを動かす形式
from ij import IJ, ImagePlus
IJ.run(imp, "Invert...","")
APIを使う形式
from ij import IJ, ImagePlus
imp.getProcessor().invert()
from ij import ImagePlus, ImageProcessor
ip = imp.getProcessor()
ip.invert()