OpenCV单应性矩阵发现参数估算方法详解

2022-07-28 14:12:57

  OpenCV正在通过特性描摹子竣工描摹子般配之后,会取得极少合头点对,咱们会把这些合头点对分手增添到两个vector对象中,行动输入参数,移用单应性矩阵察觉函数来察觉一个变换矩阵H,函数

  有了变换矩阵H之后,咱们就可能按照输入图像四点坐标,从场景图像上取得特性般配图像的四点坐标,代码实行如下:

  此中scene_corners为对象正在场景图像中的四点坐标,获取坐标今后就可能绘制对应的矩形,从而正在场景图像中绘制对象的外接矩形区域。运转结果如下:

  开始简易的阐明一下H的影响,假设正在特性般配或者对齐,视频搬动估算中有两张图像image1与image2,image1上有特性点(x1,y1)般配image2上的特性点(x2,y2),现正在咱们需求正在两者之间创办一种视图变换相合(透视变换),图示如下(图二):

  如许为了求出H中的参数,需求两个点对纠合,即是findHomography函数中前两个输入参数,理思景况下,通过特性提赢得到特性点会再下一帧或者场景图像中仍旧稳定,可是本质景况下,收到各样身分的影响,会出格发生良众特性点或者搅扰点,要是确切的剔除这些搅扰点,取得确切般配的点,诈骗确切般配点盘算推算出H才是斗劲坚固的方法。

  很光鲜,图二所示的是一个过限制题目,要是没有搅扰点的话,就可能通过最小二乘举办直接拟合,求的参数,此中谬误盘算推算如下:

  最小二乘门径正在描摹子般配输出的点对证料很好,理思景况下是图像没有噪声污染与像素迁徙与光泽恒定,可是本质景况下图像迥殊容易受到光泽、噪声导致像素迁徙,从而发生出格的众余描摹子般配,这些点对可能分为outlier跟inlier两类,基于RANSAC(Random Sample Consensus)可能很好的过滤掉outlier点对,行使合法的点对取得最终的变换矩阵H。RANSAC算法基础思思是,它会从给定的数据中随机采取一部门举办模子参数盘算推算,然后行使全数点对举办盘算推算结果评议,不休迭代,直到采取的数据盘算推算出来的谬误是最小,好比低于0.5%即可,完好的算法流程办法如下:

  平常迭代次数N会采选一个斗劲高的值,OpenCV中默认迭代次数为200,确保有一个随机采选点对不会有outlier数据,

  防卫有时期RANSAC门径不会收敛,导致图像对齐或者配准凋零,原由正在于RANSAC是一种全随机的数据采取方法,十足没有探究到数据质料区别。对RANSAC算法的改正算法即是PROSAC(Progressive Sampling Consensus)即渐近样本相同性,该门径采用半随机门径,对扫数点对举办质料评议盘算推算Q值,然后按照Q值降序陈设,每次只正在高质料点对中体味模子假设与验证,如许就大大下降了盘算推算量,正在RANSAC无法收敛的景况下,PROSAC已经可能赢得优良的结果。OpenCV中的RHO门径即是基于PROSAC估算。

  最小中值门径拟合,该门径可能算作是最小二乘法的改正,原由正在于盘算推算机视觉的输入数据是图像,普通都是各自噪声,这种景况下最小二乘往往无法确切拟合数据,于是采用最小中值门径可能更好实行拟合,摒除outlier数据。可是它是对高斯噪声敏锐算法。它的最重要办法描摹如下:

  结尾看一下OpenCV中行使单应性矩阵察觉对沟通的特性点对,分手行使RANSAC、PROSAC、LMEDS举办参数矩阵H的求解结果比较,显示如下:

  普通景况下正在,保举民众行使RANSAC或者RHO。默认的0显示最小二乘门径,对图像般配正在本质运用中普通都是翻车!LMEDS门径唯有正在inlier超出50%以上景况下才会拟合天生斗劲好的H参数,而RANSAC或者RHO不管outlier跟inlier比率是众少都市可能合用,可能民众也都防卫到h33老是等于1,由于h33正在这里影响是仍旧准绳化标准。正在OpenCV中要是无法确切估算参数H,会返回空Mat对象。

  结尾的线年少写空话,希望此篇不是空话,我为了写好它也是伤神永远,算是我方全力了,也是回复了平日极少人总问我的题目,接待民众斧正与反应!要是感触不错,点个赞我就很知足了!

  CV全栈开垦者说 - 从守旧算法到深度研习如何修炼2022入坑深度研习,我采选Pytorch框架!