Rによる画像処理と画像認識

 

Rによる画像処理と画像認識: 動かしながらしくみを理解する

Rによる画像処理と画像認識: 動かしながらしくみを理解する

 

 

 Chapter2 階調変換と色調変換

  • 画像をみやすくする処理の仕方.
  • ブライトネスやコントラストを調整することで,モノクロ画像をみやすくする処理が階調変換.
  • 画像のみやすさや,どれだけ調整すればよいかを定量的に判断するには,ヒストグラムで階調を視覚化するのが有効.
  • 階調変換に対して,カラー画像をみやすくする処理を色調変換という.
  • 階調変換や色調変換は,「入力された画素値をある変換関数で別の数値に変換して,画素値を書き換える画像処理」と表現できる.

f:id:tom0930:20180923215905j:plain

 

2.1 画素値のヒストグラム

f:id:tom0930:20180923220254j:plain

 

  • ブライトネスが低くて暗いというのは,画素値が0に近い画素が多いことを意味する.
    画素値を全体的に上げ,画素値の平均が大きくなるようにしていけば画像は明るくなる.
  • コントラストが弱いのは,画素値がある値の近くに集中していることが原因.
    ばらつきを増やす,すなわち,画素値の標準偏差が大きくなるように処理すれば,コントラストが強まる.

 

2.2 ブライトネスの変換

  • ブライトネスを高くするには,各画素値を一定値上げればよい.
  • ブライトネスを増加させる処理
    img_after = img_before + 0.1*j

f:id:tom0930:20180923215920j:plain

 

2.3 コントラストの変換

  • コントラストの強めるには,画素値の変化幅を広げる.すなわち,画素値の標準偏差を大きくすればよい.
  • コントラストを強める処理
    → img_after = ( img_before - mean(img_before) ) * (1.0 + 0.4*j) + mean(img_before)
    → jの値を大きくすれば,よりコントラストの強い画像になる.

    1. 各画素から平均値を引き,平均が0になるようにする.
    2. 全体を定数倍する.(足すのではない.左右に広げる.)
    3. 各画素値に平均値を足し,もとの平均値になるように戻す.
    4. 画素値を正規化する.
  • コントラスト強調の目的は,画素値のばらつきを大きくすることであり,平均値はなるべく変えたくない.

f:id:tom0930:20180923215932j:plain

 

f:id:tom0930:20180923215926j:plain

 

2.4 ブライトネスとコントラストの同時変換

  • 理想的な変換は,ダイナミックレンジいっぱいに画素値を広げ,かつ,0以下256以上の画素をなるべく少なくすること.
  • そのためには,ブライトネスとコントラストの両方を変える必要がある.
  • ブライトネスとコントラストの両方を変換する処理
    → img_after = ( img_before-mean(img_before) ) * j2 + mean(img_before) + j1
    → j1がブライトネスを調整するパラメータ,j2がコントラストを調整するパラメータ.

f:id:tom0930:20180923225506j:plain

f:id:tom0930:20180923225517j:plain

  • j1とj2をうまく調整すれば,理想的な変換ができる.

 

2.5 画素値の分布に基づく階調変換の自動化

  • 前節までは,人間がヒストグラムと処理画像を観察してブライトネスとコントラストを手動で調節していた.
  • 本節では,画素値から計算した統計量に基づいて,自動的にブライトネスとコントラストを調整する方法を示す.
  • 自動調整の目標を以下のように設定する.
    (※ダイナミックレンジが0.0〜1.0の場合)

    ・画素値の平均が,ダイナミックレンジの中央(=0.5)になるようにする.
    ・画素値の標準偏差が,ダイナミックレンジの1/4の広さ(=0.25)になるように変換する.

    この目標通りに変換されると,理論的には,全データの約95%がダイナミックレンジに収まる.(正規分布の性質より)

f:id:tom0930:20180923215939j:plain

 

  • 上記の目標は,以下の手順で計算することで達成できる.
    1. 各画素値から平均値を引き,平均値を0にする.
    2. 各画素値を(0.25/標準偏差)倍することで,標準偏差を0.25にする.
    3. 各画素値に0.5を加え,平均値を0.5にする.
    4. 画素値をダイナミックレンジに正規化する.
  • 自動変換処理のプログラム
    img_after = ( img_before-mean(img_before) )*0.25/S.D.(img_before) + 0.5

 

f:id:tom0930:20180923225618j:plain

 

2.6 色調変換

  • 前節までの,モノクロ画像をみやすくする処理である階調変換に対して,カラー画像をみやすくする処理を色調変換という.
  • モノクロ画像では画像データを2次元の行列に格納するのに対し,カラー画像では画像データを3次元の配列に格納するので,処理や視覚化は複雑になる.
  • 色調を変換する際はRGB空間よりもHSI色空間で処理すべきなので,色空間の変換も行う必要がある.
RGB空間で色調変換してはいけない理由
  • もとの色を暗い赤として,R=0.5, G=0, B=0とする.
  • 階調変換では,ブライトネスを上昇させる際に画素値に定数を加算する.
  • それにならって,カラー画像のRGBの各成分に定数0.5を加算してみる.すると,以下の図のようにR=1.0, G=0.5, B=0.5となり,明度は上昇するものの,副次作用として彩度が低下してしまう.
  • それに対して,HSIベースの処理においてはI成分のみ上昇させているため,以下の図に示すように彩度が低下することなく明度が上昇する.

f:id:tom0930:20180924163208j:plain