たたききゅうりとP2Pにはまってるmashです、こんにちは。
2008年夏、由比ガ浜海水浴場オフィシャルサイト 由比ガ浜.comのトップページで、 画角180度の魚眼レンズを使用して、由比ガ浜のパノラマ画像を配信していました。 現在は思い出ムービーとしてその記録をご覧いただけます。
その画像変換部分を担当しましたので軽くご紹介いたします。
使用した魚眼レンズは、デジタルフィッシュアイコンバージョンKDF-025。
魚眼レンズをカメラの前面にとりつけて写真を取ると、 こんな画像になります(カヤックの私の机です)
結論から言いますと、以下のように解像度が落ちない範囲で切り取り&座標変換を行います。
中心から外へいくほど解像度が落ちていることがわかります。 由比ガ浜のパノラマ画像をクライアントのFlashに配信する時に、どこでこの変換を行うか。
FlashのDisplacementMapFilterを使用する方法もありますが、 ウェブカムから配信されたストリーミング映像には適用できないのと、 そこそこ見える画像にするため、解像度の高いまま画像をクライアントに渡すとFlashが重くなりますので、 配信側で加工することにしました。
変換にはPanotoolsを使用し、 パラメータの決定にはPTGuiを使いました。 Panotoolsは、PANORAMA TOOLSに紹介されています写真のような ばらばらの写真をstitch(つなぎ合わせ)、一枚の連続したパノラマ写真を生成するため等に使用できる、画像処理ライブラリ集です。
PTGuiはそのフロントエンド。Panotoolsに渡すパラメータを導くためのみに使います。
PTGuiを起動し、画像を読み込みます。 Lens typeはCircular, Horizontal Field of Viewは180度。
有効画素の範囲をcropし、
Rectlinearに投影した時に、視野角の中心から何度までを使用するか、確認しながら調整します。
それぞれの画面の数値を PanotoolsのPTSticherの設定ファイルに落とし込むと、以下のようになります。
# 出力は800x800,rectilinear,視野角150度のJPG(圧縮率100)
p w800 h800 n"JPEG q100" f0 v150
# 入力はCircular FishEye, Roll角補正0度, Pitch角補正0度, 水平視野角160度, C**の方形内の画素を使用する
o f2 r0 p0 y0 v160 C391,2291,423,2323
# 補間式はsinc1024を使用
m i7 f0
設定ファイルをoptions.txtとし、同じフォルダにpano12.dllを置いた状態で以下のように変換処理を実行できます。
PTStitcher.exe -o outputimage options.txt inputimage.jpg
魚眼レンズ楽しいですよ!何かのきっかけになれば幸いです。 enjoy!