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

相关推荐
FakeOccupational4 天前
【电路笔记 电源模块】“桥接”布局法+电源隔离+GND隔离+统一地平面防干扰
笔记·平面
Evand J4 天前
【MATLAB程序】基于RSSI的RFID二维轨迹定位仿真介绍,EKF滤波增加轨迹定位精度。附下载链接
开发语言·matlab·平面·滤波·定位·导航
Evand J7 天前
【代码介绍】二维平面上的雷达跟踪与UKF(无迹卡尔曼滤波),高精度估计目标轨迹,输出真值、估计值、误差特性等
matlab·平面·雷达·滤波·定位·导航·跟踪
bcbobo21cn7 天前
Three.js绘制三角形网格平面
前端·javascript·平面·三角形面·基础材质
fengfuyao9857 天前
基于遗传算法的分布式电源选址定容优化(考虑环境因素)
算法·matlab·平面
fengfuyao9858 天前
MATLAB计算任意倾斜平面的太阳辐射量,包括直射、散射和反射分量
算法·matlab·平面
RReality9 天前
【Unity Shader URP】平面反射(Planar Reflection)实战教程
ui·平面·unity·游戏引擎·图形渲染·材质
普密斯科技13 天前
齿轮平面度与正反面智能检测方案:3D视觉技术破解精密制造品控难题
人工智能·计算机视觉·平面·3d·自动化·视觉检测
AI科技星16 天前
v=c 物理理论核心参数转换表达式大全
开发语言·线性代数·算法·数学建模·平面
AI科技星16 天前
张祥前统一场论中两个电荷定义的统一性解析
开发语言·线性代数·算法·数学建模·平面