【Halcon学习笔记】15.投影变换
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-