FC2カウンター FPGAの部屋 OpenCV 2.4.10 の stereo_calib.cpp を自分のカメラ画像でやってみた3

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

FPGAの部屋

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

OpenCV 2.4.10 の stereo_calib.cpp を自分のカメラ画像でやってみた3

OpenCV 2.4.10 の stereo_calib.cpp を自分のカメラ画像でやってみた2”の続き。

いろいろと失敗してきた”OpenCV 2.4.10 の stereo_calib.cpp を自分のカメラ画像でやってみた”ですが、ついにうまく行った。
勝因は、チェスボードに黒枠をつけたのと、チェスボードが大きめに画面に写っていたほうが良いみたいだ。

今回は下の図に示す。枠付きのチェスボードを使用した。
stereo_calib_85_160317.png

./RL_capture_bmp で、少し大きめにチェスボード全体が左目カメラ画像にも右目カメラ画像にも入るように撮影した。left0.bmp から right12.bmp まで 13 組の左目カメラ画像と右目カメラ画像のペアのBMPファイルを取得できた。
その内の3ペアを下に示す。それぞれ、最初の画像が左目カメラ画像で、次の画像が右目カメラ画像だ。なお、
./convert_calibf で 800 x 600 ピクセルのカラー画像を 640 x 480 ピクセルのグレースケール画像に変換してある。
画像のファイル名は上から、left0.jpg, right0.jpg, left1.jpg, right1.jpg,left2.jpg, right2.jpg だ。後で、歪みを補正した画像が出てくるので、それと比較して欲しい。
stereo_calib_71_160317.jpg
stereo_calib_72_160317.jpg

stereo_calib_73_160317.jpg
stereo_calib_74_160317.jpg

stereo_calib_75_160317.jpg
stereo_calib_76_160317.jpg

こんな感じで、13ペア撮影した。

./stereo_calib でステレオカメラのキャリブレーションを行った。
stereo_calib_77_160317.png

12 ペアが認識されている。1ペアは認識されなかったみたいだ。
12 ペアの左目カメラ画像、右目カメラ画像のペアが表示された。その内の3つを示す。
stereo_calib_78_160317.jpg

stereo_calib_79_160317.jpg

stereo_calib_80_160317.jpg

きちんと画像が表示されている。やっと上手く行ったようだ。
extrinsics.yml と intrinsics.yml も生成されていた。

次は、stereo_match をやってみよう。
./stereo_match -i intrinsics.yml -e extrinsics.yml left0.jpg right0.jpg
コマンドを実行した。
stereo_calib_81_160317.png

left, right, disparity ウインドウが開いた。
stereo_calib_82_160317.jpg

画像の縁を見ると歪んでいて、カメラの歪が修正されているようだ。上の歪んでいる left0.jpg, right0.jpg と比較して欲しい。
disparity ウインドウで深度情報も表示されている。

さて、もう1つやってみる。
./stereo_match -i intrinsics.yml -e extrinsics.yml left1.jpg right1.jpg
コマンドを実行した。
stereo_calib_83_160317.png

left, right, disparity ウインドウが開いた。
stereo_calib_84_160317.jpg

こちらも画像の縁を見ると歪んでいて、カメラの歪が修正されているようだ。上の歪んでいる left1.jpg, right1.jpg と比較して欲しい。

やっと、自分で撮影した画像でステレオカメラのキャリブレーションが上手く行った。
ステレオカメラの基板がしっかり固定されていないため、少し動くとキャリブレーションがずれてしまうので、固定方法を考えないといけない。固定方法を考えたい。
ステレオカメラによる深度計速も、OpenCVでソフトウェアではできたが、それをVivado HLS でアクセラレーションしてみたいという希望がある。そのためには OpenCV をもっと勉強する必要がある。

最後に、extrinsics.yml と intrinsics.yml を示す。
最初に、extrinsics.yml から下に示す。

%YAML:1.0
R: !!opencv-matrix
   rows: 3
   cols: 3
   dt: d
   data: [ 9.9946469358847922e-01, -1.1180576509711158e-02,
       3.0746072578428339e-02, 1.0477412330910473e-02,
       9.9968201221380104e-01, 2.2936832541000249e-02,
       -3.0992742713989885e-02, -2.2602415027520792e-02,
       9.9926401953337052e-01 ]
T: !!opencv-matrix
   rows: 3
   cols: 1
   dt: d
   data: [ -6.4327525053555608e+00, 4.9819569385123899e-02,
       1.5248276562670204e-01 ]
R1: !!opencv-matrix
   rows: 3
   cols: 3
   dt: d
   data: [ 9.9980738074161812e-01, -1.8381302616960832e-02,
       6.8796168998461159e-03, 1.8300896985381197e-02,
       9.9976553851253258e-01, 1.1573468463524205e-02,
       -7.0907393207904693e-03, -1.1445336030428873e-02,
       9.9990935874159870e-01 ]
R2: !!opencv-matrix
   rows: 3
   cols: 3
   dt: d
   data: [ 9.9968921220119289e-01, -7.7422667869396578e-03,
       -2.3696757448185279e-02, 7.4689840041410986e-03,
       9.9990483003403074e-01, -1.1599360006570166e-02,
       2.3784307568313970e-02, 1.1418764364675654e-02,
       9.9965189867967530e-01 ]
P1: !!opencv-matrix
   rows: 3
   cols: 4
   dt: d
   data: [ 7.8203511447089386e+02, 0., 3.3787803268432617e+02, 0., 0.,
       7.8203511447089386e+02, 2.5315318870544434e+02, 0., 0., 0., 1.,
       0. ]
P2: !!opencv-matrix
   rows: 3
   cols: 4
   dt: d
   data: [ 7.8203511447089386e+02, 0., 3.3787803268432617e+02,
       -5.0322022889612026e+03, 0., 7.8203511447089386e+02,
       2.5315318870544434e+02, 0., 0., 0., 1., 0. ]
Q: !!opencv-matrix
   rows: 4
   cols: 4
   dt: d
   data: [ 1., 0., 0., -3.3787803268432617e+02, 0., 1., 0.,
       -2.5315318870544434e+02, 0., 0., 0., 7.8203511447089386e+02, 0.,
       0., 1.5540613623311419e-01, 0. ]


intrinsics.yml を示す。

%YAML:1.0
M1: !!opencv-matrix
   rows: 3
   cols: 3
   dt: d
   data: [ 8.8235697678477902e+02, 0., 3.2955358227551494e+02, 0.,
       8.8235697678477902e+02, 2.5548502946546807e+02, 0., 0., 1. ]
D1: !!opencv-matrix
   rows: 1
   cols: 8
   dt: d
   data: [ -3.2775953128095858e-01, -6.5894028034894281e-01, 0., 0., 0.,
       0., 0., -6.2343465096598827e+00 ]
M2: !!opencv-matrix
   rows: 3
   cols: 3
   dt: d
   data: [ 8.8235697678477902e+02, 0., 3.3256199841666762e+02, 0.,
       8.8235697678477902e+02, 2.5216232763526432e+02, 0., 0., 1. ]
D2: !!opencv-matrix
   rows: 1
   cols: 8
   dt: d
   data: [ -3.4032226081273226e-01, -1.3685804150694736e+00, 0., 0., 0.,
       0., 0., -7.5954408258027808e+00 ]

  1. 2016年03月18日 04:12 |
  2. OpenCV
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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