• HALCON 2D高精密测量项目全流程解析


    1.标定相关的任务–>>解决畸变和坐标系的转换

    1.1 描述和查找标定对象

    1.2 补偿透视和径向变形,径向畸变包括枕形畸变和桶形畸变

    1.3 相机参数(内外参)

    1.4 图像坐标到世界坐标的转换

    1.5 自标定:不用标定板用图像四周包含直线特征进行标定

    1.6 其他标定:一台相机标定、多台相机标定、手眼标定

    2.分割模型(Division)

    分割模型使用一个参数(k)对径向变形进行建模,光学中心就在图像中心

    【k>0枕形畸变】 【k=0没有畸变】 【k<0桶形畸变】

    [‘area_scan_division’,Focus,Kappa,Sx,Sy*,Cx,Cy,ImageWidth,ImageHeight]

    Focus:焦距

    Kappa:k值,初始值为0

    Sx,Sy*:中心缩放比例

    Cx,Cy:图像中心

    ImageWidth,ImageHeight:图像大小

    3.多项式模型(polynomial):光学中心可能不在图像中心

    多项式模型使用三个参数(K1,K2,K3)对径向变形进行建模,并使用两个参数(P1,P2)对偏心变形进行建模

    [‘area_scan_polynomial’,Focus,K1 ,K2,K3,P1,P2,Sx,Sy*,Cx,Cy,ImageWidth,ImageHeight]

    Focus:焦距

    K1 ,K2,K3,P1,P2:多项式模型参数,初始值为0

    Sx,Sy*:中心缩放比例

    Cx,Cy:图像中心

    ImageWidth,ImageHeight:图像大小

    4.透视畸变

    被摄物越远,显得越小;镜头离被摄体越远,被摄体外观上的大小变化越小

    透视畸变术语三维畸变的范畴,同意姿态可以看作为透视变化的特殊形式。单相机无法解决透视畸变

    单相机和四轴机器人标定的主要误差也是透视畸变

    5.倾斜镜头:旋转描述旋转轴的方向,倾斜度描述了镜头的实际倾斜度

    area_scan_tilt_ * 普通FA镜头倾斜

    area_scan_tilt_image_side_telecentric_* 像方倾斜

    area_scan_tilt_object_side_telecentric_* 物方倾斜

    area_scan_tilt_bilateral_telecentric_* 双远心倾斜

    【tilt 倾斜】【bilateral 双边】【telecentric 远心】

    6.相机标定内参

    CameraType:摄像机类型

    Focus:镜头焦距(仅适用于在镜头物侧执行透视投影的镜头,远心镜头设置0)初始值为所用镜头的标称焦距,例如0.008mm

    Magnification:镜头的放大倍率(仅用于物侧远心镜头)

    Kappa(K):变形系数,用于建模镜头的径向和偏心变形(仅用于多项式模型),将0.0用作所有五个系数的初始值

    ImagePlaneDist:镜头出瞳(小孔)到像平面(Sensor)的距离

    Tilt,Rot:旋转轴是广州相对于传感器平面法线倾斜的角度。旋转角度是围绕光轴(z轴)的旋转。这些角度通常基于导致使用倾斜透镜的考虑因素而大致已知,或者可以从倾斜透镜的机构中读取

    Sx,Sy:比例因子

    Cx,Cy:径向畸变的中心,使用图像的半宽和半高作为初始值

    ImageWidth,ImageHeight:采样图像的宽度和高度

    Vx,Vy,Vz:运行矢量的X,Y和Z分量(先扫模型)

    在这里插入图片描述

    7.六边形标定板

    7.1 至少看到一种取景器图案才能找到校准板。为了确保印版没有倒转,至少需要看到二个。
      7.2 坐标系的起点位于第一个取景器图案的中心标记的中心。坐标系的z轴指向校准板, x轴指向右侧, y轴指向下方,沿z轴方向观察。
      7.3 优点:标定板不必在图像中完全可见

    对应算子:create_caltab

    在这里插入图片描述
    在这里插入图片描述
    Halcon标定程序,使用标定助手会更简单

    *create_caltab生成六边形标定板
    *标定的Marks点,13行每行15个

  • 相关阅读:
    Java实现停车场收费系统 JAVA+Vue+SpringBoot+MySQL
    mybatis plugin源码解析
    栈与队列经典题目——用栈实现队列
    分布式 PostgreSQL 集群(Citus),官方快速入门教程
    Spark优化-开启动态资源分配
    Eureka原理实践
    文件包含漏洞的详解
    String vs StringBuffer vs StringBuilder
    Selenium关于内容信息的获取读取
    设计模式桥接模式
  • 原文地址:https://blog.csdn.net/m0_37302966/article/details/140369413