SSブログ

楽譜アーカイブアプリ - その19 画像回転 [考え中の問題]

いちおう昨日までの細線化で五線の傾きが検出できる、はずである。今日はそれを知って五線を水平に回転することを考えるが、それにまつわる画像の補間について。

8  画像回転

直線検出ができたら、それが真横になるように回転を行う。画像回転はAffine変換としてOpenCVでもvImageでも機能を持っている。

ビットマップのほんの少しの角度の回転は、回転した結果がジャギーにならないように補間をする必要がある。

OpenCVでは再近接、Bilinear、Bicubicが使える。ほかにもモアレを減らすことができる補間というのもあるらしいがこれはよくわからない。

vImageはデフォルトでLanczos3かあるいはLanczos5を使って補間する。また補間関数の指定もできる。

Lanczosはsinc関数の近似法のひとつ。前やったBicubicと同じような遠くの点では恒等的に0になる関数を無理矢理作る方法。Lanczosの補間関数をLn(x)とすると
1220eq81.png
というようなn以上の恒等的に0の領域に、sinc関数そのものをsinc関数を使ってつなぐようになっている(言葉で書くのは難しいな)。ただしnは整数で、どのくらい先の格子点まで考慮するか、というのを表すことになる。微妙な話なんだけど、見た目を問題にする場合にはL3(x)とL5(x)ではモアレのようなジャギーの出にくさが違うらしい。みんな気になるのか、そういう報告をしているサイトはいっぱいあった。

ちなみにL2(x)は近傍格子点の使い方がBicubicと同じになる。おもしろいことにBicubicとは関数としては微妙に一致しない。Lanczosの方は0から離れるにつれて徐々にsinc関数からずれるようになっているのと、Bicubicは3次でsincを展開してるのでもともとずれていてどちらも±1の範囲であっても関数の形が違っている。 この違いは見た目にどうなのか、さらに原理的にどう違うのか、ということに言及しているサイトは見つからなかった。

Bicubicも同じ思想でLanczosと同じような2近傍以上のsyncの近似関数を作ることができる。サンプリング定理に基づいた近似関数としてそれぞれどういう特性を持つのか、という数学的な議論は見あたらない。少なくとも日本語のウェブサイトに言及を見つけることはできなった。Lanczosさんに訊かないといけないのか。ハンガリーの人だったので名前を発音するのも難しい。カタカナではたいてい「ランチョス」と書いてあるけど字面を見るかぎりでは「ランツォシュ」ではないのか。舌噛みそうだけど。

それともそんなことを気にするのは僕ぐらいなんだろうか。そんなはずはないだろう。いや、名前の発音の話ではなくて。
nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

献立12/20献立12/21 ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。