(農業)情報工学・課題 (2016/12/08)

【注意】

Mac環境でも、Windows環境でも、ij.jarが動作します。今回の講義はMac環境で行います。ImageJのソフトは、前回と同じく、ダウンロードサイトから、Platform Independentをダウンロードして利用して下さい。

今回の講義では、先週に引き続き画像処理の基本的な手法について学んだ後、実際の画像処理のいくつかの手法を試す。

画像処理入門(2)

ヒストグラムとダイナミックレンジ
画像のヒストグラムは、各成分値を持った画素が、画面上に何点存在するかを示した物である。ヒストグラムからは、画像のさまざまな特徴を読み取ることができる。また、ヒストグラムを操作することによっても、各種の画像処理を行うことができる。
それでは、ヒストグラムを表示して、次の処理を行ってみよう。

前回の課題で用いた画像のヒストグラムは次の通りである。(Analyse->Histgram)
Histogram_of_leafBW.gif
ここに見るように、この山の両端が十分にダイナミックレンジ(0~255)を活用していない。そこで、ダイナミックレンジの校正を行う。
具体的には、Image->Adjust->Brightness/Contrastで、行う。
Autoボタンを適用後、Applyボタンを押す。それによって、ダイナミックレンジが拡張された画像となる。しかし、この画像のヒストグラムは、次のようになっている。
Histogram_of_leafBW-2.gif
このヒストグラムからは、元の画像の階調を、無理矢理引き延ばした事が読み取れてしまう。(どうして?)
以上の操作を、各人、自分で試みること。
ここで、ヒストグラムから読み取れる、別の情報を見てみよう。(サンプルはカラーであるが、原理は同じ)
この画像は、明るい方でクリッピングして(切れて)いる例である。ヒストグラムは、次のようになっている。
seed_in_white
また、これは、逆に暗い方にシフトしている。
umiya_in_dark
これらの画像も、ダイナミックレンジの校正で、多少の細部を引き出すことができる。ー>やってみよう。
フィルタ処理
前回、デジタル画像の基礎はピクセル毎に値を持った一種の行列(配列)であることを説明した。したがって、画像の収納されている行列に対して演算を行うことによって画像処理を行うことができる。その処理のことを、フィルタ操作と呼ぶ。つまり、元画像に何らかの処理を行って、結果画像を得るのである。
ここでは、中央の画素に対して、周囲の画素(8近傍)の値を用いて、フィルタリングする様子を例示したものである。
11 12 13
21 22 23
31 32 33
1 2 3
4 5 6
7 8 9
-- -- --
-- 26.13 --
-- -- --
元の画像(中央の値22に注目) フィルタリング値 フィルタリング後の数値
11x1 + 12x2 +13x 3 +21x 4 +22x 5 + 23x6 + 31x7 + 32x8 + 33x9 = 1176
1176 / 45 = 26.13
通常のフィルタの場合、元画像値と返還後の値の平均値が等しくなるように「正規化」する。即ち、このデータの場合、、1+2+3+...+9 = 45なので、単純にフィルタを適用すると、計算結果の画像値が45倍になってしまう。従って45で割る。そうする事によって、フィルタリング後の画像データ値のレンジ(0-255)は、元画像のデータ値のレンジと同じとなっている。

それでは、そういった何種類かの画像処理を具体的に行ってみることとする。
ノイズ除去手法
平滑化とは、ノイズの含まれているような画像に対して、近傍の画素の値に特定の重みを与えて、画素の内容をなめらかにすることである。移動平均法とも呼ばれる。ノイズの発生する原因はさまざまであるが、一例をあげると、テレビ画像の走査線、解像度のミスマッチ、センサの限界などである。
この画像は、花火の画像であるが、デジタルカメラ特有のノイズ(白いドット)が発生している。このノイズの除去を試みてみよう。
ImageJにおいて、平滑化はProcess->Smoothで実行できる。しかし、今回は自分でフィルタを定義して適用するため、Process->Filters->Convolveで定義する。最初に適用するフィルタは、下のSmooth-Aである。ここでは、画素の8近傍を平均的に適用し中央部(もとの画像)に大きめの値を適用している。これによって、元の画像をあまりぼやかさずに平滑化可能である。
一方、Smooth-Bは、元の画像をかなりぼやけたものにしてしまう。しかし、一方でノイズ除去効果は高い。実際の解析では、さらに中央の値を変化させ、画像の変化度合いとのかねあいで係数を決定する事が可能である。ー>いろいろと変化させて、やってみよう。 なお、フィルタの適用は、Previewをチェックすることによって、効果を見る事ができる。
※なお、ImageJでは、ここに示した3x3画素だけでなく、5x5,7x7(奇数に限る:何故?)といったフィルタの適用も可能である。
Smooth-A Smooth-B
ディアンフィルタは、移動平均法と同様に3x3のマトリックスを用いるが、その中の中央値(メディアン値=5番目の値)を、そのピクセルの代表値として選択する手法である。ここでは、Process->Filters->Median (radiusは1.0で良い)を選択することで実行できる。ー>やってみよう。

先鋭化処理
先鋭化処理(Sharpen)は、画像の持つ情報から、人間の目にとらえやすいはっきりした情報を抽出するために行われる。この処理も、自作のフィルタカーネルを書いて使うことが出来るので、下に示すSharpen-A、Sharpen-B等を行ってみる。(Sharpen-Aは、Process->Sharpenに相当する。)
これ以外にも、中央部の数値を変更すると、どのような効果が得られるかを確かめてみる。また、それは何故か?を考えてみる。ー>やってみよう。
※ 画像データは、これまでのサンプル(タバコの葉など)や、image-Jに入っているsampleデータ(boats, leaf, lena など)を利用して実行すると良い。
−1 −1 −1
−1 12 −1
−1 −1 −1
−1 −1 −1
−1 9 −1
−1 −1 −1
Sharpen-A Sharpen-B

エッジ検出
エッジ検出(Find Edges)は、画像の濃淡の差が大きくなる点に注目し、そこをエッジと認識して強調する処理である。濃淡の差(濃度勾配)とは、位置(x座標値)が変化すると、値(y座標値)が変化すると、考えることができる。
この処理も、先ほどと同じく自作のフィルタを用いることが出来るの。下に示すEdge-A(x,y), Edge-B(x,y),Edge-Cを行ってみる。
これ以外にも、中央部の数値を変更すると、どのような効果が得られるかを確かめてみる。また、それは何故か?を考えてみる。ー>やってみよう。
1 0 −1
1 0 −1
1 0 −1
1 1 1
0 0 0
−1 −1 −1
1 0 −1
2 0 −2
1 0 −1
1 2 1
0 0 0
−1 −2 −1
0 1 0
1 −4 1
0 1 0
Edge-A(Prewitt-x) Edge-A(Prewitt-y) Edge-B(Sobel-x) Edge-B(Sobel-y) Edge-C(Laplacian)

FFTについて
FFTは、コンピュータを用いた画像処理の重要な手法である。ここでは、その概要を示す。

今回の課題
画像空間フィルタに関する以下の課題について、簡潔に論述せよ。
  1. ノイズ除去において、移動平均法とメディアン法の特徴を述べよ。
  2. 先鋭化処理において、中央部の数値を変化させた時の特徴を述べよ。
      また、その理由について考察せよ。
  3. 次のエッジ検出アルゴリズムを適当な画像(例:file-open-sample画像のBoatsとBridge)に適用し、その特徴について、得られた結果を考察せよ。
      ・Prewitt(x, y)、Sobel(x, y)、Laplacian
  4. (応用):FFT
    サンプル画像(BoatsとBridge)について、低周波成分と高周波成分のバンドパスフィルターをおこない、その結果を考察せよ。
以上をITC-LMSを用いて提出する。
健闘を祈る。
次回は、カラー画像の取り扱いとImageJのマクロに取り組む。また、リモセンのデータについても紹介する。
FFTに関する説明のリンク:新潟大医学部の画像情報処理からー>空間画像情報

Valid HTML 4.01 Transitional