主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

ノイズ除去

デジタルイメージではさまざまなノイズが発生しがちです。ノイズはイメージの作成過程で発生したエラーの結果であり,実際の被写体の本当の強度を反映しないピクセル値です。イメージの作成方法によって異なりますが,イメージにノイズが混入される原因にはいくつかあります。次に例を示します。

  • イメージがフィルム上の写真からスキャンされる場合,フィルムの粒子がノイズ源になります。フィルムのキズもノイズの原因になります。スキャナ自身がノイズの発生源になる場合もあります。

  • イメージが直接デジタル形式で収録される場合,データの収集(たとえば,CCDカメラ)機能がノイズの発生源になります。

  • イメージデータの電気的な送信でもノイズが混入します。

また,上記の問題の影響をシミュレーションするために,ツールボックスには各種のノイズを"付加"できる関数imnoiseが含まれています。ここで紹介する例では,この関数が使用されます。

線形フィルター処理によるノイズの除去

線形フィルターを使用して除去できるノイズがあります。平均化フィルターまたはガウスフィルターのようなフィルターは,この目的に適しています。たとえば,平均化フィルターは,写真から粒子ノイズを除去するときに役立ちます。各々のピクセルが,その近傍の中のピクセルの平均で設定されているので,粒子が原因となる局所的な変動が減少します。

関数imfilterを使用する線形フィルター処理方法の詳細については,空間領域でのイメージのフィルター処理とはを参照してください。

平均化フィルターとメディアンフィルターを使用したノイズの除去

この例では,比較のために平均化フィルターとメディアンフィルターを使用してイメージから”ごま塩ノイズ”を除去する方法を説明します。この2種類のフィルター処理はいずれも出力ピクセルの値を,対応する入力ピクセルの近傍の平均ピクセル値に設定します。しかし,メディアンフィルター処理を使うと,出力ピクセルの値は,平均ではなく,近傍の”中央値”になります。中央値は,平均に比べて”外れ値”にあまり敏感ではありません。メディアンフィルター処理は,イメージの鮮明さを劣化させないで,これらの外れ値を取り除くことができます。

メモ:メディアンフィルター処理は順序付き統計フィルター処理の特殊なケースで,ランクフィルター処理とも呼ばれます。順序付き統計フィルター処理の詳細については,関数ordfilt2のリファレンスページを参照してください。

イメージをワークスペースに読み取って表示します。

我= imread (“eight.tif”);图imshow(我)

图中包含一个坐标轴。轴包含一个image类型的对象。

この例では,イメージにごま塩ノイズを付加します。この種のノイズは,黒と白(そのデータ範囲での外れ値)がピクセルにランダムに設定されたものです。

J = imnoise(我的盐和胡椒, 0.02);图imshow (J)

图中包含一个坐标轴。轴包含一个image类型的对象。

ノイズを含むイメージJに平均化フィルターを適用し,結果を表示します。この例では3行3列の近傍を使用しています。

Kaverage = filter2 (fspecial (“平均”3), J) / 255;图imshow (Kaverage)

图中包含一个坐标轴。轴包含一个image类型的对象。

次は,メディアンフィルターを使用してノイズを含むイメージJをフィルター処理します。この例でも3行3列の近傍を使用します。フィルター処理された2つのイメージを並べて表示し,比較します。medfilt2の方が,コインのエッジのボケが少なく,ノイズの除去に優れています。

Kmedian = medfilt2 (J);imshowpair (Kaverage Kmedian,“蒙太奇”

图中包含一个坐标轴。轴包含一个image类型的对象。

適応フィルター処理によるノイズの除去

この例では,関数wiener2を使用して,ウィーナーフィルター(線形フィルターの1種)を適応的にイメージに適用します。ウィーナーフィルターはイメージの局所分散に適応します。分散が大きい部分では,wiener2はあまり平滑化を行いません。分散が小さい部分では,wiener2は,さらなる平滑化を行います。

このアプローチは,しばしば線形フィルター処理よりも良い結果を出します。適応フィルターは,同種の線形フィルターよりも選択的で,イメージのエッジやその他の高周波数部を維持できます。さらに,設計の手間がかかりません。関数wiener2は,すべての予備的な計算を実行して,入力イメージに対するフィルターを実装します。ただし,wiener2は線形フィルターよりも計算に時間がかかります。

wiener2は,ノイズがガウスノイズのような一定パワー(“ホワイト”)の加法性ノイズの場合,最も効率よく機能します。次の例では,ガウスノイズを付加した土星のイメージにwiener2を適用します。

イメージをワークスペースに読み取ります。

RGB = imread (“saturn.png”);

イメージをトゥルーカラーからグレースケールに変換します。

I = im2gray (RGB);

ガウスノイズをイメージに付加します。

J = imnoise(我“高斯”, 0, 0.025);

ノイズを含むイメージを表示します。イメージがかなり大きいので,イメージの一部のみを表示します。

imshow (J (600:1000 1:6));标题(“添加高斯噪声的部分图像”);

图中包含一个坐标轴。带有标题的轴带有添加高斯噪声的图像的部分包含一个类型为Image的对象。

関数wiener2を使用してノイズを除去します。

K = wiener2(J,[5 5]);

処理後のイメージを表示します。イメージがかなり大きいので,イメージの一部のみを表示します。

图imshow (K (600:1000 1:6));标题(“用维纳滤镜去除噪点的部分图像”);

图中包含一个坐标轴。带有标题的轴,Wiener Filter去除噪点的图像的一部分包含一个类型为Image的对象。

参考

|||||

関連するトピック