2009年1月4日日曜日

スケーリングについてのお勉強

スケーリングは元画像を拡大/縮小して画サイズを変更する処理。
画素を補間して現画像を拡大/縮小する。

ダウンスケールする場合、折り返し歪(エリアシング:aliasing)が発生する。
折り返し歪が発生しないようにスケーリング処理の前にローパスフィルタ(LPF)を
かまして高周波成分を落とし、エリアシングを避ける処理を行う。

画素補間するために一般的には以下の補間処理が用いられているようだ。
とりあへず補間処理の概要だけ。
  • リニアレスト-ネイバー法(nearlest-neighbor filtering)
   拡大する場合は画素をコピーする。
   縮小する場合は一定間隔で    画素を捨てる。(ダウンサンプリング)
   3倍するなら単純に1画素を3つ並べる。1/3にするなら3画素のうち2画素
   を捨てる。
   処理は単純で軽いが画質が良くない。
  • バイリニア法(bilinear interporation filtering)
   2つ(縦と横)の線形補間を使って画素を補間する。
   補間する画素の周り4点の画素を使って画素を作る。
  • バイキュービック法(bicubic interporation filtering)
   補間する画素の近傍16個(4x4)の画素を使って画素を作る。
   補間する画素の周り4点の距離d から重みwを計算する。
   その重みを近傍16個に掛けてそれぞれを足して画素を作り出す。(3次補間)
   重みの演算式は以下のとおり
   ----------------------------------
   (0<=d<1)
    w = 1 - 2 * d^2 + d^3
   (1<=d<2)
    w = 4 - 8 * d + 5 * d^2 - d^3
   (d<=2)     w = 0
   ----------------------------------
  • 平均操作法
   画素の平均値を用いる。
   1/3にするなら9画素(3x3)の平均値とって1画素を作る。
   平均処理が LPF に相当し、折り返し歪を抑圧する効果がある。
   縮小アルゴリズム。
  • 平均画素法
   スケール前後の最小公倍数をとり、いったん拡大して縮小する
   アルゴリズム。
   これもアルゴリズム自体が LPF に相当するので折り返し歪を抑圧する
   効果がある。

   例えば 1920->720 に水平に縮小する場合、
   (1)最小公倍数とる。5760となる。
   (2)1920 を 3倍にする(1画素を3つ並べる)。5760画素となる。
   (3)拡大された画素を 720 にダウンスケールにするため 1/8 にする。
     8画素の平均をとって1画素作る。

この中では平均画素法が一番綺麗と言われてる。
次にバイキュービック、その次がバイリニア。
だんだん画像が鮮明でなくなっていくようだ。

まるもさんのページを拝見させて頂くと Lanczos フィルタなるものが
一番綺麗なスケーリングアルゴリズムだそうだ。

0 件のコメント:

コメントを投稿