欢迎光临散文网 会员登陆 & 注册

【Halcon学习笔记】15.投影变换

2022-12-07 20:09 作者:Ryou2  | 我要投稿

1.概述

        投影变换,也称为透射变换、投影映射。是一种是二维(x,y)到三维(X,Y,Z),再到另一个二维(x',y')空间的变换。

        与仿射变换不同,投影变换的结果是任意形状,且不一定保持平直性的(如对边不再平行、畸变等);而仿射变换的结果是维持形状,且保持平直性的。可以把仿射变换理解为投影变换的一种特殊形式。

        注:投影变换矩阵有8个未知数,要求解就需要找到至少4组映射点。

2.相关算子

2.1 生成/计算

1)hom_vector_to_proj_hom_mat2d()        //用给定点生成投影变换矩阵,输入点的坐标为三维齐次坐标

        Px:变换前原图像的行坐标

        Py:变换前原图像的列坐标

        Pw:使用有限点,通常 Pw和Qw设置为1

        Qx:变换后原图像的行坐标

        Qy:变换后原图像的列坐标

        Qw:使用有限点,通常 Pw和Qw设置为1

        Method:变换的方法

        HomMat2D:输出的变换矩阵

2)vector_to_proj_hom_mat2d()         //用给定点生成投影变换矩阵,输入点为二维非齐次坐标

        Px:图像变换前图像的顶点x坐标。

        Py:图像变换前图像的顶点y坐标。

        Qx:图像变换后图像的顶点x坐标。

        Qy:图像变换后图像的顶点y坐标。

        Method:变换方式选择。默认 'normalized_dlt',

        CovXX1:图像变换前图像对应x值坐标的row方向的变动。默认[]。

        CovYY1:图像变换前图像对应y值坐标的col方向的变动。默认[]。

        CovXY1:图像变换前图像对应点的协方差。默认[]。

        CovXX2:图像变换后图像对应x值坐标的row方向的变动。默认[]。

        CovYY2:图像变换后图像对应y值坐标的col方向的变动。默认[]。

        CovXY2:图像变换后图像对应点的协方差。默认[]。

        HomMat2D:输出映射变换矩阵。

        Covariance:输出9×9协方差矩阵的投影变换矩阵。

2.2  执行(执行投影变换)

1)projective_trans_image()          //对图像投影变换

        Image:待变换的图像

        TransImage:变换后的图像

        HomMat2D:投影变换的矩阵

        Interpolation:插值方法

        AdaptImageSize:是否自动调整输出图像的大小

        TransformDomain:是否转换输入图像的域

2)projective_trans_image_size()        //对图像投影变换,并且指定输出图像的大小

3)projective_trans_region()                //对区域投影变换

4)projective_trans_contour_xld()        //对XLD投影变换

5)projective_trans_pixel()                    //对像素投影变换

2.3 可变形模板

1)create_planar_uncalib_deformable_model()    //创建不带标定的可变形模板,支持投影变形

        Template:输入的模板图像

        NumLevels:金字塔级别

        AngleStart:开始角度(不使用此参数)

        AngleExtent:角度范围(不使用此参数)

        AngleStep:角度步长

        ScaleRMin:行方向的最小比例

        ScaleRMax:行方向的最大比例(不使用此参数)

        ScaleRStep:行方向的缩放步长

        ScaleCMin:列方向的最小比例

        ScaleCMax:列方向的最大比例(不使用此参数)

        ScaleCStep:列方向的最小比例

        Optimization:生成模型的优化类型

        Metric:设置匹配方法,是否使用极性

        Contrast:模板图像中对象的对比度设置的滞后阈值

        MinContrast:搜索图像中目标的最小对比度

        GenParamName:通用参数名称

        GenParamValue:通用参数值

        ModelID:模板的句柄

2)find_planar_uncalib_deformable_model()         //匹配不带标定的可变形模板,支持投影变形

        Image:输入的匹配图像

        ModelID:模板的句柄

        AngleStart:开始角度

        AngleExtent:角度范围

        ScaleRMin:行方向的最小比例

        ScaleRMax:行方向的最大比例

        ScaleCMin:列方向的最小比例

        ScaleCMax:列方向的最大比例

        MinScore:最小分数

        NumMatches:匹配结果的个数

        MaxOverlap:重叠系数

        NumLevels:金字塔级别

        Greediness:贪婪度

        GenParamName:通用参数名称

        GenParamValue:通用参数值

        HomMat2D:输出匹配过程中所需要的变换矩阵(默认情况下,原点是用于使用创建可变形模型的图像域(区域)的重心)

        Score:匹配分数

3.投影变换在Halcon中的应用步骤  

        投影变换一般在图像校正方面的应用较为常见。

3.1 场景1:校正单张图像

1)读取、处理图像

2找出投影前的4个点

3设置投影后的4个点

4根据投影前后点生成投影矩阵

5用投影变换矩阵校正图像

3.2 场景2:校正多张图像

1)寻找特征和特征中心

2)创建可变形模板(支持投影变换)

3)模板匹配

4)匹配成功得到模板矩阵

5)逆矩阵

6)矫正图像

by Ryou2-


【Halcon学习笔记】15.投影变换的评论 (共 条)

分享到微博请遵守国家法律