« 拡大縮小アルゴリズム | メイン | 拡大縮小アルゴリズム(バイキュービックとLanczos) »

拡大縮小アルゴリズム(平均画素法)

 今回実装した中でこれが一番大変だった。

 平均画素法は、縮小だけであれば多分ちょっとした計算で出せる。バイリニアほど簡単じゃないけど。
 けれどアフィン変換を使って縮小するとなると、話は別。
 真面目にサンプリングする必要が出てくる。

 こうなると、比率次第でサンプリング量が発散する。
 例えば 1000pixel を 999pixel にするには 999000pixel のサンプリングが必要で、こいつをどう押さえ込むかがカギ。

 大分悩んだけど、要するにこの方法もサブピクセルを求めている訳であるから、比率とはつまりピクセルの分割数になる。
 ってことは、分割数にリミッタを設けてしまおう、と思いついた。どうせ元画素に 1pixel 以上の解像度は無いのだから、999 分割しても 10 分割しても、そう大きく違いは無い。

 なら仮にリミッタが 10 分割なら、初めから 10 分割して縮小するコードを書けばいいじゃん、となる。フォントのアンチエイリアスみたいに。
 それで正しいけれども、そうはしない。

 何故ならこの方法は最小公倍数を求めているから。
 つまり、目的を遂行するにあたって最適解が得られているので、比率が 2:1 とかなら必ずしも 10 分割する必要は無くて、非常に高速。

トラックバック

このエントリーのトラックバックURL:
http://yoffy.dyndns.org/cgi-bin/mt/mt-tb.cgi/448

コメントを投稿

About

2006年02月02日 13:20に投稿されたエントリーのページです。

ひとつ前の投稿は「拡大縮小アルゴリズム」です。

次の投稿は「拡大縮小アルゴリズム(バイキュービックとLanczos)」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Powered by
Movable Type 3.37