线结构光三维重建法兰盘

本文详细介绍了线结构光三维重建法兰盘的方法,包括光平面方程的求解、相机平移单位向量的计算以及三维重建的关键步骤。在光平面方程部分,强调了标定板尺寸对结果的影响;在相机平移环节,提到了步进电机移动的精度问题及其对重建准确性的影响;最后,讨论了三维重建结果,指出曝光时间和ROI设置对图像采集的重要性,并提出螺纹重建的挑战及可能的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

线结构光三维重建可以得到法兰盘的三维点云图,进一步的,我们可以对螺纹处的点云数据进行分析,本节主要记录线结构光三维重建的主要步骤及一些问题。

一、光平面方程

1.标定板位置不变,拍摄有激光和无激光两张照片。移动标定板位置,重复拍摄多组。

2.依据标定板无激光图片标定相机内参

3.建立文件夹laser,remaplasr,lasermidline,lasertest

(警示)此处使用了(10,8)标定板,需要更改实验室程序参数

cControl.FindChessPointsDIRAuto(10, 8, 10, imgPath, IS_SMALL_SCREEN, IS_CALIB_SMALL);	//Small calib board

此处为(10,8),此前因为(10,8)程序不通,便认为应是(8,10),导致标定结果有错,致使后续重建失败。

不通的原因是实验室同一程序不同个人作过修改

//reSortImageCorners函数中

//对变换后的标定点进行排序
	std::vector<Point2d> idx_list;
	imgPoints.resize(rowNum*colNum);
	std::vector<cv::Point2f>::const_iterator cit = imageCorners.begin();
	for (std::vector<cv::Point2f>::const_iterator it = warp_list.begin(); it != warp_list.end(); ++it)
	{
   
   
		cv::Point2f pos = *it;
		cv::Point2d idx;
		idx.y = int(roundf((pos.y - 2*delta) / delta));
		idx.x = int(roundf((pos.x - 0) / delta));
		imgPoints[idx.x + idx.y*rowNum] = *cit;
        //上应为rowNum,而手中拿到代码此处为colNum*****
		++cit;
	}

3.依据相机内参、外参和上述拍摄图片得到线结构光光平面方程

    String calibFilePath = "D:\\Graduate\\Data\\1119\\cam\\CalibrationResults";//相机标定文件夹
	String laserImgPath = "D:\\Graduate\\Data\\1119\\laser\\";//线结构光路径文件夹
	String remapLaserImgPath = "D:\\Graduate\\Data\\1119\\remaplaser\\";//校正线结构光路径文件夹

二、相机平移单位向量

1.使用步进电机移动平移台固定距离(非必须1mm)

2.相机拍摄标定板图片

3.重复1、2

排查不能重建的原因时,曾发现calRT_Mat函数中的问题,将矩阵的定义放在了for循环中,导致后续结果不变化。需要注意的是该问题只会影响结果的准确性,不是重建失败的根本原因。

    int pic_num =9;//设置偏移标定图像数量
    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值