奶牛及猪只点云7个关键点计算与y-z平面平行截面周长求解问询
畜牧点云体型特征计算方法
特征点参考示意图

7个主要特征点提取步骤
- 先完成点云预处理:先调用
statistical_outlier_removal算法剔除离群噪声点,再用RANSAC平面拟合算法分割并去除地面点,最后将动物点云做刚性对齐,使动物体长方向与x轴完全平行,统一坐标基准。 - 逐个定位特征点:
- 头顶点:全局点云z坐标最大值对应的点
- 尾根点:x坐标最小值区间内的z坐标次高点(排除尾部下垂的干扰点)
- 肩高点:体长前1/3区间内z坐标最大值对应的点
- 臀高点:体长后1/4区间内z坐标最大值对应的点
- 前胸最低点:体长前1/5区间内z坐标最小值对应的点
- 腹下最低点:体长中间1/2区间内z坐标最小值对应的点
- 体宽最大点:所有y坐标极差最大的x截面对应的左右边缘极值点
截面点云筛选与周长计算
截面场景参考

平行于y-z平面的截面点云筛选方法
因为已经将体长方向对齐到x轴,平行于y-z平面的截面本质是固定x值的切片,筛选逻辑如下:
- 确定截面中心x坐标:比如需要提取肩高截面,就取肩高点对应的x值作为
x_center - 设置厚度阈值:取点云平均点间距的2~3倍作为阈值
thresh,厚度阈值不要设置过大,否则会混入非截面的点导致周长计算误差,筛选所有满足|x - x_center| < thresh的点,即为该截面的初始有效点 - 二次去噪:对初始有效点做小范围离群点过滤,排除其他部位误入的 stray 点
截面周长计算方法
- 维度降维:将筛选到的三维截面点云去掉x坐标,保留(y,z)二维坐标集合
- 轮廓拟合:优先用凸包算法拟合截面的最小外接轮廓,若需要更高贴合度可使用alpha shapes算法拟合不规则体表轮廓
- 周长计算:遍历轮廓的所有相邻顶点,计算每两点间的欧氏距离后求和,所得结果即为截面周长
内容的提问来源于stack exchange,提问作者Andre Ahmed
相关产品推荐
相关产品推荐

