画像の用意
チェッカーボード印刷し、キャリブレーションしたいカメラで撮影します。
チェッカーボード↓↓

チェッカーボードを平面を保つように硬い板などに貼って、以下のように角度や位置を変えて25枚くらいの画像を撮影します。

このくらい近くで撮ってもいいのかも↓↓(takminさんのブログより画像引用)

画像保存のコード
以下のコードで画像を3秒おきに取得できます。
save_image.pyなどのファイルを作って実行してください。
13行目の保存フォルダへのパスと40行目のカメラへのパスを変更してください。
カメラの内部パラメータを求める
以下のコードで魚眼カメラの歪みを補正するのに必要な内部パラメータKとDが得られるはず...
calibrate.pyなどのファイル名で保存し実行してください。
103行目のパスを魚眼画像が保存されているフォルダに変更すること!
こんな感じの値が得られるかしら↓↓
K = np.array( [[340.59258135 , 0. , 548.37466433],
[ 0. ,340.79339754, 550.00068578],
[ 0. , 0. , 1. ]])
D = np.array([[-0.02413534, -0.00265511, 0.00394103, -0.00273779]])
KとDとは?
K:内部パラメータ行列
K = [[fx, 0, cx]
[ 0, fy, cy]
[ 0, 0, 1]]
fx, fy:焦点距離(ピクセル)
cx, cy:画像中心
確かに私の入力画像は1088ピクセルx1088ピクセルなので、画像中心は大体544ピクセルになってる
D:歪み係数
D = [[k1, k2, k3, k4]]
確認
そしたら得られたKとDを使って以下のコードで歪み補正できてるか確認してみてね。
4行目の画像へのパスと、8・11行目のカメラ内部パラメータを変更してください。
こんなふうにベッドのフチがまっすぐになったのがわかるかな
補正前の画像↓ 補正後の画像↓

最後まで読んでいただきありがとうございました!
より良い記事にするため、わかりにくいところや間違っているところがありましたら、連絡をいただけると嬉しいです!
Have a nice calibration day!!
