matlab双目相机标定校正_Matlab 单双目相机标定+畸变校正
Matlab 单双目相机标定+畸变校正
2019年1月14日 2019年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:选中径向畸变:“2 coefficients”并且选择偏差:“Skew“和切向畸变:“Tangential Distortion“
径向畸变:通常,两个系数足以进行校准。对于严重失真,例如在广角镜头中,您可以选择3″“3 coefficients””个系数来包含k3。
偏差: 选择Compute Skew 复选框时,校准器会估算图像轴偏斜。某些相机传感器包含缺陷,导致图像的x轴和y轴不垂直。您可以使用skew参数对此缺陷进行建模。如果不选中该复选框,则假定图像轴是垂直的,大多数现代相机都是这种情况。
切向畸变: 当镜头和图像平面不平行时,发生切向畸变。切向失真系数模拟了这种类型的失真:
综上所述,我的选项为:
径向畸变:“2 coefficients” 因为我的单目摄像头不是广角
偏差:“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为标定板小格子实际边长
其他选项:
径向畸变:“2 coefficients” 因为我的单目摄像头不是广角
偏差:“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. 改善校准
要改进校准,您可以删除高错误图像对,添加更多图像对或修改校准器设置。
发表评论
要发表评论,您必须先登录。
matlab双目相机标定校正_Matlab 单双目相机标定+畸变校正相关推荐
- 我的Qt作品(17)OpenCV畸变标定,针对单张圆点图片实现畸变校正
1.详情见我在论坛发的帖子:单张圆点图片实现畸变校正 http://www.ihalcon.com/read-17421.html 2.畸变校正和九点标定的实验结果,带来的精度提升: 视野范围400m ...
- 传感器标定(1.单目相机的标定)
多传感器中,我们在使用前需要给出设备的标定,首先我们先对单个设备进行标定(后面使用需要进行联合标定) 联合标定工具诸如Apollo.Autoware等自动标注工具,以及一些开源的方法等,可以参考一些经 ...
- python绘制黑白棋盘_生成黑白棋盘标定图和单目相机标定(python+opencv实现)
学习记录. 事实上很早就接触过视觉定位这东西,但是到现在才返回头学习一下相机的标定,真是可耻啊!我把想法和过程记录一下. 相机成像 相机的成像原理--小孔成像 然而,在实际由于设计工艺问题.相机安装环 ...
- 生成黑白棋盘标定图和单目相机标定(一)(python+opencv实现)
学习记录. 事实上很早就接触过视觉定位这东西,但是到现在才返回头学习一下相机的标定,真是可耻啊!我把想法和过程记录一下. 相机成像 相机的成像原理--小孔成像 然而,在实际由于设计工艺问题.相机安装环 ...
- Halcon例程(基于多个标定图的单目相机标定)详解—— Camera_calibration_multi_image.hdev
一.前言 在我的工业相机专栏里已经将相机标定涉及到的理论部分讲解完毕,为什么要标定以及标定要求出什么参数呢,用一个Halcon 例程来帮助理解. 这个例程是比较经典的标定程序,基本将标定过程讲的比较清 ...
- 单目相机、双目相机和RGB-D相机学习笔记(一些视频和博文网址)
目录 1. 单目相机 1.1 摄像头原理 1.2 单目相机的标定 2 双目相机 2.1 双目相机定位原理 2.2 双目相机的缺陷 3 RGB-D相机 3.1 深度相机结构光原理 3.2 RGB-D相机 ...
- 「 SLAM lesson-1.2 」传感器分类、单目相机、双目相机、深度相机
结合 高翔老师的著作<视觉SLAM十四讲:从理论到实践>,加上小白的工程经验共同完成.建议作为笔记功能反复使用. 一.用于定位的传感器分类 主要分成两类: 1). 传感器携 ...
- 一文图解单目相机标定算法
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 有一天,蟹老板找底下的员工川建国同学: 等蟹老板走后,然后转头问旁边的学霸李雷同学: 李雷同学整理了下 ...
- 【计算机视觉】OpenCV实现单目相机标定
文章目录 单目相机标定(基于Python OpenCV) 1.上期填坑 2.单目相机标定 2.1 数据采集 2.2 角点提取 2.3 参数求解 2.4 参数评估(重投影误差) 2.5 相机位姿(棋盘位 ...
最新文章
- 一个搜索需求搞垮微服务
- 传智播客韩顺平老师2011ssh实战项目校内网的数据库设计32张表全解
- int i=i++;和i=++i;和i++
- opengl库中gl glu glut glaux的区别
- 亚马逊AWS 数据中心起火,致 5 人死亡、50 人受伤
- c++ using 前置声明_C++ 类声明 类前置声明范例
- 给array添加元素_前囧(06篇)Array 方法详解
- JSON在JS和JAVA的处理
- android SharedPreferences的用法
- 工业级光纤收发器如何正确使用和维护?
- Java学习笔记11-2——Spring5
- 被女孩子冷落了,最适合看的20句话
- Qt学习笔记-服务器端获取UDP封包源IP地址
- redis 槽点重新分配 集群_弄懂一致性哈希后我打通了redis分区集群的原理
- Linux自学,第一天
- 基于ConfuserEx的混淆加壳
- javase核心day13
- 揭秘 Longhorn 如何为 3.5万 个 Kubernetes 节点提供持久存储?
- win10系统怎么修复网络连接服务器失败怎么办,Win10网络重置后无法连接网络怎么办 网络重置后恢复网络方法教程...
- 微俱聚平台更新日志jquery时间轴特效