GLSLで画像のぼかし、モザイク


ぼかし処理の中でも何気によく使われるモザイクを作ってみます。

先の2つと比較すると見えちゃいけないものの処理なんかに使うやつです。

GLSLぼかしシリーズ

モザイクの基本

モザイク処理自体は簡単にできます。

モザイク数をBとしてuvBxBに分割しています。

 

モザイク数を変えてみると画像はこうなります。

20, 10 ,5

式を見てわかるように分割した領域の左下座標の色がサンプリングされます。

この画像を見てもブロック数に関わらず左下は[0, 0]の色になっています。

 

ほんの少し改良して領域の中央からサンプリングしてみます。

ブロック左下から領域の半分動かせばいいからこんな感じ。

まぁ大きな変化はないですね。

処理的にはこちらの方が自然だと思います。

 

サンプリングをブロック内の平均値にすることなんかも思いつきますが、ループ処理で変数条件が使えないのと処理がめちゃくちゃ増える(最悪で画素数2)ことを考えてやめておきます。

実用モザイク

座標とサイズを指定して円状にモザイクを書ける処理を考えます。

 

同じように任意の長方形にモザイクをかけてみます。

ps(左下)とpe(右上)を指定してモザイクをかけています。

 

条件式は少し戸惑うかもしれませんが中身は以下のような長方形の中であるかどうかの判定と同じです。

ps<peである限り(pe-uv)(uv-ps)が両方マイナスになることはないので乗算した結果がプラスなら範囲の中にあるということになります。

 

円と組み合わせるとこんな感じ。

 

同じように条件を変えていけばどんなモザイクでもかけることが出来ます。

顔認識なんかと組み合わせると良さそうな気がします。


コメントを残す

メールアドレスが公開されることはありません。