3D轮眉测试说明, 后续整理
轮眉
WBH3DAlgorithm_WBH
- 从点云中读取原始数据通过标定架矩阵转换为实际坐标系
- GetMiddleX()获取X中心坐标 CenterX = 标定点坐标X + X向偏移 = Calibration.MasterGaugeExParam.Point.X + OffsetMiddle
- 筛选点云中X坐标在CenterX ± AutoROISize * 2范围内的所有点(绿色区域)
- GetCentroid通过点云中心筛选有效点
- 根据点中最小Y + AutoROISize排除一部分下面的点
- FindALlTopPositions筛选聚类后X宽度大的点集合, 排除X向点数少的簇,找到满足条件的各簇的最高点topPositions
- 筛选出大于最小topPosition - 150的点(取出下方无效点)作为绿色区域
- FindJumpPoints-从上往下寻找Z向距离差较大点的前一个点及其周边点的集合
- Dictionary<int, List
> LineMaps, 从上述点云中以X为key存储相同X±2坐标点的集合 - LineMaps所有value找到连续点Z向差值大于dropDepth的点, 即断点处, 添加断点附近点的集合(红色区域)
- 拟合曲线找到曲线最高点(若配置强制轮眉中心则从曲线中取出X为CenterX处的Y值作为最高点)
- 取点云中最外侧的Z作为最高点的Z
- 判断最高点X是否在ROI内合理范围
轮毂
WBH3DAlgorithm_Wheel_Hub_Curve
Calculate
FindTop
WhitePointsGetHandle分离提取轮眉下方点集合
FindTop所有距离最高点Y向小于4mm点的集合
FindTopPosition根据最高点的集合拟合曲线求出轮胎最高点TopPosition并估算轮胎半径TireRadiusFit
根据轮胎半径和最高点估算轮心Center,取轮胎半径+20mm范围内的所有点
FindPoint
FindHubPosition
FindXOrYFit
findDatas为计算的轮心XY±20mm的矩形边上的点
找到轮胎最高点后Y-轮胎半径+轮毂半径后的点估算轮毂最高点坐标HubPosition
在计算的轮胎中心点基础上XY坐标左右上下范围放大±20mm
_FindHubPosition筛选所有点中Z向深度差值最大的小范围集合及最大Z向差值GreenPointsToMid轮胎半径+20mm内所有点到轮心附近的距离满足轮毂半径±40mm切角度在±AutoROISize / 10内的环形内的所有点
将上述点全部集中在center相同XY下, Z向深度不同, 所有点沿圆心压缩到同一Y轴上
FindMidFeaturePoint以oneRange为范围筛选所有点中Z向深度差值最大的范围
取出所有点中Z向差值最大的部分
GetHubPosition向深度差值最大的点集合中区Z为平均值处的点作为轮毂最高点HubPosition
通过TopPosition和轮胎半径计算出轮胎中心点以轮胎半径画圆
通过HubPosition和轮毂半径计算出轮毂中心点以轮毂半径画圆
1 | //FindLine |