無料ブログはココログ

« 肉丼祭り | トップページ | VisualStudio2010 と MFC リボン »

2009年11月 4日 (水)

Lanczos 関数よるイメージの拡縮

ランツォシュ関数と読むらしい ?

今関わっている仕事で画像の縮小処理が必要になるっぽいので試験的に作ってみた。思い返してみれば今まで画像扱う仕事が多かったけど拡大縮小に関しては、表示上分かればいい程度なので StretchBlt でガッっとやって終わりだった。今やっている仕事は縮小した画像も処理に使用するので質を求められる。といっても縮小した画像がマスターデータとはならないので、StretchBlt みたいに画素が飛ばなければよい。しかも画像と言ってもデータ構造がちょっと違うので、ライブラリが使用できないので独自に実装しなければならならい。

アルゴリズムとかは他に載ってるのでそれを参考に。

とりあえず、速度とか何も考えないで作って、480*480 ピクセルの画像 50% に縮小する処理を n=2 で試したところ、720 ms かかった。CPU は Core2 の E6700 2.66GHz。

下図が元絵。

Photo

んで Lanczos 関数で処理したもの。

2

ん~、遅すぎる。最適化とかナシで組むとこんなものなのだろうか ? 統計がないからさっぱり分からない。Photoshop とかで縮小処理すると一瞬で終わるけどどうやってるんだろうね。

処理結果はうまくいってるっぽいけど、なんとなく横になんか走ってるような気がしなくもない。

あとは高速化だな~。どうしよ。

OpenMP ?
SSE ?

OpenMP で並列化したら、平均で 400mm、約 1.8 倍・・・、いいね。OpenMP 使うと SSE 使えないと思う。なのでアルゴリズムで最適化できればもっと早くなるのかな。

SSE 使って最適化の場合どうやればいいのだろう。方法が思いつかない。

続編 : Lanczos 関数よるイメージの拡縮の最適化

« 肉丼祭り | トップページ | VisualStudio2010 と MFC リボン »

プログラミング」カテゴリの記事

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/132893/46758903

この記事へのトラックバック一覧です: Lanczos 関数よるイメージの拡縮:

« 肉丼祭り | トップページ | VisualStudio2010 と MFC リボン »