今まで私自身も誤解していましたが、ImageJ 上で 8bit カラー画像のビット深度取得に注意が必要です。
ImagePlus にビット深度を取得する、getBitDepth() メソッドがあります。今まで、8bit カラー画像は、8bit と判断されるのかと誤解していましたが、実は 24bit と判断されるのですね。API レファレンスにもよく見直したらそう書いてあります。
ただ、今まで誤解していてもとりあえず自作のプログラムがちゃんと走っていたのは、実はファイルを読む時に、原則として bio-format プラグインから読み込むようにしていたためでした。
つまりどういうことかというと、8bit カラー画像を ImageJ 上で、単純に Open コマンドで読み込むのと、bio-format プラグインから読み込むのでは、ビット深度判断が異なってしまう、ということです。
Open コマンドで読み込んだ場合は、ColorProcessor に読み込まれるので、24bit になります。しかし、bio-format プラグインから読み込むと、ハイパースタック構造で読み込まれますので、byteProcessor x 3 チャンネル で読み込まれることになります。そのため getBitDepth() メソッドでは、ビット深度は 8bit と判断されるということです。
さらに、ImagePlus には、色のチャンネル数を判断する、getNChannels() メソッドがあります。
imagej.net これも動作させてみたところ、ColorProcessor を使っている ImagePlus はなんと、1チャンネルと判定されます。をいをい... これじゃ getStackSize() メソッドと変わらんじゃないか... お前の存在意義は何なんだ...
というわけで、このあたり ImageJ プログラミングをされる方はご注意ください。
-----------
関連項目
上記の点でバグフィックスを掛けたのが以下のアップデートです。