工控编程吧

标题: 工业视觉halcon affine_trans_image函数介绍 [打印本页]

作者: qq263946146    时间: 2019-6-8 13:25
标题: 工业视觉halcon affine_trans_image函数介绍
affine_trans_image(Image : ImageAffineTrans : HomMat2D, Interpolation, AdaptImageSize : )
affine_trans_image应用任意仿射2D变换,即,缩放、旋转、平移和倾斜(skewing)到Image ,
并在ImageAffineTrans返回转换后的图像。
仿射变换由HomMat2D中给出的齐次变换矩阵来描述,
它可以由hom_mat2d_identity、
hom_mat2d_scale、
hom_mat2d_rotate、
hom_mat2d_translate等操作符来创建,
也可以由vector_angle_to_hard等操作符生成。


齐次变换矩阵的分量解释为:图像的行坐标对应于x,列坐标对应于定义变换矩阵的坐标系的y。
这对于获得图像的右手坐标系是必要的。
特别是,这确保了旋转是在正确的方向上进行的。
注意,矩阵的(x,y)顺序很自然地对应于图像中坐标的通常顺序(column,row)。


忽略输入图像的域,即,假设为图像的完整矩形。
输出图像的域是变换后的矩形与输出图像的矩形的交集。


通常,转换后的点位于像素坐标之间。
因此,必须采用合适的插补方案。
插值也可以用来避免缩放图像的混叠效果。
插补的质量和速度可以通过参数Interpolation来设定:


nearest_neighbor
最近邻插值:根据最近像素的灰度值确定灰度值(可能质量较低,但速度非常快)。


bilinear
双线性插值。灰度值通过双线性插值从最近的四个像素点确定。
如果仿射变换包含比例因子< 1的缩放,则不进行平滑,这可能会导致严重的混叠效果(中等质量和运行时间)。


bicubic
双立方插值。通过双三次插值,从最近的4*4像素点确定灰度值。
如果仿射变换包含尺度因子< 1的缩放,则不进行平滑处理,这可能会导致严重的混叠效果(质量高,速度慢)。


constant
双线性插值。灰度值通过双线性插值从最近的四个像素点确定。
如果仿射变换包含尺度因子< 1的缩放,则使用一种均值滤波器来防止混叠效果(中等质量和运行时间)。


weighted
双线性插值。灰度值通过双线性插值从最近的四个像素点确定。
如果仿射变换包含比例因子< 1的缩放,则使用一种高斯滤波器来防止混叠效果(高质量、慢速)。


此外,系统参数“int_zooming”(参见set_system)会影响转换的准确性。
如果'int_zooming'设置为'true',则byte、int2和uint2图像的转换将在内部使用定点算法进行,这将大大缩短执行时间。
然而,在这种情况下,转换后的灰度值的精度更小。
对于byte图像,与更精确的计算(使用'int_zooming' = 'false')之间的差异通常小于两个灰度级。
对应的,对于int2和uint2图像,灰度值的差异小于图像动态灰度值范围的1/128倍,
即,如果使用16位的整个动态范围,它们可以达到512个灰度级。
此外,如果应用大尺度因子,得到较大的输出图像,则可能会在图像的右下角产生未定义的灰度值。
未定义灰度值边缘的最大宽度Bmax,可以通过等式 (, 下载次数: 0)