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

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

ImageJ対応 相対RGB色マスク画像作成ツール UI プレビュー アルゴリズムメモ (2)

 今回は相対RGB色マスク作成ツール中、輝度マスク作成時のプレビュー画像表示のアルゴリズムです。相対色マスクを作るよりも輝度マスクの方が単純なので、単一の class にまとめました。但し、明度範囲閾値用2値マスク画像、輝度マスクのグレースケール画像、最終イメージ (明度範囲+輝度マスクを複合した最終出力イメージ) の描画については、同じ class のなかの別々のメソッドとして定義しました。従って描画メソッドを呼び出す、イベントに対応したメソッドの記述は、相対色マスクより複雑になっています。

 

輝度マスクプレビュー作成アルゴリズムの概略

 

 上の図で、一番左側の列が、プレビューを表示する ImagePlus に該当します。

 輝度マスクを作るときは、常に輝度のグレースケール画像のみを使いますので、相対色マスクを作るときのように複雑なチャンネル操作は必要ありません。従って引数として引用する画像もグレースケール画像のみです。このグレースケール画像の ImagePlus はプレビューの描画キャンバスとして使いますが、描画しなおすときに描き換え前の初期状態の画像が必要なので、 ImagePlus および ImageProcessor に初期状態を複写しておきます。そして以下で説明するイベントが発生するたびにこの初期状態の画像から、マスク画像を作成します。

 発生するイベントとしては、スライダーの動作、数値ボックスの入力、その他 (主にチェックボックスのオン/オフ) がありますが、スライダーの動作、数値ボックスの入力のイベント発生に対しては、どの種類のプレビュー画像を描くかのチェックボックスの指定に従い、明度閾値描画メソッド (2値マスクイメージ) を呼び出すのか、それとも輝度マスクイメージ描画メソッド (グレースケールマスクイメージ) を呼び出すのかが異なります。

 その他のイベント発生に対しては、まずそのイベントが最終画像表示チェックボックスのオンかどうかを確認し、オンであれば、最終画像描画メソッドを呼び出します。そうでなければ、上記と同様、どの種類のプレビュー画像を描くかのチェックボックスの指定に従い、明度閾値描画メソッド (2値マスクイメージ) もしくは、それとも輝度マスクイメージ描画メソッド (グレースケールマスクイメージ) を呼び出します。

 各メソッドは、プレビューの描画キャンバスとして使われる ImagePlus に作成した画像を複写し表示し終わったら、描画キャンバス以外の、中間で作成したすべての画像オブジェクトは作業が描画作業が終了するたびに破棄します。

 なお、明度範囲作成メソッドの内容は、前回の明度範囲画像作成モジュールと基本的に同じですが、描画キャンバス以外に画像を保存しない点が異なります。

 一方、輝度マスク描画メソッドは、元のグレースケール画像から、最低閾値分を差し引いた画像に、透過度を掛けて作成します。反転マスクの場合はその画像を反転します。

 最終画像描画メソッドは、一時保存された画像がないので、メソッドの中で改めて明度範囲画像と輝度マスク画像を作成し、それをイメージプロセッサを使って合成した画像を最終画像とし、描画キャンバスに複写します。

 

 相対色マスクのプレビューを作るのと輝度マスクのプレビューを作るのでは大きく構成が異なりますが、うまく意図通りの結果が得られるか分からずに手探りで試行錯誤しながら作っていったため、このような結果になりました。次に考えるときはもうちょっと整理された形で作りたいと思います。