EmguCV 仿射变换在机器视觉定位的应用

    xiaoxiao2024-11-23  72

    图像的几何变换——拉伸、收缩、扭曲、旋转

    1.定义仿射变换的2x3旋转矩阵(参考网络),在程序中用Mat类来定义 ,理解细节可以参考。

     

                

    2.在机器定位中可以利用伺服马达定位确认原mark点或图像特征点坐标(教示得到点位)

    3.利用视觉的模板匹配或其他得到的新的伺服坐标。

    4.利用仿射函数得到2x3旋转矩阵

    5.利用此公式计算,计算出任意一个工作点的位置,驱动机器伺服到位。

    此文章希望能帮助机器简单定位起来。

    具体案例学习:

    怎么样得到2x3旋转矩阵,这是关键所在。

    1.第一步教示在mark 的坐标(mark1,和Mark2 二个点)

    而Mark点主要对相机图像(像数和实际XY的比值比例),教示时把mark放在图像最中心。得到3个mark点教示坐标(A1,B1,C1)

    2.第二步利用图像抓mark特征点,得到一个中心点,可以根据离远了图像中心点的偏移量,利用比列尺得到实际生产中产品的mark的二个坐标(a1,b1,c1)

    3.利用下面函数得到仿射2*3矩阵

    CvInvoke. GetAffineTransform Method ( PointF[] , PointF[] ) public static Mat GetAffineTransform( PointF[] src, ----3个mark点教示坐标(A1,B1,C1) PointF[] dest----3个实际生产中产品的mark的二个坐标(a1,b1,c1) )

    4.利用数学公式做个函数(变换前坐标,变换后坐标)

    再驱动设备运动到位。

     任意一点原来教示设定(x1,y1)----

    定位后x=x1*mat[0,0]+y1*mat[0,1]+mat[0,2];

    定位后y=x1*mat[1,0]+y1*mat[1,1]+mat[1,2];

     

    希望能帮忙你,这个精度的关键相机的像数和实际的比值要准。

      

    最新回复(0)