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, ®ionOut, homMat, "nearest_neighbor");
// 区域变换使用最近邻插值
affine_trans_contour_xld
作用:处理亚像素精度的XLD轮廓(如边缘检测结果),保持原始精度。
算子签名:affine_trans_contour_xld(Contours : ContoursAffineTrans : HomMat2D)
输入参数:
Contours(输入对象):输入轮廓(XLD)元组
输出参数:
ContoursAffineTrans(输出对象):变换后的输出轮廓元组。
