FC2カウンター FPGAの部屋 ステレオカメラによる距離測定テスト12(焦点距離の計算)

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

ステレオカメラによる距離測定テスト12(焦点距離の計算)

ステレオカメラによる距離測定テスト11(距離と左右視差の測定)”の続き。

前回は距離と左右カメラの視差のピクセル数を測定した。今回はその測定データからカメラの焦点距離を計算した。

(2016/02/17:追記) 光学系も素人なので、勉強しながらやっていきたいと思いますので、この辺りはトライ・アンド・エラーしています。そして厳しいご指摘のコメントをお待ちしていおります。できれば詳しくやり方をコメント欄に書いて頂くか?参考にできるURLを教えて頂けると助かります。

ステレオカメラによる交通環境認識と歩行者の検出”の12ページの”視差と物体までの距離の関係”の図を下に引用する。
StereoCamTest_79_160215.png

私が測定した距離は焦点距離 + Z になっているので、焦点距離を計算で求めてみよう。測定した距離をLとすると、
F + Z = L

F + BF/D = (FD + FB) / D = F(D + B) / D = L

F = LD / (D + B)

この式に従って、各測定した距離の焦点距離を計算してみた。
StereoCamTest_80_160215.png

距離が短い方はだいぶ誤差が出ている気がする。カメラの軸が曲がっているのだろうか?焦点距離は 540 mm 位なのだろうか?
2.2 m よりも長い距離の焦点距離がどうなるか?が気になる。

次は、自動的に視差を求めるアプリケーションを作ってみたいと思う。
  1. 2016年02月16日 04:40 |
  2. ステレオカメラによる画像解析
  3. | トラックバック:0
  4. | コメント:7

コメント

カメラの画角が |__| ではなく \__/ なので、その補正も必要ではないでしょうか?
最初に10cm□の升目を書いた板(OLFAのカッターマットとか)を写して画の中心位置を補正してからのほうがよくありませんか?

また、この計算式で求めるなら固定距離(1mくらいのところ)で撮像した画の中心が一致するよう(カメラを / \ 向き)にして、中心部分のずれを見ないとレンズの歪によるずれが大きすぎるような気がします。

特に∞距離の焦点だとレンズの歪がうんたらかんたらとかいう話があったような・・・詳細は忘れました。
昔々に勉強したのですが、三角関数が一杯でてきた時点で挫折しました
  1. 2016/02/16(火) 09:10:35 |
  2. URL |
  3. おる #-
  4. [ 編集 ]

こんばんわ。
「焦点距離は 540 mm 位」ですか? 何んか感覚的にオモイッキり違うような気がします。あと、おるさんの言うように、この手のCMOSカメラはコストの観点から光学系が「お察し下さい状態」です。特に上下方向の歪みを修正しないと横方向の走査だけではマッチングが取れない確率が高くなります。結果、自動でマッチング・アルゴリズムを走らせたときにとんでもない所と一致したと判定するハメに^^;).
  1. 2016/02/17(水) 01:42:27 |
  2. URL |
  3. くり #195Lvy4Y
  4. [ 編集 ]

おるさん、こんにちは。
ありがとうございます。了解しました。歪補正、平行補正を勉強してみます。一応考えてはいたのですが、取りあえずやってみちゃいました。チェッカーボードも作ってあるので、写してみます。

くりさん、こんにちは。
お久しぶりです。見てくださっていたんですね。光学系って難しいですね。取りあえず、OpenCVでやるのが簡単なのかな?でも仕組みを知らないとFPGAでやれないし。。。と考えています。
参考になるお勧めの本がありましたら、ご紹介ください。
これから、厳しいご指摘をどんどんお待ちしております。
  1. 2016/02/17(水) 03:59:12 |
  2. URL |
  3. marsee #f1oWVgn2
  4. [ 編集 ]

>お久しぶりです。見てくださっていたんですね。

 コメントするのは久しぶりなんですが、ブログやtwitterはしばしば拝見していますよ。特に、ステレオカメラによる距離測定は、昔々その昔、高速化のためにFPGAに手を出すことになった案件ですし、今も興味を持っています。

>光学系って難しいですね。取りあえず、OpenCVでやるのが簡単なのかな?でも仕組みを知らないとFPGAでやれないし。。。と考えています。

 光学系は手を出し始めればキリがないです。性能を追い求めれば安価なCMOSカメラのメリットが吹っ飛んでしまいますから、計算機側で補正するのが手っ取り早いです。また、絵物は兎に角処理すべきデータ量が多く、その分デバックが大変になりますから、OpenCVなどで当たりをつけてからハードに移行する方が得策かと。

>参考になるお勧めの本がありましたら、ご紹介ください。

 参考になる本とかは・・・。何せ画像処理の分野は比較的歴史も長く、様々な方法が提案されてますし、あまり文献に振り回されるのもどうかと。ただ一つハッキリ言えることは、我々は「ステレオカメラによる距離測定」にもっとも参考となるシステムを自分自身の肉体に持っているということです。これをよーく観察してみてください。片目ずつ閉じると、意外と物の大きさが左右で違っているのに、両目で見ると差異をまったく感じないとか、新調した眼鏡では最初、物が曲がって見えたのにいつの間にかまっすぐに感じるとか、色々面白いことが見つかるはずですよ。
  1. 2016/02/18(木) 02:29:06 |
  2. URL |
  3. くり #195Lvy4Y
  4. [ 編集 ]

くりさん、見てくれていたんですね。ツィッターもですか?これは下手なこと書けませんね。

やはりOpenCVですよね。了解しました。幸いにもカメラキャリブレーションのサンプルがあるので、それをやってみようと思っています。

今のところのステレオカメラは上下左右が完全に固定されていません。
左右方向はまだしも、上下方向がグラグラなので、何らかの方法で固定しようと思っています。
その上で、距離データを取った部分で距離を測定するのでしたら、補正をしなくてもある程度の精度は出るのではないか?と思っています。自動視差測定システムをその特定の部分に適用することも考えています。
  1. 2016/02/18(木) 05:20:59 |
  2. URL |
  3. marsee #f1oWVgn2
  4. [ 編集 ]

こんばんわ。

>左右方向はまだしも、上下方向がグラグラなので、何らかの方法で固定しようと思っています。

両カメラを連結する枠を土台から立ち上げて、化粧ネジ

http://www.monotaro.com/s/c-102368/

などでカメラ基板上部を前後に移動させる微動機構(=カメラを前に押し出すとコネクタ部を回転軸としてカメラの光軸が下がるなど)を作って、それを介して固定する方法が簡単かと思います。

>その上で、距離データを取った部分で距離を測定するのでしたら、補正をしなくてもある程度の精度は出るのではないか?

 レンズ光軸近辺ならば、カメラの上下さえ合わせればある程度の精度は出ると思います。
  1. 2016/02/19(金) 01:27:12 |
  2. URL |
  3. くり #195Lvy4Y
  4. [ 編集 ]

くりさん、ありがとうございます。

了解しました。私も上下方向が特にグラグラなので、固定器具を作ろと思っています。
工作室で3Dプリンタとレーザー加工機が使えるので、工作しようと思っています。
  1. 2016/02/19(金) 05:36:12 |
  2. URL |
  3. marsee #f1oWVgn2
  4. [ 編集 ]

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
http://marsee101.blog19.fc2.com/tb.php/3398-f8366a77
この記事にトラックバックする(FC2ブログユーザー)