写真にぼかしを Part2


#wp7dev_jp

さて、写真にぼかしをかけてみましたが、広範囲のぼかしをかけると、計算量が増え処理速度の問題が出ます。Blur=2くらいでは1,2秒ですが、 Blur = 6では約5秒、そして10では訳12秒かかります。ではどうしたらいいでしょう?

正直に言えば、隣り合った点はそれほど大きな色の変化をしていません。ですから平均をとるときに1,2個間引いたとしてもそれほど大きな変化は出ないでしょう。

image

image

image

ではどのくらい間引くとどのくらい画像に影響するのか?

下記は Blur 10の設定で、間引きなし、2ドット毎にサンプリング、3ドットごとにサンプリング、5ドットごとにサンプリング、としたものです。

image image 

imageimage

見ると、さすがに5ドットおきでのサンプリングはかなり画像が荒れてきます。

ちなみに、それぞれの処理時間は 12秒、3.5秒、2秒弱、1秒というくらい。これを見ると3ドット毎にサンプリングするとよさそうです。

実装(差分)

ということで処理の変更はシンプルです。for句の最後が、y++ではなく y+=3です。

    :
int G = 0;
int B = 0;

for (int y = -1 * blur; y <= blur; y+=3)
{
    for (int x = -1 * blur; x <= blur; x+=3)
    {
        int tx = ox + x;
        int ty = oy + y;
             :

こうして、画像の低下を最低限に抑えながら、返還のパフォーマンスを稼ぐことができました。ちょっとしたアイディアですが、塵積で、かなりの時間短縮になります。

Comments (0)

Skip to main content