Processing3で平滑化(ガウシアンフィルタ)補足編

Processingをいじっていた時に見落としていたことがあったので紹介します。以前の記事の補足です。

以前紹介した方法でProcessingでガウシアンフィルタをかけるときはウィンドウ全体に平滑化フィルタをかける処理を行っていました。

PImage img;
void setup() {
   size(512, 512);
   img = loadImage("hogehoge.jpg");
   image(img, 0, 0, 512, 512);
   filter(BLUR,11);
 }
void draw() { }

しかし、実はPImage型のメンバ関数としてもfilter()関数があるようです。これを使うことで、ウィンドウ内のすべての画像を平滑化するのではなく、指定した画像だけガウシアンフィルタをかけることができるようになります。少し改訂したソースコードを次に挙げます。

PImage img;
void setup() {
   size(512, 512);
   img = loadImage("hogehoge.jpg");
   img.filter(BLUR,11);
   image(img, 0, 0, 512, 512);
 }  

void draw() { }

以前のソースコードは画像を表示してウィンドウ内のすべてのものにガウシアンフィルタをかけるものでしたが、改定後は画像データにガウシアンフィルタをかけて、その画像を描画するという処理に変更しています。

こちらの方がいろいろ応用が利いてスマートな記述かもしれません。最後に処理結果を載せておきます。

lena

20151216_2

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Scroll to top