Halcon仿射变换如何实现效果?

摘要:应用仿射变换 affine_trans_image 作用​:将任意仿射变换矩阵(如刚性、缩放、错切)作用到图像(Image)上,生成变换后的新图像。 算子签名:affine_trans_image( Image : ImageAffinTr
应用仿射变换 affine_trans_image 作用​:将任意仿射变换矩阵(如刚性、缩放、错切)作用到图像(Image)上,生成变换后的新图像。 算子签名:affine_trans_image( Image : ImageAffinTrans : HomMat2D, Interpolation, AdaptImageSize : ) 输入参数: Image(输入对象): 原始输入图像 输出参数: ImageAffineTrans(输出对象):变换后的输出图像。 控制参数: HomMat2D (输入控制): 仿射变换矩阵 Interpolation (输入控制):插值方式(如 'bilinear', 'constant') AdaptImageSize(输入控制):是否自动调整输出图像尺寸('true'/'false') 方法 插值质量 速度 抗锯齿效果(缩放<1) 适用方法 nearest_neighbor 最低 极快 无 二值图像/实时 bilinear 标准中等(放大优) 快 无 通用变换 bicubic 最高(放大优) 慢 ❌ 无 高质量放大 constant 中等 中等 ✅ 均值滤波 抗锯齿缩小 weighted 最高(缩小优) 最慢 ✅ 高斯滤波 高质量缩小 AdaptImageSize = 'false'(默认) 输出图像尺寸​​ 保持与原图相同 超出原图边界的变换部分会被​ ​裁剪​​ 变换后空白区域用Grayval参数填充(默认为0) 坐标系不变 AdaptImageSize = 'true' 输出图像尺寸​​自动调整​​以完整包含变换后图像 原图所有数据均保留(无裁剪) 坐标系原点仍为(0,0),但图像宽高扩展 原点移至新左上角 Hobject imgIn, imgOut; affine_trans_image(imgIn, &imgOut, homMat, "bilinear", "true"); // 输出图像尺寸自动适配变换结果 affine_trans_region 作用​:将仿射变换矩阵作用到区域(Region)上,生成变换后的新区域。 算子签名:affine_trans_region( Regions : RegionAffineTrans : HomMat2D, Interpolate) 输入参数: Region(输入对象):输入区域(ROI)元组 输出参数: RegionAffineTrans(输出对象):变换后的输出区域元组。 控制参数: HomMat2D (输入控制): 仿射变换矩阵 Interpolation (输入控制):插值方式(如 'bilinear', 'constant') Hobject regionIn, regionOut; affine_trans_region(regionIn, &regionOut, homMat, "nearest_neighbor"); // 区域变换使用最近邻插值 affine_trans_contour_xld 作用​:处理亚像素精度的XLD轮廓(如边缘检测结果),保持原始精度。 算子签名:affine_trans_contour_xld(Contours : ContoursAffineTrans : HomMat2D) 输入参数: Contours(输入对象):输入轮廓(XLD)元组 输出参数: ContoursAffineTrans(输出对象):变换后的输出轮廓元组。
阅读全文