高尾山麓日誌

東京、高尾山麓付近に暮らす日常から、高尾山の状況や、高尾山・八王子周辺地域で気付いたこと、周辺鉄道情報などを掲載

2つの色チャンネルから、一定の差のある部分のみ抜き出す

2017-11-11 23:01:10 | カメラ
 引かれる色チャンネルを A、引く色チャンネルを B、そして抽出する差を x 以上とすると(A-B)-x で抽出可能になります。

例:
RGB統合グレースケール画像からBチャンネル画像を引い時に、統合グレースケール画像がBチャンネルより20以上大きい部分のみの画像を抽出する場合

※なお、Bチャンネル画像より統合グレースケール画像の値の多い部分とは、相対的に黄色く見える部分を抽出することになります。

元画像


RGB統合をグレースケール化した画像

GIMPで元画像をグレースケール化しました。

Bチャンネル画像

GIMPのメニュー「色」→「色要素」→「チャンネル分解」でBチャンネルのグレースケールが像を取り出しました。

統合グレースケール画像からBチャンネル画像を減算した画像

GIMPのレイヤーパネルを使ってRGB統合画像をグレースケール化した画像からBチャンネル画像を減算しました。この画像は統合グレースケール画像がBチャンネル画像の値より大きい部分を抽出した画像であり、黄色っぽく見える部分を示します。

青っぽく見えるとは、Bチャンネルの値がRやGチャンネルの値よりも相対的に大きい(明るい)ことであり、逆に、RやGチャンネルの値よりもBチャンネルの値よりも相対的に小さい(暗い)と黄色っぽく見えます。

従って統合グレースケール画像からBチャンネル画像を引いた画像は統合スケール画像がBチャンネルよりも相対的に大きい (Bチャンネルの値が相対的に小さい=暗い)部分を示すので、黄色っぽく見える部分を抽出したことになります。

画像を見て、明らかなことはフィルムの黄変部分を多く含むとともに、電車のクリーム色や、緑の鮮やかな部分も含んでいることです。


上の画像のうち統合グレースケール画像がBチャンネルより20以上大きい部分のみ抽出した画像


この演算にはImageJという画像操作ソフトを使用しています。ImageJの「Process」→「Macro」→「Math」から、V=V-20を指定し、一旦全体の画像から20を引きます。このときマイナスの値は取れないので、マイナスの部分はすべて0(最も暗い値)が入ります。
そのままでも良いのですが、最も明るい部分が255を取れなくなりますので、再びV=v+20を指定し全体の値を20引き上げています。

緑の鮮やかな部分やクリーム色の部分がだいぶ減って、ほぼフィルムの黄変部分を示す画像となりました。この画像をレイヤーマスクとして使うと、フィルムの黄変修正に使えます。