論文メモ Complexity - eiichiromomma/CVMLAB GitHub Wiki

(論文メモ) Complexity

"Image Contrast, Complexity, and Stability", Computer Vision, Graphics, and Image Processing, Volume 26, Issue 3, June 1984, Pages 394-399について

各値の定義

コントラスト(Contrast)

ある画素におけるコントラスト

Cfx = \sigma | D_ifx |^2

と定義される。(数式機能がないのでTex風表記) D_iのiは次元の添字となり1がx方向、2がy方向となる。

画像全体のコントラストCfはその総和として定義される。 画素数が同じ画像でなければ比較の意味が無い。

処理で言えば

  1. 画像fxをx方向に微分(=D1)
  2. 画像fxをy方向に微分(=D2)
  3. 画像D1、D2の各画素の値を二乗した総和

複雑さ(Complexity)

Kfx = \sigma | D_ijfx |^2

D1、D2を更にx,yそれぞれに微分したものをD11, D12, D21, D22とする。 D12とD21は同じになるので画像全体の複雑さとしては、二乗した後で2倍しても良い。

画像全体の複雑さKfはその総和として定義される。 上記同様に画素数が同じ画像でなければ比較の意味が無い。

処理で言えば

  1. 画像D1をx方向に微分(=D11)
  2. 画像D1をy方向に微分(=D12)
  3. 画像D2をx方向に微分(=D21)
  4. 画像D2をy方向に微分(=D22)
  5. 画像D11, D12, D21, D22の各画素の値を二乗した総和

安定性

Sf=Cf/Kf

で定義される。

が、文献ではその逆数1/Sをinstability(不安定性)として多用している。 これが低い程、画像が劣化した際に像を維持できる指標となる。

直感的考察

コントラストは各位置における濃度変化の傾きを求めたもので、負になる事もあるので二乗して評価値としている。 複雑さは傾きの変化の度合いを表わしている。頻繁に傾きが変わる程複雑な像になりやすい。

従って、Cf/KfとなるSfはコントラストがハッキリしていて、単純な程高い。 入り組んだ図形よりもシンプルな方が劣化しても像として崩れ難い。

問題は高解像度化した際に、CCDのノイズも入り易い1ピクセル単位での評価のため、「像」の安定性と考えて良いのかが微妙なところ。 デジカメ、CCD等の画像の場合はガウシアンでもかけた方が良さそうな気がする。

Scilab+SIVPのでの関数

ソース

    function [inS,C,K]=instability(img)
      F1=[-1,1];
      F2=[-1;1];
      imgx=filter2(F1,img));
      imgy=filter2(F2,img));
      C=sum(sum(imgx .^ 2)) + sum(sum(imgy .^ 2));
      imgxx=filter2(F1,imgx);
      imgxy=filter2(F2,imgx);
      imgyx=filter2(F1,imgy);
      imgyy=filter2(F2,imgy);
      K=sum(sum(imgxx .^2)) + sum(sum(imgxy .^2)) + sum(sum(imgyx .^2)) + sum(sum(imgyy .^2));
      inS=K/C;
    endfunction

使い方

    im=imread(適当な画像);
    [inS C K]=instability(im) //1チャネル画像
    [inS C K]=instability(im(:,:,2)) //カラーで緑を解析