次回のCVIM勉強会でmean-shiftについて話すことになってしまったので、理解のためにmean-shiftアルゴリズムを実装してみた。 カーネルは一番簡単なフラットカーネルを利用し、また画像もグレイスケール画像のみを扱うためピクセルの値は[0,256]の一次元データとみなす。 またナイーブな実装だと512*512ぐらいの画像でもすごい時間がかかるので二分探索とFenwickTree(動的に更新する必要はないので別に使う必要なかった、累積和を保存した配列に変更)を使ってグレイスケール画像かつフラットカーネルであることを利用して高速化した関数meanShiftLoopFastを用意した。 元画像は下のようになっている。 bandWidth=10のときは下のようになり、肌の部分が同じ値に収束していることがわかる。 bandWidth=20のときは以下のようになり、やや平滑化されすぎているこ
![mean-shiftを実装してみた - tsubosakaの日記](https://cdn-ak-scissors.b.st-hatena.com/image/square/95ded4cdb9d358c5406fdbca67799d3248ef0d2b/height=288;version=1;width=512/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Ft%2Ftsubosaka%2F20101129%2F20101129233538.png)