写真画像の歪曲収差(distortion)を補正
[introduction]
CASIOのデジタルカメラQV-10は、大変楽しい機械で大いに満足しています。ただ、解像度の低さもさることながら、歪曲収差による画面周辺部の樽型歪みが大きく、それが気に入らない人も多いかと思います。私も気に入らなかったのですが、歪みの補正くらいなら自力でなんとかなるのではと思い、このプログラムを作って見ました。一般的なppm/bmp形式のfileを扱うので、QV-10以外でも使用できます。
[compile]
cc -o ppmdistort ppmdistort.cFreeBSD 2.1上で動作確認しました。大抵のunixでOKでしょう。
[usage]
usage: ./ppmdistort [options] [file]
correct distortion of photo
version 0.3
option:
-p param : set distortion parameter
(-100 to 100 : default = 20)
-f : convert full data
-a : no anti-aliasing
file: ppm / bmp
画像formatはppm形式、またはbmp形式に対応しています。
ppmは"P6"形式(binary形式)しか対応していません。
pgmやpbmにも対応していません。
bmpは24bit形式しか対応していません。
指定したfileまたは標準入力から読み込んで、標準出力に
入力と同じ形式で出力します。ppmを読んでbmpを吐くというようなことは出来ません。
camtoppmなどを使った480×240画像の場合は、pnmscale等を用いて4対3の画像に直してから本プログラムを適用して下さい。
paramは、正の数なら樽型歪みの補正、負の数なら糸巻き型歪みの補正を行います。-100〜100の値が指定でき、絶対値が大きい程修正量が大きくなります。0なら原画と同じになります。defaultはとりあえず20にしてありますが、何度かcut & tryして最適な値を探して見て下さい。QV-10AやQV-30では歪みが小さくなったそうなので、もっと小さな値がいいと思います。
-fをつけると、原画の全体が見えるようになります。つけないと、原画の端の方の情報が切れてしまいます。ただし、-fをつけた場合は逆に画面の端の方に空白の部分(黒く塗りつぶす)が出来てしまいます。
-aをつけると、anti-aliasingを行いません。普通は付ける必要はないでしょう。
[計算式]
sourceを見て下さい。実物のレンズの中心軸からの距離をy,像の中心軸からの距離をy'としたとき、歪曲収差により
y' / y = m - E y^2
になるという光学理論に基づいています。
ソフト名: | ppmdistort for UNIX |
---|---|
動作OS: | UNIX |
機種: | 汎用 |
種類: | PDS |
作者: | 柏木 雅英 |