2011-07-27 36 views
5

私はちょうどImage smoothingを記述する推奨リソースがあるかどうか尋ねたいと思う。画像処理 - スムージング

ありがとうございました。

+4

「イメージスムージング」は多くのことを意味します。(通常はある種のローパスフィルタですが、まったく別の操作を記述するために使用することがあります)何をしたいですか? –

+5

http://ja.wikipedia.org/wiki/Gaussian_blurから始めます –

答えて

10

コメントした人の中には、イメージのスムージングが多くのことを意味するものもあります。主に、誰かが「」という用語を使用すると、またはローパスフィルタがぼやけることになります。これらは通常同義語として使用されます。ぼかしのアイデアは、視覚的な存在として私たちに直感的ですが、実際にはどういう意味ですか?

焦点が外れたカメラレンズを使用すると、オブジェクトから反射した光線が私たちの視界に混ざっていることを意味します。ここで

enter image description here

を表す同様の図はまたは非集中ビジョンぼやけています:これはビジョンを重視を表す画像で聞かせての、デジタルでこの効果を再現するために enter image description here

を画像のすべてのピクセルを取って、そのピクセルとその隣接する8ピクセルの平均で置き換えます。 enter image description here

上記は、7×7の黒い四角内の単一の白いピクセルのイメージです。それは単一の白いピクセルであり、ピクセルの正方形全体ではなく、非常に爆発していることに注意してください。我々は平均化を実行すると、標準の8ビットの画像表現では、これは(つまり元の画素を含むその周囲の3×3の正方形内の全ての画素の平均と各画素を置換されている、以下

 
0 0 0 0 0 0 0 
0 0 0 0 0 0 0 
0 0 0 0 0 0 0 
0 0 0 255 0 0 0 
0 0 0 0 0 0 0 
0 0 0 0 0 0 0 
0 0 0 0 0 0 0 

として表されますまた、我々はこれまでのところ、我々は唯一の整数演算を行ってきたので、

 
0 0 0 0 0 0 0 
0 0 0 0 0 0 0 
0 0 28 28 28 0 0 
0 0 28 28 28 0 0 
0 0 28 28 28 0 0 
0 0 0 0 0 0 0 
0 0 0 0 0 0 0 

上記の数値は、整数であり得るので、のは一貫してみましょう。

これを今の平滑化の多くのように見えますが、のをさせないこと別の例を見てください。以下はシェケです0と255のピクセル値を変更したrboard画像。

enter image description here

さんは今、元のピクセルは、そのようなとして位置づけられている4×4の正方形の平均値で各ピクセルを交換してみましょう:

 
. . . . 
. X . . 
. . . . 
. . . . 

そのため、市松模様のあなたの参照の平均値そのような正方形はそれぞれ255/2 = 127(整数除算)になります。チェッカーボードのピクセルの変更は、ピクセルごとに非常に劇的です。どのピクセルからその隣に行くにしても、可能な限り高いピクセル値から可能な限り低い値になります。これは、という高い周波数のコンテンツとして知られています。平均化するとき、この高周波成分を除去するので、信号処理用語ではハイストップフィルタリングまたは同義語ローパスフィルタリングを実行しています。エッジに奇妙なアーティファクトがあることを心配しないでください。画像の端にフィルタをかけるとピクセルが欠落して平均化されるので、画像以外のものはすべて黒であると仮定しています。

普通のグレースケール画像で同じ種類の平均化を実行しましょう。以下は有名なLennaの画像です。その次に、平均化されたバージョンが7x7平均化マスクを使用しています。 が平滑化されていることがわかりますまたはがぼやけてです。

enter image description here

これは、平均化を介して、平滑化画像の非常に単純化した例でした。平均化は、ローパスフィルタリングの特殊なケースの1つに過ぎません。一般に、我々は、所望のローパスフィルタ効果を達成するために重み付け平均を実行する。さらに読むために、フィルター理論と畳み込みを調べることをお勧めします。

こちらがお役に立てば幸いです。

2

Image Smoothingは、通常Low Pass Filteringまたはgetting rid of the high frequenciesと同義です。


背景 - フィルタリングされているもの:

ほとんどの人は、フィルタリングが直感的であるかを理解。あなたが何かを取ってそれをフィルターに通して何かを取り除くと、フィルターにかけた物質は出力にはありません。画像/ 2dと1dの信号でフィルタリングすることができます。

2dまたは1d画像でフィルタリングを実装する方法は、出力yを作成するために、入力xとフィルタhの畳み込みを行うことです。入力信号xは、Hによってフィルタリングされる方法

void conv(float *x, int x_len, float * h, int h_len, float * y, int y_len) 
{ 
int i; 
register double accum; 
for(i = 0; i < x_len-h_len-1; i++) { 
    accum = 0; 
    for(j = 0; j < h_len; j++) { 
    accum += x[i+j] * h[j]; 
    } 
    y[i] = accum; 
} 
} 

int main { 
float x[] = {...}; 
int x_len = sizeof(x)/sizeof(x[0]); 
float h[] = {...}; 
int h_len = sizeof(h)/sizeof(h[0]); 
float y[x_len-h_len-1] = {0}; 
int y_len = x_len-h_len-1; 

conv(x,x_len,h,h_len,y,y_len); 
} 

お知らせ:ここ

は、私は5分で書いたエラーをチェックしませんでした1Dに畳み込みの例です。その後、出力はyに格納されます。 googleの詳細情報の畳み込みについては。


ローパスフィルタ:

今、あなたは1D信号をフィルタリングする方法を知っていること。ローパスフィルターを使うことができます。ローパスフィルタを実行するには、低い周波数のみを通過させるフィルタhを作成します。最も単純なローパスフィルタは、矩形フィルタh = ones(1,N); h = h ./ N;(matlabコード)です。より複雑なフィルタはガウスフィルタです(これは画像処理でよく使用されます)。Photoshop/Gimpを参照し、 "ガウスぼかし"を探します。無限にローパスフィルタを作成する方法があります。

カスタムローパスフィルタを作成するには、Parks-McClellan_filter_design_algorithmを使用して、任意の特定のローパスフィルタを作成します。詳細については、「ローパスフィルタの作成」についてgoogleを検索してください。あなたは1dに同じことを行うが、あなたがやっているので、毎回あなたがループするための単一のを参照してくださいあなたは(ループのダブルを持っている画像平滑化を行うには

:イメージスムージング - 最後に、あなたの質問に答えるために


2d信号)。

フィルタの作成も同様ですが、1次元配列フィルタhを使用する代わりに、フィルタhが2次元になりました。