Flashでリアルタイムに魚眼画像を平面へ変換(2)

前回は弧を直線に描くという簡易ロジックを使用しましたが、今回は魚眼画像の正像化に利用される座標変換式を使い、Flashでリアルタイムに読み込んだ魚眼画像を平面に変換するものを試作してみました。

また前回同様のアニメーションが有るものと、今回は変換速度を考慮したアニメーションの無いものをつくってみました。

▼アニメーション有り

  • フレームイベントで変換を行うため、速度が遅い。
  • 焦点距離に対応する数値を変更するスライダを設置
  • 魚眼画像の半径を調整するスライダを設置
  • ビットマップスムージングの適用チェックボックス設置
  • 変換後にズーム操作を行うスライダを設置


※こちらは変換後の画像移動をマウスドラッグで操作します。

 

▼アニメーション無し

  • ループで座標を計算し、変換速度を上げる
  • 読み込んだ画像のサイズを表示
  • 変換処理にかかった時間を表示
  • ビットマップスムージングの適用チェックボックス設置

ビットマップのスムージング有りと無しにおける画像を比較してみました。画像を拡大(約5倍)してみると効果は確認できましたが、等倍では、あまりよくわかりません。

変換速度については、アニメーション有りの方で比べると、2秒くらいスムージングにかかるようですが、アニメーション無しの方では、それほど差が無いようです。
(OS:WindowsXP / Browser: FireFox3.6.3 / CPU:2.20GHz Core2Duo / FlashPlayer: WIN 10,1,53,64 debug)

スムージング比較

座標変換方法が間違っているのか補正がうまくできていない感じです。画質補間については、まだ改善の余地があると思います。また、撮影するレンズ仕様までは現在のところ、考慮していません。

Flashでリアルタイムに魚眼画像を平面へ変換(1)

フィッシュアイ・レンズ(魚眼レンズ)で撮影した画像を正像化補正する場合、通常はパノラマ変換ソフトなどで変換しますが、Flashで直接に魚眼画像を読み込み、平面へ簡易に補正するものを試作してみました。ボタンをクリックすると変換を開始します。

この変換では下のアニメーションのように、1pxずつ弧を移動して平面の直線へ描く簡易ロジックを使用していますので、補正が甘いです。(追記:魚眼変換ロジックを用いたものはこちらです

360度には対応していませんが、画角180度の画像1枚でウェブサイトへ手軽にアップできますので、多くのパノラマ画像をサクッと紹介するには便利かもしれません。今後は補正の調整や変換速度の改善をしてみたいと思います。

コンバーター

下の写真のパノラマ機材は現在、オークションなどで安価(1~2万円程度)に購入できますので、パノラマ入門用にいかがでしょうか。

パノラマ機材(a570)