个人邮箱:570664186@qq.com,如有疑问请备注CSDN
实验:
使用双目相机对棋盘靶标进行拍摄,左右相机同步进行拍照。
数据处理
使用matlab处理图像:
-
打开应用程序
-
导入图像
-
图像处理
- 跑出来图像误差太大,有个别柱状图相比其它柱状图高度差距过大。
- 点击误差最大最大的柱状图,看上方图像,发现好多红色十字并未在蓝色圆圈里
- 删除误差较大的图像:
点击柱状图,会自动跳到对应图像组,右键会出现remove选项 点击进行删除,重复删除误差较大(最高/最低)图像组。此过程比较耗时,请耐心等待。
在删除过程中,会遇见所有柱状图或者大部分柱状图高度发生变化,请继续寻找差距最大的进行删除。
当柱状图变成到这种时,高度差变化不大,开始删除左右目也就是蓝色和黄色柱状图差距较大的图像组进行删除。此过程中,遇见高度高的或者低的,也需要进行删除。
此过程会出现很多问题,建议多次尝试,上面仅是个人经验。
最后成型图像为下:
- 获取数据:
- 双击打开
- a1,a2,R,T 四个数值为下图前四行(这四个值为程序中需要输入的四个变量)
- 双击上图的变量所对应的行,处理a1,a2,以a1举例:
标红为左相机内参数矩阵
- 点进去之后,全选3*3矩阵,右键选择转置变量
- R/T点进去也需要直接转置变量。
- 将刚才四组转置矩阵,输入到main程序中。
a1=[1646.80777266415,0,0
0,1642.33223144883,0
618.323694951300,509.886178480187,1]%左相机的内参数矩阵
a2=[[1707.40220639450,0,0
0,1687.93360721008,0
695.377400100982,558.384660026736,1]]%右相机的内参数矩阵
r=[0.759156062074799,-0.0295606920271779,-0.650237063617538
0.00566446146072197,0.999230431462540,-0.0388131255575377
0.650884004482706,0.0257819767678805,0.758739284855145]%右相机相对于左相机的旋转变换矩阵
t=[-356.762009162622%右相机相对于左相机的平移变换矩阵
4.18110688845511
129.126359347079]
程序处理:
使用画图板打开用双目相机拍摄的有物体的图像,选取六个或六个以上特征点,需要注意的是,特征点需要在左右相机的图片中都存在,并且在选取时,点之间的线不能交叉,最好按照一定顺序取点。
注意:程序里面的n为特征点个数,否则会出现维度错误
%将所选的x,y分别填入下方,下面矩阵函数,逗号左边1代表x,2代表y
%逗号右边代表特征点的编号,请按照取点顺序输入
%pointuv1为左目特征点矩阵pointuv2为右目特征点矩阵。
pointUV1(1,1)=703;
pointUV1(2,1)=258;
pointUV1(1,2)=723;
pointUV1(2,2)=626;
pointUV2(1,1)=182;
pointUV2(2,1)=477;
pointUV2(1,2)=