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

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

ImageJ対応 相対RGB色マスク画像作成ツール Ver. 0.25 アップデート (UI 改善)

 さて、お盆休みに入りましたが皆様いかがお過ごしでしょうか。我が家では家内がコロナが怖いと言って、どうやらこの夏も家でそのまま過ごすことになりそうです。

 同様の境遇の皆様にお盆休みプレゼントという訳でもありませんが、今回、拙作の ImageJ対応 相対RGB色マスク画像作成ツールを、バージョン 0.25 へアップデートします。今回機能的なアップデートはありませんが、ユーザインターフェース面で大きな改良があります。今までより使い勝手が良くなり、写真補正作業も楽しくなると思います。

 個人的には、本ツールは拙作ツールの中でも、黄変ネガ写真Bチャンネル再建法補正ツールと並んで、かなりユニーク、かつ出来の良いツールだと自負しています。多くの写真編集ソフトウェアやRaw現像ソフトウェアでは、特定の色域を指定したり、あるいはRGBの絶対値に基づくマスクを作って補正する機能は搭載しています。しかし、相対的なRGB値に基づくマスクを作って補正する機能を搭載しているケースは非常に少ないようです(すべての画像編集ソフトの機能を網羅して探査したわけではありませんので断言できませんが)。しかしトーンカーブやレベル補正でRGB値を操作して補正を行う場合、相対的なRGB値に基づくマスクを作るということはツールとの整合性を考えてみても非常に有効かつ効果的なのではないかと考えています。さらに、マスクを作成するパラメータも細かく指定できる点でも非常にユニークであり、またマスクをラスター画像として保存するため、出来たマスクのペイントツールを使った再編集も可能になる点を考慮すると、色を補正する自由度が格段に上がります。フィルム写真の補正のみならず、デジタル写真のカラーグレーディングなどでもご活用いただけるのではないかと思っています。

 ただ、筆者のプログラミング力不足で、今まで、ユーザインターフェース面で不十分でした。今までのユーザインターフェースも、サンプルプログラムを改造してかろうじてこの程度まで動かせるところがやっとで、ユーザインターフェースの改良まで到底力が及びませんでした。

 最近、Bチャンネル再建法もほぼ技法的にはかなり完成に近づいて来ましたので、ImageJのユーザインターフェースの作り方を勉強し直す余裕も出てきて、今回改良に着手した次第です。

 

 まず、ファイル選択ダイアログの次に出る、チャンネル選択ダイアログは表示上は変更がありません。因みに上の[Select target channnerl for making mask] では作りたいマスクに対応するチャンネルを選択し、[Select target channnerl for deciding mask valid lightness range] では、マスクが有効な明度(輝度)範囲を決定するチャンネルを選びます。通常は上と同じチャンネルを選びますが、場合によっては変えたい場合もあるかと思います。ありうるのは、上で何らかの色チャンネルを選択し、下で Luminosity を選ぶというようなケースです。

 なお、今回上のマスク作成チャンネルを選択すると、下の明度範囲決定チャンネルも一旦連動するようにしました。しかし、あとで変更できます。但し、下のチャンネルを変えても上のチャンネルは変わりません。

 また、今回デフォルト値を Magenta / Green マスク作成に変更しました。Bチャンネル再建法ツールのアルゴリズム変更に伴い、黄変をとり残すケースが少なくなり(むしろ黄色味を取りすぎるぐらい)、このツールの一番使用頻度が高くなるのはマゼンタマスク作成目的になりそうだからです。

チャンネル選択ダイアログ

 次にパラメータ設定ダイアログです。一見すると何の変更もないように見えます。ただ若干表示を変更しています。

パラメータ設定ダイアログ

 いつものように、マスクが有効な明度範囲を選ぶスライダーを動かすと有効な範囲が白で、無効な範囲が黒で表示されます。ここは白と黒の二値(バイナリー)マスクになります。

有効明度範囲閾値設定中
(二値マスク)

 ここからが今回の最大の改善点です。今までは明度範囲のスライダーに対応したプレビュー画面しか出ませんでした。今回は、上の [xxx Mask Threshold] つまり色範囲の閾値の数値ボックスに下図を入力すると、その色に対応したマスク (二値ではなくグレースケールのマスク) のプレビュー画面が出るようになりました! また、[Make xx (primary color) Mask] をチェックすると、ちゃんとその色 (原色) に対応したマスクに変わります(チェックがないデフォルトでは補色対応マスクになります)。つまり、明度範囲の二値マスクのプレビューだけではなく、色に対応したグレースケールマスクのプレビューが追加されました! 色の閾値を入力しただけではどのようなマスクができるかピンときませんが、プレビューを設置することで、それがすぐわかるようになりました。また透過倍率を入力すると、それに応じてマスクの明るさも変化します。

 実は、閾値を指定して二値マスクを作るAPIはありますので、そちらの方は結構簡単に実装できるのですが、こちらはちょっと複雑な操作を行っているので、これをインターアクティブなプレビュー画面に実装するのが結構面倒で、今まで、筆者の力では実装しきれませんでしたが、今回勉強しなおして何とか実装するところまで持ってきました。

 なおガウスぼかしに関してはプレビューは行いません。

 二値マスクと色のグレースケールマスクのプレビューの切替は、対応する項目を動かすことで自動的に切り替わります。切り替わるとプレビュー画面のタイトルも変わりますので分かると思います。

 最終的なマスクは二値マスクとグレースケールマスクを足し合わせたものになります。

色の閾値 および マスク透過度設定中
(マゼンタマスク [グレースケール])

 なお、輝度マスクに関しては、動作が異なるのでどの様に実装するか悩みましたが、最終的に次のようにしました。デフォルトでは、輝度マスクのグレースケールイメージがプレビューとして出ます。

輝度マスクデフォルト
(グレースケール・プレビュー)

 下の、Show lightness range preview をチェックすると有効な輝度範囲を設定するための二値のプレビュー画像に切り替わります。

有効輝度範囲設定用プレビュー画面
(二値マスク)

 最終的にできるマスクはグレースケールマスクと二値マスクを足し合わせたものであるのは、相対色マスクと同じです。

 今回のアップデートで、何度もマスクを作成しては、思ったマスクとは異なっていて作り直すという作業を繰り返す必要は少なくなったと思います。

 本ツールのダウンロードはこちらからどうぞ。また今回のバージョンから、本ツールの相棒として必須である、画像をマスクとして取り込むGIMP用プラグインも同梱しました。なお、Mac OSに関しては、自動的に判定し、Mac OSを使っているばあい、スライダー使用時の getValueIsAdjusting メソッドの使用を回避するようにしています。なお、そのためプレビューの動作が重い場合は、スライダーを動かしている間はプレビューチェックボックスをオフにし、動かし終わったらオンにして下さい。

[2022.8.15追記] なお、当ツールの全般的な使用方法の説明は、以下にまとめました。

yasuo-ssi.hatenablog.com

 なお、本記事で紹介した写真補正技法やソフトウェア (Plug-in) は個人的用途および非営利目的であれば自由に使っていただいて構いませんが、本技法を使って何らかの成果 (編集した写真等) を公表する場合は、本記事で紹介した技法を使った旨クレジットをつけて公表していただくことをお願いします。

 また、このソフトウェアを利用される方は、このソフトウェアに起因する損害に対して作者は一切の責任を負わないという点を了承したものとみなします。同意できない方はご利用をお断りします。

 営利・営業目的で使用される方は別途ご相談下さい。

 また、私の作成したPlug-inも自由に改変して使用していただいて構いませんが、その成果を公表する場合はご一報下さい (公表しない場合は特に連絡は必要ありません)。またその改良した結果を私の方で自由に利用させていただくこともご了承下さい。