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

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

ImageJ / Python プログラミング Tips: 画像の最小値、最大値等を取得する

 ImageJ  においてその画像の明るさ、あるいは各 RGB チャンネルの値の最大値、最小値を取得するにはどうしたら良いでしょうか?

 以下の、ImageJ のImageProcessor のレファレンスを見ると...

imagej.net  getMax(), getMin() というメソッドがあるのが分かります。これで取得できるのかと思いきや、これではありません。

 このメソッドの説明に、"Returns the maximum (minimum) displayed pixel value." とありますが、これはディスプレイ範囲の最高値、最低値を取得するメソッドであり、実際に入っている値の最高値、最低値を取得するメソッドではありません。

 実際に画像が使っている値を取得するには、まず統計を取得し、その統計値の中の最高値や最低値を取得する、という手続きになります。例えば、今値を見たい、imagePlus の名前が imp だとすると...

stat = imp.getProcessor().getStatistics()

で、stat という名前で統計データを取得します。

 この stat の中の、stat.max あるいは、stat.min という値が実際の最高値、最低値になります。

 これをコンソールに書きだしたい場合は、

print ("maximum value: ", stat.max)

などと書くことになります。

 なお、16bit 画像の gamma 値の計算は、ディスプレイ範囲の最高値、最低値に基づいて計算されます。