高尾山麓日誌

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

高尾山頂付近紅葉状況

2017-11-26 15:06:02 | 登山
 ここ数日の高尾山紅葉状況です。ほぼピークに近い状況でしょうか?





富士山もきれいに見えます。


トイレは大行列です。




センブリです。もう終わりに近い状態で、咲き残っているのはわずかでした。

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引き上げています。

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

別チャンネルの一定の以下の暗い部分をBチャンネルに流用するには

2017-11-03 08:58:27 | カメラ
 時間が経ったネガフィルムスキャン画像のBチャンネルには一定以下の暗い部分の画像が失われている場合が多々あります。その場合、その部分のみ他チャンネルから流用する方法について記しておきます。なお、画像は8bit画像を前提とします。なお流用する他チャンネルをIとし、チャンネルを流用する暗さの境界線を示す明るさをxとします。

 単純に、境界線なくIチャンネルの Bチャンネルより暗い部分をすべてBチャンネルに流用するのであれば、GIMP、Photoshopとも、Bチャンネルを下にし、流用チャンネルを上にして、レイヤーパネル上で、流用チャンネルのモードに「比較(暗)」を選択すれば流用チャンネルのBチャンネルより暗い部分のみBチャンネルに流用できます。

 しかし、流用する暗さに境界線を設けるなら単純ではありません。

 でそのためには、Iチャンネルの画像に(255-x)を加算します。するとxを越える画像が飽和し、真っ白になります。同時にBチャンネルにも(255-x)を加算し、その画像をI+(255-x)画像から引きます1)。その画像を反転し、その画像で元のBチャンネル画像を減算すると、x以下の暗さのみIチャンネルから流用した、補正Bチャンネル画像ができます。

 式で示すと以下の通りです。

補正B = B - Invert((I+(255-x))-(B+(255-x)))

 事例を示します。
まずオリジナルのBチャンネルです


ヒストグラムを見ると、50以下の成分がほとんどないのが分かります。


そこで、55以下の部分だけRチャンネルから流用することを考えます・

こちらがRチャンネルです。Bチャンネルよりも暗い部分が豊富にあることが分かります。


まず、Rチャンネルの56以上の成分を消すために、画像全体に200を加算します。これは8bit画像の場合、256以上に値は飽和して、一律255になりますので、それを利用し、56以上の画像を消すのです。すると白っぽくなりますので、これを反転すると、55以下の部分のみ残ったネガ画像が得られます。

より暗い部分ほど白っぽく(つまり+の値を取るように)なっています。

ヒストグラムを確認すると、55以下の部分のみ反転して残っていることが分かります。


なお、56以上が消えたネガ画像ではなく、ポジ画像が欲しい場合は、一旦200を加算して、56以上に部分が消えた後に、再度200を減算すればOKです。

また、このような画像全体に対する定数の加算には ImageJ というソフトウェアを使用しています。PhotoshopやGIMPでも前回紹介したように定数の加減算はできますが、一律定数(この場合は200)で塗りつぶした画像を用意しなければなりません。ImageJだと直接数式で指定できます。

上で得た画像をオリジナルのB画像から減算します。暗い部分ほど反転して大きな+の値を取りますので、減算するとより暗くなる計算です。


なお、オリジナルのBチャンネルには55以下の部分をほとんど含んでいないので省略しましたが、もしオリジナルのBチャンネルに55以下の部分を含む部分がある程度含まれていると、その部分のみ過剰に減算することになります。

その場合は、Rの55以下の部分の反転画像から、Bの55以下の成分を予め加算しておく操作が必要になります。

なお、単純にBチャンネルとRチャンネルのより暗い部分を比較し、暗い方を採用するなら、GIMPの場合、レイヤーパネルで、レイヤーを重ねるモードを「比較(暗)」にすれば両者を比較しより暗い方を採用した画像を簡単に得ることができます。


1) ここで、Bチャンネルのx以下の画像を減算する理由は、Bチャンネルに既に値が x 以下のピクセルがある場合、そこからそのまま後で I+(255-x) を引くと、過剰にBチャンネルが減算されてしまうため、その部分を相殺するためです。

Photoshop & GIMPにおける画像の加減算

2017-11-01 00:21:42 | カメラ
 Photoshopにおいて、2つの画像の加減算を求める場合は、メニューバーから「イメージ」→「演算」を選び、ダイアログボックスから加・減算する二つの画像を選ぶとともに、演算方法を指定します。なお、演算はR, G, Bやアルファ・チャンネルごとに行わなければならないので、RGBが統合された画像を表示したい場合は、チャンネル統合をしなければなりません。


 このとき減算で注意すべきなのは、引かれる元画像を第2元画像とし、引く元画像を第1元画像とすることです。引かれる方を第1元画像にすると、誤った結果が得られることになります。加算の方は順序を考えなくても大丈夫です。計算結果がマイナスになる場合は一律 0 (=黒)となります。また加算した場合255 (=白) を超える値は当然255でクリッピングされます。下の例は元画像のRチャンネルからBチャンネルを減算しているところです。


 計算結果は、新規ドキュメント、新規チャンネル、選択範囲の3つから選べ、デフォルトは新規(アルファ)チャンネルです。

 一方、画像から一律一定の値を減算したり、加算したりしたい場合は、全面に一定の値で塗りつぶしたグレースケール画像を用意し、元の画像から、その画像を減算するなり加算することで、計算可能になります。

 なお、GIMPの方で画像の加減算を行うには、レイヤーパネルで調整します。レイヤーパネルの一番上「モード」という部分がありますが、初期値は標準になっています。これを右端の V マークをクリックするといろいろモードが選べますので、そこから「加算」または「減算」を選びます(下図矢印部分参照)。


 するとその下の可視化されたレイヤーの画像を合わせて加算または減算処理を行います。可視化マークを外すと計算処理の対象になりません。ここでも注意すべきは減算で、レイヤーの下の画像から上の画像を引いていきます。従って引かれる画像を下側のレイヤーに、引く画像を上のレイヤーに持ってこなければなりません。

 チャンネル別に加減算する必要がありませんので、ある画像から、一律ある色を加算したり減算するということが可能です。

 ちなみにPhotoshopでもレイヤーパネルでモードを選択できるようになっていますが、画像の加減算は、少なくともCS4では、モード選択ではできません。「イメージ」→「演算」で行わなければなりません。この点に関してはGIMPが操作性で一枚上手です。