2011年4月30日土曜日

画像をぼかす。。とは?3

ということで、【キレイにボカす】ということで、ガウス消去ガウスぼかしをいってみましょう。
まず、これ↓がガウス分布というやつです。
どうやってつくったかっていうと、

double ar = 1.0; // 1.0  2.0  2.8
for(int a = 0;a<100;a++){
    double aa = (double)a / 10.0;
    double gausu = exp( - (double)aa * aa / (2.0 * ar * ar ) );
    printf("gausu:%.6f\n",gausu);
}
こんなことを書いて、テキストファイルにリダイレクトして、openOfficeの表計算に貼って、
グラフ化して、でもこれだとグラフは右半分だけだから、
グラフィック系S/Wで対象な図形にしたわけです。

これがどう関係するかということですが、
前回は、上下左右のピクセルの色をとってきて、それを平均化することで、
ぼかしてたわけです。
これを、上下左右を**ピクセルづつとってきたときに、
遠い方のピクセルの影響度を少なくしようという方法です。
上の分布のように、中心を100%として、中心のピクセルの影響度を100%としたときの、
周囲のピクセルの影響度を減らしていくのです。

この場合も、前回と同様に、X方向にガウスぼかしをしたあと、
Y方向にガウスぼかしをすることによって、
上下左右を一度にぼかした結果と等価になるのです。
なぜかはここでは問題ではないのです。

ということで、やってみると、、、





やっぱりキレイにボケてます。
ちなみに前回のガウスぼかしじゃないやつ↓


ただし、欠点もないわけではなく、同じようなボケ精度(どのくらい判別できないか)
という点で考えると、ガウスぼかしの方が範囲を広くとらないと、
シャープになってしまいます。
よって範囲を広く取ると計算量が増えるわけですね。
もちろん、部分的に使うという使い方もできるので、
そうすれば計算量はたいして増えませんよね。

まぁでも、用途によってそこらへんは使い分ければいいわけなので、
この話はこのくらいで。

ちなみに、逆ガウスぼかしをしてみたところ、、
(※離れるほど重みを増やす)
そもそも何をやってるかわからなっちゃいましたね
↓↓↓↓↓






0 件のコメント:

コメントを投稿