700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > matlab双目相机标定校正_Matlab 单双目相机标定+畸变校正

matlab双目相机标定校正_Matlab 单双目相机标定+畸变校正

时间:2022-01-01 16:20:24

相关推荐

matlab双目相机标定校正_Matlab 单双目相机标定+畸变校正

Matlab 单双目相机标定+畸变校正

1月14日 1月19日

Matlab 单双目相机标定+畸变校正

不管单目双目标定第1第2步都是必须的

第3步为单目标定,第4步为双目标定

1. 标定板

您使用的棋盘图案不得为方形。一侧必须包含偶数个正方形,另一侧必须包含奇数个正方形。此条件使应用程序可以确定模式的方向。校准器将长边指定为x方向。

直接用python生成国际象棋盘格图片再打印到A4纸上做为标定板,生成图片代码如下:

Python

import cv2

import numpy as np

#A4纸的标准大小为210*297mm,这里大小设为A4的三倍,格子边长为90

width = 630

height = 891

length = 90

image = np.zeros((height,width),dtype = np.uint8)

print(image.shape[0],image.shape[1])

for j in range(height):

for i in range(width):

if((int)(i/length) + (int)(j/length))%2:

image[j,i] = 255;

cv2.imwrite("chess.jpg",image)

cv2.imshow("chess",image)

cv2.waitKey(0)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

importcv2

importnumpyasnp

#A4纸的标准大小为210*297mm,这里大小设为A4的三倍,格子边长为90

width=630

height=891

length=90

image=np.zeros((height,width),dtype=np.uint8)

print(image.shape[0],image.shape[1])

forjinrange(height):

foriinrange(width):

if((int)(i/length)+(int)(j/length))%2:

image[j,i]=255;

cv2.imwrite("chess.jpg",image)

cv2.imshow("chess",image)

cv2.waitKey(0)

2.拍照

拍摄图片至少10张,我拍了35张,

如果你标定的是单摄像头直接拍照就好了,

如果你标定的是双目摄像头请阅读:

————————–

3.单目相机标定工具的使用

————————–

打开工具方法有二,方法一:点击app在下拉列表找到“camera Calibrator”

方法二:直接在MATLAB的Command Window里面输入cameraCalibrator即可调用标定应用

点击“Add Images”添加我们用摄像头已拍好的照片

最后会弹出“Checkerboard Square Size”对话框要我们输入标定板上小格子的实际边长

这步很重要,我这里是用的尺子量的为29mm

1. camera model : standard(标准) fisheye(鱼眼),我的摄像头是标准。

2.options:选中径向畸变:“2coefficients”并且选择偏差:“Skew“和切向畸变:“Tangential Distortion“

径向畸变:通常,两个系数足以进行校准。对于严重失真,例如在广角镜头中,您可以选择3″“3coefficients””个系数来包含k3。

偏差: 选择Compute Skew复选框时,校准器会估算图像轴偏斜。某些相机传感器包含缺陷,导致图像的x轴和y轴不垂直。您可以使用skew参数对此缺陷进行建模。如果不选中该复选框,则假定图像轴是垂直的,大多数现代相机都是这种情况。

切向畸变: 当镜头和图像平面不平行时,发生切向畸变。切向失真系数模拟了这种类型的失真:

综上所述,我的选项为:

径向畸变:“2coefficients” 因为我的单目摄像头不是广角

偏差:“Skew”因为我的单目摄像头是老旧的那种

切向畸变:”Tangential Distortion”因为我拍照时是用手拿的摄像头很难和标定板平行

关于畸变可参考:

3.然后点击Calibrate等待一段时间即可完成标定

4.点击show Undistorted即可看到无畸变的图像,点击Export Camera Parameters就可以导出数据,最后记得点击Save Session可保存整个工程*.mat

导出数据后可以退出标定应用,在MATLAB主界面中的命令窗口可以查看到如下数据(或在右边的工作区双击“cameraParameters”查看):

>>

cameraParams =

cameraParameters - 属性:

Camera Intrinsics

IntrinsicMatrix: [3×3 double]

FocalLength: [762.6390 758.8221]

PrincipalPoint: [314.3942 242.9882]

Skew: 0.6420

RadialDistortion: [-0.3241 0.2864]

TangentialDistortion: [0.0082 -5.6938e-04]

ImageSize: [480 640]

Camera Extrinsics

RotationMatrices: [3×3×35 double]

TranslationVectors: [35×3 double]

Accuracy of Estimation

MeanReprojectionError: 0.1202

ReprojectionErrors: [54×2×35 double]

ReprojectedPoints: [54×2×35 double]

Calibration Settings

NumPatterns: 35

WorldPoints: [54×2 double]

WorldUnits: 'millimeters'

EstimateSkew: 1

NumRadialDistortionCoefficients: 2

EstimateTangentialDistortion: 1

estimationErrors =

cameraCalibrationErrors - 属性:

IntrinsicsErrors: [1×1 intrinsicsEstimationErrors]

ExtrinsicsErrors: [1×1 extrinsicsEstimationErrors]

>>

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

>>

cameraParams=

cameraParameters-属性:

CameraIntrinsics

IntrinsicMatrix:[3×3double]

FocalLength:[762.6390758.8221]

PrincipalPoint:[314.3942242.9882]

Skew:0.6420

RadialDistortion:[-0.32410.2864]

TangentialDistortion:[0.0082-5.6938e-04]

ImageSize:[480640]

CameraExtrinsics

RotationMatrices:[3×3×35double]

TranslationVectors:[35×3double]

AccuracyofEstimation

MeanReprojectionError:0.1202

ReprojectionErrors:[54×2×35double]

ReprojectedPoints:[54×2×35double]

CalibrationSettings

NumPatterns:35

WorldPoints:[54×2double]

WorldUnits:'millimeters'

EstimateSkew:1

NumRadialDistortionCoefficients:2

EstimateTangentialDistortion:1

estimationErrors=

cameraCalibrationErrors-属性:

IntrinsicsErrors:[1×1intrinsicsEstimationErrors]

ExtrinsicsErrors:[1×1extrinsicsEstimationErrors]

>>

————————–

4.双目相机标定工具的使用

————————–

打开立体相机校准器

MATLAB工具条:在“app”选项卡上的“图像处理和计算机视觉”部分中,单击“ Stereo Camera Calibrator”图标。

MATLAB命令提示符:输入stereoCameraCalibrator

如下图1为相机镜头1拍摄的图片目录,2为相机镜头2拍摄的图片目录,3为标定板小格子实际边长

其他选项:

径向畸变:“2coefficients” 因为我的单目摄像头不是广角

偏差:“Skew”因为我的双目摄像头是现代摄像头所以这一项不选

切向畸变:”Tangential Distortion”因为我拍照时是用手拿的摄像头很难和标定板平行

然后点击Calibrate等待一段时间即可完成标定,点击Export Camera Parameters就可以导出数据,最后记得点击Save Session可保存整个工程*.mat

stereoParams =

stereoParameters - 属性:

Parameters of Two Cameras

CameraParameters1: [1×1 cameraParameters]

CameraParameters2: [1×1 cameraParameters]

Inter-camera Geometry

RotationOfCamera2: [3×3 double]

TranslationOfCamera2: [-62.0630 -1.3048 9.7289]

FundamentalMatrix: [3×3 double]

EssentialMatrix: [3×3 double]

Accuracy of Estimation

MeanReprojectionError: 0.1107

Calibration Settings

NumPatterns: 93

WorldPoints: [54×2 double]

WorldUnits: 'millimeters'

estimationErrors =

stereoCalibrationErrors - 属性:

Camera1IntrinsicsErrors: [1×1 intrinsicsEstimationErrors]

Camera1ExtrinsicsErrors: [1×1 extrinsicsEstimationErrors]

Camera2IntrinsicsErrors: [1×1 intrinsicsEstimationErrors]

RotationOfCamera2Error: [2.4278e-04 3.9806e-04 2.4674e-05]

TranslationOfCamera2Error: [0.1999 0.1391 1.0925]

>>

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

stereoParams=

stereoParameters-属性:

ParametersofTwoCameras

CameraParameters1:[1×1cameraParameters]

CameraParameters2:[1×1cameraParameters]

Inter-cameraGeometry

RotationOfCamera2:[3×3double]

TranslationOfCamera2:[-62.0630-1.30489.7289]

FundamentalMatrix:[3×3double]

EssentialMatrix:[3×3double]

AccuracyofEstimation

MeanReprojectionError:0.1107

CalibrationSettings

NumPatterns:93

WorldPoints:[54×2double]

WorldUnits:'millimeters'

estimationErrors=

stereoCalibrationErrors-属性:

Camera1IntrinsicsErrors:[1×1intrinsicsEstimationErrors]

Camera1ExtrinsicsErrors:[1×1extrinsicsEstimationErrors]

Camera2IntrinsicsErrors:[1×1intrinsicsEstimationErrors]

RotationOfCamera2Error:[2.4278e-043.9806e-042.4674e-05]

TranslationOfCamera2Error:[0.19990.13911.0925]

>>

5. 评估校准结果

通过可视化界面可以查看相机和标定板的距离为2500mm(2.5米)左右

如果和你的拍摄时实际情况不符请看第6步

6.改善校准

要改进校准,您可以删除高错误图像对,添加更多图像对或修改校准器设置。

发表评论

要发表评论,您必须先登录。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。