カメラの内部および外部パラメータ
- 固有パラメータは、カメラ自体の特性、焦点距離、ピクセル サイズに関連するパラメータです。
- 外部パラメータ、カメラ位置、回転方向
内部基準校正を行う理由
- 理想的には、レンズは 3 次元空間の直線を直線に写像 (つまり、射影変換) しますが、実際には、レンズはそれほど完璧にはできません. レンズが写像された後、直線は曲線になります.であるため、それを説明するにはカメラの歪みパラメータが必要です。
- 理想的には、カメラは x 方向と y 方向のサイズを同じように縮小しますが、実際には、レンズが完全な円でない場合、センサー上のピクセルが完全に密集した正方形でない場合、 cause both 各方向の縮小率が一貫していません。内部パラメータには、これらの 2 つの方向のスケーリング比を記述できる 2 つのパラメータが含まれています. ピクセル数で測定された長さを、3 次元空間の他の単位 (メートルなど) で測定された長さに変換できるだけでなく、 x および y 方向のスケール変換の不一致で表すことができます。
- 理想的には、レンズの光軸(レンズの中心を通り、センサー面に垂直な直線)は、画像の中央を通過する必要がありますが、実際には取り付け精度の問題により、 , there is a always an error. このエラーを説明するには、内部参照が必要です。
内部参照マトリックス:
fx s x0
K = 0 fy y0
0 0 1
fx、fy は焦点距離、一般に 2 つは等しい、x0、y0 は主点の座標、s は座標軸の傾斜パラメーター、理想的には 0 です 外部パラメーター マトリックス: 回転および並進マトリックスを
含む
カメラ姿勢推定
参照リンク:
つまり、ピクセル座標Pxに深さzcを掛けたもの= カメラ内部パラメーター K にカメラ座標Pcを掛けたもの.
関連リンク:
- https://zhuanlan.zhihu.com/p/144307108
- https://www.cnblogs.com/singlex/p/pose_estimation_1.html
内部基準の校正と推定
関連リンク:
-
https://learnopencv.com/camera-calibration-using-opencv/
-
https://visp-doc.inria.fr/doxygen/visp-daily/tutorial-calibration-intrinsic.html
-
/home/jialiangfan/visp/build/example/calibration
-
/home/jialiangfan/visp/build/tutorial/grabber
-
mv /home/jialiangfan/visp/build/tutorial/grabber/chessboard-* /home/jialiangfan/visp/build/example/calibration
-
./キャリブレーション-カメラのデフォルト-チェス盤.cfg
ros_calibration を介してより高精度の内部基準キャリブレーションを取得する
- rosdep インストール camera_calibration
- 通常のカメラの場合は、usb-cam ツールをインストールして、realsense も設定できます。
- realsense をインストールするか、sudo apt-get install ros-kinetic-realsense2-camera をインストールしてから、roslaunch realsense2_camera rs_camera.launch align_depth:=true を実行します。
- usb-cam 設定でのキャリブレーション コマンド: ~/ rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.25 image:=/usb_cam/image_raw camera:=/usb_cam
- rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.028 image:=/usb_cam/image_raw
キャリブレーションされた Realsense D455 パラメータ
[[400.50715871 0. 313.03444875]
[ 0. 413.68114326 234.14594096]
[ 0. 0. 1. ]]
Opencv は Realsense D455 パラメータを調整します
cameraMatrix : [392.716970864628, 0, 243.0185503073266;
0, 387.129884776694, 215.7363588792927;
0, 0, 1]
distCoeffs : [0.06146982267847866, -0.051192129333712309, -0.007642430456467396, -0.05887116845433386, 0.009214258584880468]
realsense独自のAPIから取得した結果
p[319.435 241.826] f[380.528 380.19]
ros_calibration キャリブレーション結果
390.989992 0.000000 291.088402
0.000000 386.367613 236.286866
0.000000 0.000000 1.000000
歪み -0.030756 0.135162 -0.006918 -0.015546 0.000000
整流
1.000000 0.000000
0.000000 0.000000 1.000000
0.000000 0.000000 0.000000 1.000000
投影
423.408600 0.000000 285.763055 0.000000
0.000000 418.590729 232.499668 0.000000
0.000000 0.000000 1.000000 0.000000
外部パラメータのキャリブレーション
python camera_calibration_show_extrinsics.py --calibration camera.xml --scale_focal 20
いくつかのグラフィックスの姿勢を確立することにより、初期座標は一般にチェス盤の左上隅として決定され、初期座標系におけるカメラの姿勢は逆に解かれます。
参考リンク:https://blog.csdn.net/jiaoyangwm/article/details/97752238
リアルセンス ビジュアル インターフェイス
コマンド ライン入力: realsense-viewer
RGB カメラのフレーム レートは最大 60、画質は 424*240、フレーム レートは 30、画質は 640x480
深度カメラのフレーム レートは最大 90、画質は比較的低く、画質はフレームレートを上げて下げる
Realsense ロボット アームのハンドアイ キャリブレーション
- 技術紹介 https://blog.csdn.net/yaked/article/details/77161160
- https://editor.csdn.net/md/?not_checkout=1&articleId=128649152
- https://zhuanlan.zhihu.com/p/576861119
ハンドアイキャリブレーションプロセス記録:
-
easy_handeye 関数パッケージマーカー ID: 6、サイズ: 5cm
-
easy_hand_eye のパラメータを書き換えます
テクニカル チュートリアル
- フランカ + リアルセンス: https://zhuanlan.zhihu.com/p/576861119
- visp パッケージ: http://wiki.ros.org/visp_hand2eye_calibration
- Kinova ハンドアイキャリブレーション: https://blog.csdn.net/qq_39367282/article/details/89515338