halcon 和PCL 中平面矫正算法原理

一、什么叫"平面矫正"?

在 HALCON / PCL / 工业视觉 / 点云 里,所谓 平面矫正,本质只有一件事:

通过估计一个参考平面,把点云或图像坐标系旋转 / 平移,使该平面满足某个规范姿态

常见目标形式:

HALCON / PCL 做的不是"神秘算法",而是:RANSAC 平面 + 坐标变换

目标 数学表达
平面变成 XY 平面 z=0
平面法向对齐 Z 轴 n=(0,0,1)
平面"摆正" 去除倾斜
标定基准 统一世界坐标

二、统一数学模型(核心骨架)

1️⃣ 平面模型

无论 HALCON / PCL:

2️⃣ 平面矫正的数学目标

三、HALCON 中平面矫正算法原理

1️⃣ HALCON 的"官方思路"

HALCON 并不直接叫"平面矫正",而是拆成三步:

cpp 复制代码
① 平面提取(RANSAC / MSAC)
② 平面参数 → 坐标变换
③ 点云 / 图像变换

2️⃣ 平面提取(第一性原理)

核心算子

segment_planes_object_model_3d

内部算法

  • MSAC(RANSAC 的改进)

  • 目标函数:

3️⃣ 从平面到"矫正"的数学过程(关键)

(1) 得到平面法向

cpp 复制代码
PlaneInfo = [nx, ny, nz, d]

(2) 构造旋转矩阵(核心思想)

(3) 平移(让平面落在 z=0)

4️⃣ HALCON 中的实现哲学

HALCON 帮你做了第 ① 步 ,

第 ②③ 步通常由:

  • rigid_trans_object_model_3d

  • pose_to_hom_mat3d

完成。

📌 HALCON = 高度封装的"RANSAC + 刚体变换"

四、PCL 中平面矫正算法原理(更透明)

1️⃣ 平面分割(RANSAC)

复制代码
pcl::SACSegmentation 

数学模型:

PCL 的典型思路:

(1) 得到法向量

cpp 复制代码
Eigen::Vector3f n(a,b,c);

(2) 目标法向

cpp 复制代码
Eigen::Vector3f z(0,0,1);

(3) 构造旋转矩阵

cpp 复制代码
Eigen::Quaternionf q; 
q.setFromTwoVectors(n, z);
 Eigen::Matrix3f R = q.toRotationMatrix();

📌 这一步 = Rodrigues 的数值稳定实现

3️⃣ 平移补偿

找任一平面点 ppp,变换后应满足:

z=0

平移:t = -R * p;


4️⃣ 应用刚体变换

复制代码
pcl::transformPointCloud(cloud, cloud_out, T);

五、HALCON vs PCL 的本质区别(重点)

https://blog.csdn.net/weixin_39354845/article/details/134760348

相关推荐
xfilm埃利测量21 天前
四探针法测电阻:原理讲透 + 常见问题一次说清
测试工具·平面·四探针·薄膜电阻测量
m0_614523551 个月前
平面跟踪为什么中途漂移:按首次异常帧建立排查记录
人工智能·平面·视频编辑
xfilm埃利测量1 个月前
平面显示导电膜方阻精准表征:四探针助力靶材高效反向设计
功能测试·测试工具·平面·四探针·薄膜电阻测量
啊阿狸不会拉杆1 个月前
《计算机网络-自顶向下方法》5.5 SDN控制平面 读书笔记
计算机网络·平面
李游Leo1 个月前
【共创稿事节】 HarmonyOS 7 空间化 UI 实战:从平面布局到空间层级的界面重构
ui·平面·harmonyos
意图共鸣1 个月前
意图共鸣科技《智能体接口化白皮书2.0》从三脚架到四面体——三角模型不是平面的,是立体的
科技·平面
算法大模型备案干货咪1 个月前
《敏感词库工程实现:从平面词表到分层拦截系统》
平面
我爱cope1 个月前
【计算机网络 | 网络层12:SDN:控制平面与数据平面分离意味着什么?】
网络·学习·计算机网络·平面
陈天伟教授1 个月前
【30天学会机械制图 第13 天】项目三 从复杂立体到简单立体,再到平面图形 任务2 认识截交线和相贯线
平面·工程制图·机械制图