标定工具库测试
一、计算相机内参:对两个相机进行内参标定,并将标定结果保存到指定的文件中

采集图像:相机1-16张 相机2-17张
定义保存相机1/2内参的文件(.yml)路径。
定义相机1/2采集的图片文件夹路径。
定义相机1/2存储文件名的向量
获取文件夹中所有的文件名(存入向量)。
定义需要筛选的文件后缀。
筛选文件名1/2向量中以指定后缀结尾的文件名。
定义相机内参对象1/2。
定义图像尺寸,定义标定板尺寸,定义标定板格子的实际尺寸。
定义标定参数:是否圆点标定板、是否鱼眼相机、是否复杂相机模型。
设置第一个相机的标定参数,计算第一个相机的内参,保存第一个相机的内参。
设置第2个相机的标定参数,计算第2个相机的内参,保存第2个相机的内参。相机1内参文件

2. 对立体相机(左右相机)进行标定,并将标定结果保存到指定的文件中
定义立体标定对象
定义左右相机的内参对象
定义保存左右相机内参和立体相机模型的文件路径
定义标定图片文件夹路径
定义存储文件名的向量(左右相机图片文件名向量、所有文件名向量)
获取文件夹中的所有文件名
定义做相机和有相机图片文件名前缀
定义标定参数(是否圆点标定板、是否鱼眼相机、是否复杂相机模型)
从所有文件名向量中筛选出左右相机的图片文件名向量
定义图像尺寸
定义标定板的尺寸
定义标定格子的实际尺寸
为了获取角点信息必须重新标定左/右相机:做相机内参对象-设置重投影误差、设置参数、执行计算、保存参数。
设置立体相机的左右相机
打印左右相机所有参数
计算立体标定
保存立体相机模型
3. 对立体相机拍摄的左右相机图像进行立体矫正,并将矫正后的图像保存到指定的文件夹中
定义保存左右相机内参和立体相机模型的文件路径
定义所有测试图片文件夹和校正后图片保存文件夹路径
创建矫正后图片保存文件夹
定义存储文件名的向量(测试图片文件名向量,所有相机图片向量)
定义左右相机图片文件名前缀
获取所有测试图片文件名向量
获取左右相机图片文件名向量
根据保存的内参路径和立体模型路径初始化立体标定对象
遍历左右相机图片文件名,进行矫正
{
定义校正后的左右相机图像Mat
定义临时左右相机图像Mat
读取左右相机图像
对左右相机图像进行矫正,第五个参数会否剪裁图像
定义路径解析变量
解析左相机文件路径,生成矫正后的文件名
解析有相机文件路径,生成矫正后的文件名
保存矫正后的左右相机图像
}
4. 进行RGB和ToF相机的标定,并利用标定结果生成彩色点云
所有图像文件名向量(存储红外图像文件名的向量、存储RGB图像文件名的向量、
存储点云数据文件名向量、存储深度图像文件名向量)
循环遍历27个文件夹(每个文件夹下包括四个图像)
{
使用字符串流构建文件夹路径
构建第i个文件夹路径
存储第i个文件夹中文件名的向量
获取第i个文件夹下所有文件名
(是否找到)红外图像标志位、RGB图像标志位、点云数据标志位、深度图像标志位
当前红外图像文件名、当前RGB图像文件名、当前点云数据文件名、当前深度图像文件名
遍历当前文件夹下所有文件
{
如果所有类型的图像都已找到,则退出循环
根据文件名中的特定字符串识别不同类型的图像,并更新标志位和文件名
}
如果在当前文件夹中找到了所有类型的图像,则将文件名添加到对应向量中
}
输出各类型图像文件的数量
开始标定
创建一个RGBTOF校准类图像
定义标定参数文件的路径
尝试加载标定参数,如果失败则执行以下操作
{
定义棋盘格的尺寸
定义棋盘格每个格子的物理尺寸
设置棋盘格参数
定义RGB图像的尺寸
设置RGB相机的参数
定义ToF图像的尺寸
设置ToF相机的参数
执行相机标定
计算标定结果
保存标定参数到文件
}
测试集处理
定义测试集文件夹路径
定义存储文件夹中文件名的向量
获取测试集文件夹中的所有文件名
初始化图像标志位
定义当前处理的文件名变量
遍历测试集文件夹中的所有文件
{
如果所有类型的图像都已找到,则退出循环
如果还未找到红外图像
{
在当前文件名中查找"_ir.png",如果找到则认为是红外图像
{
记录红外图像文件名
更新红外图像标志位
跳过当前循环,进入下一次循环
}
}
如果还未找到RGB图像
{
在当前文件名中查找"_rgb.jpg",如果找到则认为是RGB图像
{记录RGB图像文件名,更新RGB图像标志位,跳过当前循环,进入下一次循环}
}
如果还未找到点云数据
{
在当前文件名中查找"_points.pcd",如果找到则认为是点云数据
{记录点云数据文件名,更新点云数据标志位,跳过当前循环,进入下一次循环}
}
如果还未找到深度图像
{
在当前文件名中查找"_depth.png",如果找到则认为是深度图像
{记录深度图像文件名,更新深度图像标志位,跳过当前循环,进入下一次循环}
}
}
如果在测试集文件夹中找到了所有类型的图像,则将文件名添加到对应的向量中
读取RGB图像和深度图像
定义保存点云的文件名
定义输出的点云对象
使用标定对象和读取的图像生成彩色点云,并保存到文件这个函数的主要功能是进行RGB和ToF相机的标定,并利用标定结果生成彩色点云。首先,函数遍历指定文件夹中的图像,根据文件名中的标识符筛选出IR图像、RGB图像、点云数据和深度图像的文件名,并将这些文件名分别存储。接着,如果无法加载已有的标定参数文件,则重新进行标定操作,包括设置标定板参数、相机参数,并执行标定计算,最后将标定结果保存到文件中。
在完成标定后,函数使用标定结果对测试集中的RGB图像和深度图像进行处理,生成彩色点云,并将点云数据保存为PCD文件。这一过程涉及到图像处理、文件操作、标定计算和点云生成等多个步骤,是RGB和ToF相机标定及其应用的一个完整示例。
5. 将点云标定到地面
定义点云文件名
实例化线点工具类
设置点云文件
定义变换矩阵
获取点云调整到地面的变换矩阵
输出变换矩阵6. 测试通过点云计算激光线夹角
定义点云文件名
定义点云对象
读取点云文件
定义点云指针和滤波后点云指针
复制点云数据到指针
定义直通滤波器
设置输入点云
设置过滤字段为y轴
设置过滤范围
过滤点云得到滤波后点云
定义角度变量
计算夹角
输出夹角
修改过滤范围,进行第二次滤波和夹角计算,输出夹角7. 测试平面点云平面度
定义点云文件名
定义点云对象
读取点云文件
定义异常点百分比
定义最大距离和最小距离变量
计算平面度作者陈晓永:智能装备专业高级职称,软件工程师,机械设计中级职称,机器人与自动化产线仿真动画制作
The End
2383

被折叠的 条评论
为什么被折叠?



