2

広範な検索の結果、WebGL 魚眼画像補正の適切に説明された式を見つけることができませんでした。フィッシュアイ/アンチフィッシュアイの Shadertoyは式を示しています

uv = m + normalize(d) * atan(r * -power * 10.0) * bind / atan(-power * bind * 10.0);

これは文字通り「奇妙な公式」と表現されています。ここでは、レンズの歪み補正に関する Paul Burke の作業に何らかの形で従いますが、関連性はわかりません。私のアプリケーションでは、数式は次のようになります (値はレンズと Web カメラに合わせて手動で調整されます)。

uv = centerPoint + normalize(d) * atan(r * pi) * 1/3 / atan(pi/3)

ここで、r は画像の中心からのピクセルの距離、d はその方向の単位ベクトル、centerPoint は画像の中心です。逆正接を座標に直接結び付ける方法がわかりません。誰か助けてもらえますか? アークタンジェントを使用した式の部分は、画像の中心からのピクセル距離の計算であることがわかります。理解できないのは、それがどのように計算されるかです。

ありがとう!

4

1 に答える 1

1

わかりましたので、いくつかの検索と質問の後、数式で何が起こるかを理解しました. 図と基本式は下の画像にあります。この画像に] 1 . xy' 位置は既知であるため (テクスチャ上のターゲット位置)、xy (魚眼画像上のソース ピクセル) を計算します。R は魚眼画像の半径です。達成したい最大視野角に応じて、d の望ましい値を置き換えることができます (接線関数は 90 度で tan(B) = 1/d で無限大になるため、妥当な値を取るのがよいでしょう)。変換後、次のようになります。

xy= atan(xy'/d)* 2R/pi

これは、等距離投影の理論的に正しい式であり、レンズで実行されると仮定しています。元の投稿で参照した式には、2R/pi の代わりに別のものがありましたが、レンズの欠陥のためにまだ機能していました。おそらく、私たちが知ることのない奇妙な関数があり、近似値として機能していました。

ご不明な点がございましたら、喜んでお答えいたします:)

于 2015-10-03T11:38:15.897 に答える