目的と概要
自分で撮影したディジタル画像に雑音を付加し、雑音除去などの簡単な画像処理手法を学ぶ。
実験内容
(Ⅰ)雑音の付加
- Rand()関数を用いて、0~1の値をとる一様乱数を10000個発生させ、0.01刻みでヒストグラムを作成した。
- rand()関数を用いてガウス雑音を発生させるプログラムを作成し、その頻度分布のヒストグラムを作成した。
- 128*128のrawデータに対して一様雑音を付加した画像を作成した。また、ヒストグラムを生成し、元の画像のそれと比較した。このとき最大値や平均値をいくつか変えて変化を見た。
- 上記と同様の方法でガウス雑音を付加した。またパラメータを変えて変化を見た。
- 上記と同様の方法でごま塩雑音を付加した。またパラメータを変えて変化を見た。
(Ⅱ)画像の雑音の除去
先に作成した3種類の雑音付加画像に対し、2種類の方法で各画像の雑音除去をした。
- 線形フィルタリングによる雑音除去
3*3で重みなしの以下のマスクを適用して除去した。
1/9 | 1/9 | 1/9 |
1/9 | 1/9 | 1/9 |
1/9 | 1/9 | 1/9 |
同様に5*5でも各重みを1/25として作成した。
また以下のようなマスクで重みありのマスクを適用し雑音除去を行った。
1/16 | 2/16 | 1/16 |
2/16 | 4/16 | 2/16 |
1/16 | 2/16 | 1/16 |
- 非線形フィルタリングによる雑音除去
3*3の領域内の画素値を大きい順に並べ5番目の中心画素の値を適用し雑音除去を行った。また5*5でも同様にしてその変化をみた。
(Ⅲ)画像の輪郭抽出
128*128の画像、3種の雑音を付加した画像に対してPrewittオペレータとSobel
オペレータの2種類を用いてマスク処理を行い、輪郭抽出をした。
- Prewittオペレータでは以下の種類のオペレータを使い、各々の結果の和の絶対値をとり加えることでできた。
-1/3 | 0 | 1/3 | -1/3 | -1/3 | -1/3 | |
-1/3 | 0 | 1/3 | 0 | 0 | 0 | |
-1/3 | 0 | 1/3 | 1/3 | 1/3 | 1/3 |
- SobelオペレータはPrewittオペレータに重み付けしたものである。以下のオペレータを適用した。
-1/4 | 0 | 1/4 | -1/4 | -2/4 | -1/4 | |
-2/4 | 0 | 2/4 | 0 | 0 | 0 | |
-1/4 | 0 | 1/4 | 1/4 | 2/4 | 1/4 |
(Ⅳ)画像の輪郭強調
- 原画像に対し以下のようなオペレータを用いることでラプラシアン画像を作成した。
0 | 1 | 0 |
1 | -4 | 1 |
0 | 1 | 9 |
この画像をα倍して現画像から差し引くことで輪郭強調画像を作成した。
またαの値を変え、強調のされ方について比較した。
- アンシャープマスクによるコントラスト強調法で輪郭強調した。
原画像を平滑化し、原画像からそれを引いたものをβ倍したものを原画像に加えることで輪郭強調ができた。また①と同様にβの値を変え、その変化をみた。
結果
原画像とそのヒストグラムを以下に示す。


一様雑音付加画像のヒストグラムを以下に2種類示す。


ガウス雑音付加画像のヒストグラムを以下に2種類示す。

ごま塩雑音付加画像を以下に2種類示す。








考察
初めに、雑音付加画像についての考察をする。一様雑音付加画像では発生頻度10%と30%の2種類を作成した。10%(図4)と30%(図5)を比較してみると、当たり前だが30%の方が雑音が多く、汚いことが分かる。原画像のヒストグラム(図2)と発生頻度10%、30%の一様雑音付加のヒストグラム(図4、図5)を比較すると、原画像では濃度値10あたりと濃度値130~150あたりで極端に頻度が高かったが、一様付加画像ではその部分の頻度が減って、頻度が高かった周辺の低い頻度が増えていた。このことから、原画像に雑音が付加され、元の色が違う色に変化していたことが分かる。そのため、30%になると10%ときと比べさらに低かった頻度が増えるので画像が汚くなる。ガウス雑音付加画像では発生頻度10%と30%の2種類を作成した。10%(図9)と30%(図10)を比較してみると、これももちろん30%の方が汚い。一様雑音では付加される濃度値の範囲が-30~30であったが、ガウス雑音は、標準偏差が25のため、-26以下や26以上の濃度値の雑音も付加される。そのため、極端な色の雑音が付加されるため、一様雑音よりガウス雑音の方が荒い画像となる。ガウス雑音付加画像のヒストグラム(図11、図12)は一様雑音付加画像の場合(図6、図7)と同じことが言えるが、一様雑音より付加する雑音の濃度が0になることが多いため、変化する濃度値がすくないことがいえる。このことは図11、図12を見ると濃度値0の値が図6、7のときと比べはるかに多いことで分かる。ごま塩雑音付加画像では発生頻度10%(図13)と30%(図14)の2種類を作成した。ごま塩雑音付加画像では雑音が白と黒の2色のみのため、原画像に付加すると一様雑音付加画像やガウス雑音付加画像と比較すると比べ物にならないほど汚い画像になる。また、白と黒の2色のみが雑音として発生しているため、ヒストグラムでは原画像でのヒストグラムで表された頻度が減り、0と255の濃度値が増えていることがわかる。また、発生頻度10%と30%を比較すると、発生頻度を3倍にしているため、濃度値0と255の和が発生頻度30%のヒストグラムでは10%のヒストグラムの3倍になっていることも分かった。
次に線形フィルタリングによる雑音除去について考察する。今回、線形フィルタは3×3(重みなし)、5×5(重みなし)、3×3(重みあり)の3種類を用い、一様雑音(図17~図19)、ガウス雑音(図20~図22)、ごま塩雑音(図23~25)の除去画像を作成した。まずは一様雑音の除去画像同士を比較した。図17の3×3(重みなし)と図19の5×5(重みなし)を比較すると、5×5(重みなし)の画像の方が全体的にぼやけた画像となった。これは、3×3(重みなし)と比べて5×5(重みなし)の方がフィルタリングにおいて考慮する範囲が広いため、原画像に近い画素の値が入りにくいと考えられる。次に図17の3×3(重みなし)と図19の3×3(重みあり)を比較すると、重みありの方がはっきりと映った。これは、原画像のある9画素のうち中央の画素に重みを置くことによって残りの8画素から影響が少なくなるためだと考えられる。これはガウス雑音においても同じことが言える。最後にごま塩雑音の除去画像を観察した。ごま塩雑音でも一様雑音、ガウス雑音の除去での考察と同じことが言えるが、ごま塩雑音の除去の場合は、雑音が白と黒の2色のため、図23の3×3重みなしと図25の3×3の重みありでは、はっきりと雑音が見えてしまい、あまり除去できていないことがわかる。以上のことから、3×3(重みなし)はフィルタリングした画像の画素のすべてに平均した値が入るので雑音がぼやけるが、原画像もぼやけてしまい、3×3(重みあり)の場合は重みがあるとこに原画像の近い画素値が入ると原画像に近い値がはいるが、逆に雑音が入ると雑音が強調されてしまうので雑音の部分がわかりやすいフィルタリングした画像になってしまい、5×5(重みなし)の場合は3×3(重みなし)のときより雑音がより一層ぼやけてしまうが、原画像も3×3のときよりぼやけてしまうということがいえる。また、3×3(重みあり)は3×3(重みなし)と5×5(重みなし)と比べて一様雑音、ガウス雑音の除去には適し、ごま塩雑音では線形フィルタによる雑音除去はあまり適していないことが分かった。
次に非線形フィルタリングによる雑音除去について考察する。今回、非線形フィルタは3×3、5×5の2種類を用い、一様雑音(図26、図27)、ガウス雑音(図28、図29)、ごま塩雑音(図30、図31)の除去画像を作成した。一様雑音、ガウス雑音、ごま塩雑音の3種類において、非線形フィルタによる雑音除去はどの図においても3×3(図26、図28、図30)よりも5×5(図27、図29、図31)の方が図の主に一番上の真ん中にある物体と図の下にある横線ぼやけているのが分かる。また、ごま塩雑音は、線形フィルタ(図23~図25)では雑音が消えなかったのに対し非線形フィルタ(図30~31)では雑音がほとんど消えたのも分かる。非線形フィルタによる雑音除去とは、3×3または5×5の領域内の画素値を大きい順に並べ中央値を中心画素の値とする、というものだった。つまり、中央値に雑音が入りづらくなるため、雑音が消えたと考えられる。また、3×3よりも5×5の方が領域が広いため中央にくる値の候補が多くなるため、ぼやけるということも考えられる。これらのことから、線形フィルタと非線形フィルタでは非線形フィルタの方が雑音除去に適していることがわかった。また、図30と図31を比べてみると図30にわずかながら、白いもの、つまりすこし雑音が残ってしまっている。これは3×3の方が5×5より大きい順に並べるられる個数が少ないので、今回のこの場合は非線形フィルタをしたときに255が3×3の範囲で5個以上出てきてしまい、中央値が255になってしまいそれが中央画素の値となってしまったため出てきてしまったものと考えらえる。
次に輪郭抽出について考察する。今回はPrewittオペレータとSobelオペレータを用いて実験を行った。これらは、画素値の高低差が激しいこと、つまり今回の図でいうと黒いズボンと背景の境目であるとこを重みのないPrewitt、重みのあるSobelで横方向での計算の絶対値と縦方向での計算の絶対値を足すことで輪郭をだしている。また、雑音がある場合は雑音も抽出されてしまう。特にごま塩雑音を付加した画像は雑音の輪郭がとてもはっきりとしてしまうため、ズボンの輪郭の部分が見にくくなってしまった。PrewittオペレータとSobelオペレータにおいて、違いがよくわかるのはごま塩雑音を付加した画像の輪郭強調画像である。Prewittオペレータでは重みがないため、強調された雑音を見ると角が強調され白くなって、Sobelでは重みがあるため、強調された雑音を見ると中央が黒く周りが白くなっていること分かった。
次に輪郭強調について考察する。今回はラプラシアンを用いた方法とアンシャープマスクを用いた方法で実験を行った。ラプラシアンとは二次微分のことである。白黒がはっきりしているところは画素の濃度差が大きい。これを微分すると増減がわかる。推移は最初に増加し頂上に達した後減少し0になる山型になる。これを微分すると、最初増加しその後減少し一回微分の山の頂上時に0となり、そのまま減少しその後また増加し0となるような推移になる。これにより強調される。これを原画像から引くことにより濃度値が低い方はより減少し高い方はより増加する。輪郭強調画像の作成で使用した式は以下の様になる。
(原画像)-α*(ラプラシアン画像)
図46、図47、図48を比較して輪郭が強調されていくのがわかる。これはαの値を増やすことにより強調度合も高くなる。
アンシャープマスクを用いた方法は、原画像からぼけ画像を引き、それを原画像に付加することにより作成される。ぼけ画像は原画像と比べて輪郭がほとんどないため、原画像からぼけ画像を引けば、輪郭で出て、それを原画像と付加すれば輪郭が強調できる。式は以下の様になる。
(原画像)+β*[(原画像)-(ぼけ画像)]
図49、図50、図51を比較して輪郭が強調されていくのがわかる。これはβの値を増やすことにより強調度合も高くなる。
コメントを残す