ImageJでは、8bit フルカラー画像はネイティブで対応していますが、16bit フルカラー画像は bio-format プラグイン経由で読み込むようになっています。さらに 通常のTIFF形式の32bit フルカラー画像については、bio-format プラグインも非対応のため、直接読み込むことができません。 (現在、bio-format プラグインのバージョンアップにより直接読み込めるようになっています。ただし、書き込みはできません[2023.7 追記]) ただし、ImageJ 自体は32bit 画像を扱うことができます。
そこで、ImageJ に 32bit フルカラー画像を読み込む方法を考えました。32bitフルカラー画像がある場合、そのファイルを一旦GIMPで読み込んでおきます。そして、RGB分割を行って、それぞれのチャンネルを別々の TIFF ファイルとして保存します。
ちなみに GIMP 2.10.32 でチャンネル分割してTIFFファイルに保存したところ、なぜかGチャンネルのみ、値がおかしくなりました。個別のファイルの問題かもしれませんが、そうだとしても、不安定なところがあるということです。開発途上版 GIMP 2.99.14 だと問題がありません。GIMP 2.10* では、32bit ファイルの扱いにまだ難があるようです。
各チャンネル別に変換したTIFFファイルを読み込んで、ImageJでRGB合成に掛けますが、手作業だとちょっと面倒なので、以下にあるPython スクリプト・プログラムを使って読み込みます。但しRGBごとのファイル名は、*****_R.tif, *****_G.tif, *****_B.tif とし、***** の部分は名前をそろえてください (以下のプログラムでは大文字・小文字を区別します)。以下のプログラムを走らせ、ファイル読込ダイアログが開いたら、まず Rチャンネル画像ファイルを指定します。するとあとのG, B チャンネルファイルも読込み、ImageJ 上で RGB合成を実行します。なお、エラー処理などは行っていません。
-------------------------------------
# 32bit full color image import program for ImageJ # (c) 2023 Ohnishi, Yasuo import ij.ImagePlus from ij.plugin import RGBStackMerge from ij import IJ, ImagePlus from ij.io import OpenDialog from ij.plugin import RGBStackMerge, RGBStackConverter from loci.plugins import BF from org.python.core import codecs codecs.setDefaultEncoding('utf-8') od = OpenDialog("Choose Red channel file") folder = od.getDirectory() filename = od.getFileName() if filename: path = folder + filename IJ.log(path) IJ.log(folder) IJ.log(filename) i = path.find('_R.tif') pathroot = path[0:i].strip() # Always Open file with Bio-format Plugin impr = BF.openImagePlus(pathroot + "_R.tif") impR = impr[0] #imp0: Original Image impg = BF.openImagePlus(pathroot + "_G.tif") impG = impg[0] #imp0: Original Image impb = BF.openImagePlus(pathroot + "_B.tif") impB = impb[0] #imp0: Original Image impMerged = RGBStackMerge.mergeChannels([impR, impG, impB], False) impMerged.show() impR.close() impG.close() impB.close()
----------------------------
ところで、先ほど「通常のTIFF形式の32bit フルカラー画像」はImageJで直接にはよみこめないと書きましたが、通常ではない、つまり ImageJ 独自のカラータグを付したTIFFなら32bitフルカラー画像を扱えます。一旦 ImageJ 上でRGB合成した 32bit フルカラー画像を TIFF に保存できますが、これは ImageJ のスタック形式をそのまま TIFF に保存したもの、つまり、通常の画像処理ソフトでは、3ページのグレースケール画像を含むマルチページ TIFF として認識されてしまう形式です。これならImageJ上で、32bit フルカラー画像を TIFF ファイルとして扱えます。しかも bio-format プラグインなしで読み込めます。
これを逆に通常の画像処理ソフトでカラー表示できるようにするには、RGB 合成機能をもつ画像処理ソフトに読み込んで、各チャンネルを RGB 合成しなおす必要があります。
以上をまとめますと...
通常の32ビットカラーTIFF → GIMPで3色分解してチャンネルごと別々のTIFF として保存 → ImageJでチャンネルごとに読み込み、RGB合成 → ImageJ スタック形式の32bit フルカラー画像 → ImageJ 独自カラータグ付き、マルチページ TIFF
ImageJ 独自カラータグ付き、マルチページ TIFF → GIMP で3レイヤーのグレースケール画像として読み込み → 3レイヤーをRGB合成 → 通常の32bit フルカラーTIFF
という手順になります。なお、GIMP上で3レイヤーのグレースケール画像として読んだ場合、一番下から R, G, B の順になります。
なお、上に掲げたサンプルプログラムはご自由にご活用ください。