« デジカメで三角測量 (2) | トップページ | デジカメで三角測量 (4) »

2014年6月23日 (月)

デジカメで三角測量 (3)

デジカメで撮った写真をもとに被写体の位置を特定しようというのがテーマです。

これは方位角・高度あるいは赤経・赤緯を方向余弦に変換すれば星野写真を撮ったときの未知の天体の方位角・高度、赤経・赤緯を求めることにも使えます。そしてそういう目的であれば「関連係数法(1) 」に書いた方法より精度が高い方法です。

-----

今回は「デジカメで三角測量 (2)」の続きとして撮った写真から被写体までの距離やカメラの向き・仰角・傾きを調べるとき収差をどう考えるかということについて書きました。

今回はExcelのファイルをダウンロードできるようにしてあります。
  「ダウンロード Excel_SRV_10.xls (68.5K)

重要

  上記のExcelファイルには重大な誤りがありましたのでファイルを差し替えました。
  pitch(y軸回りの回転)の計算式が誤っていました。
  今回の記事ではpitch(仰角)が小さいため計算結果の差はほとんどありません。
  したがって記事の結論に対する影響はありません。
  仰角が大きくなる計算をしていて気づきました。
  以上取り急ぎお知らせするとともにお詫びいたします m(._.)m

  (2014.06.25)
-----

前回の計算結果を見るとどうも歪曲収差が原因で正しく計算できていないようだということを書きました。

歪曲収差をどうやって補正するかを考えます。

樽型収差にしても糸巻収差にしてもどれだけの収差があるかは(レンズが軸対称だということを前提とすると)画像の中心からの離角決まるように思えます。

収差がないとして計算したときの画像上の位置を(x,y)、収差を考慮したときの画像上の位置を(x',y')とします。ここで座標は画像の中心を原点にしています。

  r = sqrt(x^2+y^2)
  a = atan2(x,y)

とするとrの関数f(r)を考え

  r' = f(r)
  x' = r' * cos(a)
  y' = r' * sin(a)

とすればよさそうです。

問題はf(r)にどんな関数を使うかなんですが、今回は

  c * r^3 + r

を使いました。

c=0であれば歪曲収差なし、c>0であれば糸巻収差、c<0であれば樽型収差となります。
またrが小さいときつまり画像の中心では収差は小さいということになります。
cはExcelのシートで“収差係数”という言葉で表記しています。

r^2 でもなく r^4 でもなく、なぜ r^3 なのかという疑問が湧いてくると思いますが、今回は、これが経験的に結果がよく一致するから、とだけ書いておきます。

-----
補足

上のように書いてしまったのですが r^2 でやってもそれらしい結果が得られました。というか残差は r^2 を使った方が少し小さかったです。
ひょっとしたらカメラの設定で収差の補正をオフしてしていることと関係しているのかもしれませんが推測の域を出ません。そのうち(星野写真などで)ちゃんと調べて記事にします。
すみません m(._.)m

(2014.06.23 19:00)
-----

おそらくレンズの理論的な勉強をした方だったらこういうときどんな式を使うかご存知だと思いますのでその式をH24,H27,H30,......のところに書いてください。というかその式を私にも教えてください m(._.)m

記事の末尾にスクリーンキャプチャを貼ってありますが、今回は右側のポールだけでなく三本すべてのポールからデータを拾ってきてあります。ぜんぶで16点あります。

今回は未知数が前回より5つ増えますのでデータも前回よりたくさんあった方がいいです。

スクリーンキャプチャはExcelのソルバーを実行したあとのものです。データが16組32個あるのにもかかわらず残差の合計は58と計算結果と実際の画像上の位置はよく一致しています。これで

・カメラは河川面から4.28mの高さにあった。
・カメラは右側のポールから15.4度左を向いていた。
・カメラの仰角は-0.2度とほぼ水平が保たれていた。
・カメラの傾きも-0.6度とほとんどなかった。
・右側のポールまでの距離は4.55mであった(座標は  x=4.55m, y=0.00m )
・中央のポールの座標は x=10.67m, y=4.15m である。
・左側のポールの座標は x=16.89m, y=8.32m である。

ことがわかります。
cmの単位まで書いていますが画像の解像度を考えると少なくとも右側のポールに関してはこのくらいの精度は出ると思います。ただレンズの焦点距離やセンサーサイズが1%違っていたら結果も1%違ってきますのでそこはご理解願います。

さて下の計算の残差を見ると場所によっては計算結果と実際の位置の差は読み取り誤差以上のものがあるようにも感じられます。

原因と対応について考えてみました。

1. カメラの焦点距離が実際と違う。
  これは仕様と違う、という意味と近い距離を撮っているためレンズが繰り出されていた
  という意味があります。

2. センサーのサイズが実際と違う。

実際の計算は DY/PY/f を使って行いますので1.と2.は等価です。これは離角が正確にわかっている二つの点が何組か写っていれば画像から正しい値を調べることができます。つまり今回使ったような写真からはできないことです。こういう目的には星野写真/星景写真が最適でしょう。恒星の位置は正確に知ることができますから。

3. 収差の計算式が適切でない。

あんまり根拠なく f(r) = c * r^3 + r という式を使っていますので、これはいちばんあやしいです。
収差の計算式の妥当性をチェックしたり新たに計算式を作るのであればできるだけたくさん離角のわかっている点が写っている写真を調べる必要があります。これも星野写真/星景写真が最適です。

この写真からでももっと実際と合うように収差の計算式を作ることはできます。ただそれはやめた方がいいと思います。より厳密な計算式を決めるのは1.、2.が解決してからの方がいいと思います。また4.の問題もあります。
計算式を複雑にしたら結果があったというのは本質的な解決とは別だと思います。計算式が複雑になれば結果がよく一致するのはあたりまえの話です。データ点数が少ないのにこれをやるとデータのない点での収差が実際とは大きく異なっていた、なんてことになりかねません。

4. 前提の誤り

ポールが鉛直に立っていなかった、とか、水位の目盛がポールごとに違うとかいうことです。これは現地調査が必要なように思えますが、もし、1.、2.、3.が完全に解決すれば写真から三本のポールがどういう状態・位置関係にあったかを算出することもできないことではないと思います。

次は1.と2.のより詳しい検討か二枚の写真から対象物までの距離を求める方法のいずれかを書く予定です。

------

と書いたのですが今回の結果を見ているうちにおもしろいことに気づきました。次回はそのことについて書きます(2014.06.24)

(「デジカメで三角測量 (4)」に続く)

Excel_srv_10_14aExcel_srv_10_14b_3
Excel_srv_10_14c

ソルバーの設定
Excel_srv_10_14d

« デジカメで三角測量 (2) | トップページ | デジカメで三角測量 (4) »

カメラとレンズ」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: デジカメで三角測量 (3):

« デジカメで三角測量 (2) | トップページ | デジカメで三角測量 (4) »

フォト

サイト内検索

  • 記事を探されるんでしたらこれがいちばん早くて確実です。私も使ってます (^^;; 検索窓が表示されるのにちょっと時間がかかるのはどうにかしてほしいです。

新着記事

リンク元別アクセス数

  • (アクセス元≒リンク元、原則PCのみ・ドメイン別、サイト内等除く)

人気記事ランキング

  • (原則PCのみ、直近2週間)
無料ブログはココログ