ImageJ/Fijiでフリーハンドで書いたROIの座標リストを取得したい(適当メモ)

Python Scriptingで

 

roi = IJ.getImage().getRoi()

x0 = roi.getBoundingRect().getX()
y0 = roi.getBoundingRect().getY()

x = roi.getXCoordinates()
y = roi.getYCoordinates()
length = roi.getNCoordinates()

for i in range(length):
    print x0 + x[i], y0 + y[i]

print length

 

これでROIの頂点の座標が取得できる?でも、今回はROIの線が通ったピクセルの座標を全て取得したいのでこれでは駄目。

 

そこで、以下の方法を試す。

ROI managerにROIを登録。その後、同じ大きさの黒い画像を作成し、ROI managerに登録したROIを呼び出して1pixelの白線でDraw。Python Scriptingで、

 

imp = IJ.getImage()
ip = imp.getProcessor().convertToFloat()
pixels = ip.getPixels()

on = filter(lambda i: pixels[i] > 1, xrange(len(pixels)))

width = imp.width

x = map(lambda i: i % width, on)
y = map(lambda i: i / width, on)

for i in range(len(on)):
    print x[i], y[i]

print len(x), len(y)

 

でOKのはず?もうちょっと確認が必要。