基于树莓派模板定位的图像校准算法的实现
发布于 2021-01-27 10:31
模板匹配有两种应用场合:产品分类、产品定位。
产品分类即根据模板匹配的分数位置和角度完成图像的检测,可根据检测模板的匹配分数、角度和位置完成产品良品与不良品的判断,具体实现见基于树莓派的模板匹配算法(含演示视频)。
产品定位即根据匹配模板在产品中的位置进行图像矫正,从而完成图像位置的矫正,可有效降低产品对产品治具的要求,降低视觉检测难度,提高图像检测精度。
图像矫正主要分为仿射变换和透视变换,由于视觉检测项目中相机、镜头等位置已经过精密的调整和校准,因此视觉项目中常用的图像矫正即仿射变换换,也就是根据物体在相机中移动距离和旋转角度进行矫正。
根据模板匹配的产品定位即根据检测时产品在相机视野中的位置与模板图像中的位置和角度进行对比,进而进行位置和角度矫正。
图像仿射变换在Opencv中有成熟的算子可以进行调用。
仿射变换是指在向量空间中进行一次线性变换(乘以一个矩阵)并加上一个平移(加上一个向量),变换为另一个向量空间的过程。
在有限维的情况下,每个仿射变换可以由一个矩阵A和一个向量b给出,它可以写作A和一个附加的列b。一个仿射变换对应于一个矩阵和一个向量的乘法,而仿射变换的复合对应于普通的矩阵乘法,只要加入一个额外的行到矩阵的底下,这一行全部是0除了最右边是一个1,而列向量的底下要加上一个1.
Affine
Transform描述了一种二维仿射变换的功能,它是一种二维坐标之间的线性变换,保持二维图形的“平直性”(即变换后直线还是直线,圆弧还是圆弧)和“平行性”(其实是保持二维图形间的相对位置关系不变,平行线还是平行线,而直线上的点位置顺序不变,另特别注意向量间夹角可能会发生变化)。
仿射变换可以通过一系列的原子变换的复合来实现包括:平移(Translation)、缩放(Scale)、翻转(Flip)、旋转(Rotation)和错切(Shear).
事实上,仿射变换代表的是两幅图之间的关系,我们通常使用2x3矩阵来表示仿射变换如下:
考虑到我们要使用矩阵A和B对二维向量做变换,所以也能表示为下列形式:
或
得到如下结果:
已知检测图像模板相对训练模板的位置差和角度差,即旋转和平移。
首先采用getRotationMatrix2D(Center, Angle, 1)得到图像绕检测图像模板中心的旋转矩阵。
然后将平移量融合到旋转矩阵中即可,具体如下
M.at
M.at
采用树莓派实现了图像定位以及校准过程,如下:
欢迎大家批评指正!
本文来自网络或网友投稿,如有侵犯您的权益,请发邮件至:aisoutu@outlook.com 我们将第一时间删除。
相关素材