前言
在图像处理中我们有时候对图像或者区域进行纠偏,在某些变换场景中,图像发生的变化是平移、旋转、各个方向上不同缩放比例的缩放,错切等,这时候就需要使用仿射变换来解决。
1、halcon算子应用
dev_clear_window()px:=[100,200,100]py:=[100,100,0]qx:=[50,50,0]qy:=[50,0,50]vector_to_hom_mat2d(px,py,qx,qy,HomMat2D)dev_set_color('red')gen_rectangle2(Rectangle,100,100,0,100,50)dev_set_color('green')affine_trans_region(Rectangle,RegionAffineTrans,HomMat2D,'nearest_neighbor')vector_to_hom_mat2d用于计算仿射变换矩阵,该算子有5个参数
参数1变换前目标中心点的列坐标构成的数组
参数2变换前目标中心点的行坐标构成的数组
参数3变换后目标中心点的列坐标构成的数组
参数4变换后目标中心点的行坐标构成的数组
参数5是从变换前到变换后的刚性变换矩阵
这里要注意仿射变换需要至少3个目标点变换前后的坐标。
上面的halcon代码的作用是根据(100,100)、(200,100)、(100,0)这3个变换前的点;然后将这3个点绕着(100,100)逆时针旋转90度后得到的(100,100)、(100,0)、(0,100)得到旋转后的点,最后再绕着中心(100,100)缩小50%得到(50,50)、(50,0)、(0,50)通过这3个坐标点对就构建了仿射变换矩阵,最后再对中心点为(100,100),长200,宽100的矩形区域应用这个变换矩阵,最终得到的就是将这个矩形区域先逆时针旋转90度然后缩小50%后的效果。
2、仿射变换效果
下图中红色是变换前,绿色为变换后,可以看出矩形经过变换后逆时针旋转了90度,并且缩小了50%。
马工撰写的年入30万+C#上位机项目实战必备教程(点击下方链接即可访问文章目录)
1、《C#串口通信从入门到精通》
2、《C#与PLC通信从入门到精通 》
3、《C# Modbus通信从入门到精通》
4、《C#Socket通信从入门到精通 》
5、《C# MES通信从入门到精通》
6、《winform控件从入门到精通》
7、《C#操作MySql数据库从入门到精通》