当前位置: 首页 > news >正文

上海企业网站建设报乐山网站建设培训学校

上海企业网站建设报,乐山网站建设培训学校,创建自己的网站要钱吗,企业微信软件在计算机视觉领域#xff0c;从图像中提取和匹配特征的能力对于对象识别、图像拼接和相机定位等任务至关重要。实现这一目标的一种流行方法是 ORB#xff08;Oriented FAST and Rotated Brief#xff09;特征检测器和描述符。ORB 由 Ethan Rublee 等人开发#xff0c;结合了… 在计算机视觉领域从图像中提取和匹配特征的能力对于对象识别、图像拼接和相机定位等任务至关重要。实现这一目标的一种流行方法是 ORBOriented FAST and Rotated Brief特征检测器和描述符。ORB 由 Ethan Rublee 等人开发结合了两种现有技术的优势——FAST加速分段测试特征和Brief二进制鲁棒独立基本特征——为特征提取和匹配提供了强大而高效的解决方案。 在本文中我们将深入研究 ORB 的内部工作原理探讨它如何充当特征检测器和描述符、其关键组件以及与其他特征提取方法相比的优势。 FAST特征检测器 加速分割测试的特征Feature from Accelerated Segment TestFAST算法是通过分析16个像素的圆形邻域来实现的。FAST算法把邻域内每个像素标记为比特定阈值更亮或更暗该阈值是相对于圆心定义的。如果邻域包含若干标记为更亮或更暗的一系列连续像素那么这个邻域就被视为角点。 FAST是一种角点检测算法可以有效识别图像中的角点或关键点。通过利用简单的强度阈值方案和最小化计算它的设计速度比传统的角点检测器更快。FAST 检查候选像素周围的一圈像素如果有足够数量的连续像素比候选像素更亮或更暗则将其分类为角点。 BRIEF 另外二值鲁棒独立基本特征Binary Robust Independent Elementary FeatureBRIEF并非特征检测算法而是一个描述符。我们来更深入地研究一下描述符的概念然后再来研究BRIEF。 在前面用SIFT和SURF分析图像时整个过程的核心是调用 detectAndCompute函数。此函数执行两个不同的步骤——检测和计算它们返回2个不同的结果耦合到一个元组中。 检测结果是一组关键点计算结果是这些关键点的一组描述符。这意味着OpenCV的cv2.SIFT和cv2.SURF类都实现了检测和描述算法。请记住原始的SIFT和SURF不是特征检测算法。 OpenCV的cv2.SIFT实现了DoG特征检测和SIFT描述而OpenCV的cv2.SURF实现了快速Hessian特征检测和SURF描述。 关键点描述符是图像的一种表示充当特征匹配的通道因为你 可以比较两幅图像的关键点描述符并发现它们的共性。BRIEF是目前最快的描述符之一。BRIEF背后的理论相当复杂但是可以这样说BRIEF采用一系列优化使其成为特征匹配的一个非常好的选择。 蛮力匹配 蛮力匹配器是一个描述符匹配器它比较两组关键点描述符并生成匹配列表。之所以称为蛮力匹配是因为在该算法中几乎不涉及优化。对于第一个集合中的每个关键点描述符匹配器将之与第二个集合中的每个关键点描述符进行比较。每次比较产生一个距离值并基于最小距离选择最佳匹配。 概括地说在计算中“蛮力”一词是指将所有可能组合例如破解已知长度密码的所有可能的字符组合的穷举按优先级排序的方法。相反优先考虑速度的算法可能会跳过一些可能性并试图走一条捷径来找到看似最合理的解决方案。 OpenCV提供了一个cv2.BFMatcher类支持几种蛮力特征匹配的方法。 ORB算法原理 ORB算法将FAST特征点的检测方法和BRIEF特征描述子结合起来并在它们的基础上做了改进与优化。 首先它利用FAST特征点检测的方法来检测特征点然后利用Harris角点的度量方法从FAST特征点中挑选出Harris角点响应值最大的N个特征点。其中Harris角点的响应函数定义为 RdetM−k(trace(M))2 在现在生活中我们从不同的距离不同的方向、角度、不同的光照条件下观察一个物体时物体的大小、形状明暗都会有所不同。但是我们仍然可以判断它是一个物体。理想的特征描述子应该具备这些性质即在大小、方向、明暗不同的图像中同一特征点应具有足够相似的描述子称之为描述子的可复现性。 但是ORB并没有解决尺度不一致的问题在OpenCV的ORB实现中采用了图像金字塔来改善这方面的性能我们通过构建高斯金字塔然后在每一层金字塔图像上检测角点来实现尺度不变性。ORB主要解决了BRIEF描述子不具备旋转不变性的问题ORB论文种提出了一种利用灰度质心法来解决这个问题灰度质心法假设角点的灰度与质心之间存在一个偏移这个向量可以用于表示一个方向。对于任意一个特征点p来说我们定义p的邻域像素的矩为 其中I(x,y)为点(x,y)处的灰度值q 为质心,i,j0,1。那么我们可以得到图像的质心为 那么特征点与质心的夹角定义为FAST特征点的方向 为了提高算法的旋转不变性需要确保 x 和 y 在半径为r 的圆形区域内即x,y∈[−r,r]r 等于邻域半径。 特征点的描述 ORB选择了BRIEF作为特征描述方法但是我们知道BRIEF不具备旋转不变性所以我们要给BRIEF加上旋转不变性把这种方法称为Steer BRIEF。 对于任何一个特征点来说它的BRIEF描述子是一个长度为n的二值码串这个二值码串是由特征点邻域n个点对生成的我们现在讲这2n个点(xi,yi),i1,2,…,2n组成一个矩阵S: Calonder建议为每个块的旋转和投影集合分别计算BRIEF描述子但代价昂贵。ORB中采用了一个更有效的方法使用邻域方向θ和对应的转矩阵Rθ构建S 的一个校正版本Sθ: 其中 而θ 即我们为特征点求得的主方向。 即我们把坐标轴旋转]theta计算以主方向为坐标系的匹配点对如下图 实际上我们可以把角度离散化即把360度分为12份每一份是30度然后我们对这个12个角度分别求得一个Sθ这样我们就创建了一个查找表对于每一个θ我们只需要查表即可快速得到它的点的集合Sθ。 解决描述子的区分性 BRIEF令人惊喜的特性之一是对于n维的二值串的每个特征位所有特征点在该位上的值都满足一个均值接近于0.5而方差很大的高斯分布。方差越大说明区分性越强那么不同特征点的描述子就表现出来越大差异性对匹配来说不容易误配。但是当我们把BRIEF沿着特征点的方向调整为Steered BRIEF时均值就漂移到一个更加分散式的模式。可以理解为有方向性的角点关键点对二值串则展现了一个更加均衡的表现。而且论文中提到经过PCA对各个特征向量进行分析得知Steered BRIEF的方差很小判别性小各个成分之间相关性较大。 为了减少Steered BRIEF方差的亏损并减少二进制码串之间的相关性ORB使用了一种学习的方法来选择一个较小的点对集合。方法如下 首先建立一个大约300k关键点的测试集这些关键点来自于PASCAL2006集中的图像。 对于这300k个关键点中的每一个特征点考虑它的31×31的邻域我们将在这个邻域内找一些点对不同于BRIEF中要先对这个Patch内的点做平滑再用以Patch中心为原点的高斯分布选择点对的方法。 ORB为了去除某些噪声点的干扰选择了一个5×5大小的区域的平均灰度来代替原来一个单点的灰度这里5×5区域内图像平均灰度的计算可以用积分图的方法。我们知道31×31的Patch里共有N(31−51)×(31−51)个这种窗口那么我们要N个子窗口中选择2个子窗口的话共有C2N种方法。所以对于300k中每一个特征点我们都可以从它的31×31大小的邻域中提取一个很长的二进制串长度为MC2N表示为 那么当300k个关键点全部进行上面的特征提取之后我们就得到了一个300k×M的矩阵矩阵中的每个元素值为0或者1. 对该矩阵的每个列向量也就是每个点对在300k个特征点上的测试结果计算其均值。把所有的列向量按均值进行重新排序。排好后组成了一个向量TT的每一个元素都是一个列向量。进行贪婪搜索从T中把排在第一的那个列放到R中T中就没有这个点对的测试结果了然后把T中的排在下一个的列与R中的所有元素比较计算它们的相关性如果相关超过了某一事先设定好的阈值就扔了它否则就把它方到R里面。 重复上面的步骤直到R中有256个列向量位置。 如果把T全部找完也没有找到256个那么我们可以把相关的阈值调高一些再尝试一遍。这样我们就得到了256个点对。上面这个过程我们称它为rBRIEF。 OpenCV实现 ORB中有很多参数可以设置在OpenCV中它可以通过ORB来创建一个ORB检测器。 cv2.ORB_create([,nfeatues[,scaleFactor[,nlevels[,edgeThreshold[,firstLevel[,WTA_K[,[scoreType,[patchSize,fastThreshold]]]]]]]]]) 参数说明 nfeatures 最多提取的特征点的数量scaleFactor 金字塔图像之间的尺度参数类似于SIFT中的knlevels 高斯金字塔的层数edgeThreshold 边缘阈值这个值主要是根据后面的patchSize来定的靠近边缘edgeThreshold以内的像素是不检测特征点的。firstLevel-看过SIFT都知道我们可以指定第一层的索引值这里默认为0。WET_K 用于产生BIREF描述子的点对的个数一般为2个也可以设置为3个或4个那么这时候描述子之间的距离计算就不能用汉明距离了而是应该用一个变种。OpenCV中如果设置WET_K 2则选用点对就只有2个点匹配的时候距离参数选择NORM_HAMMING如果WET_K设置为3或4则BIREF描述子会选择3个或4个点那么后面匹配的时候应该选择的距离参数为NORM_HAMMING2。scoreType 用于对特征点进行排序的算法你可以选择HARRIS_SCORE也可以选择FAST_SCORE但是它也只是比前者快一点点而已。patchSize 用于计算BIREF描述子的特征点邻域大小。 示例使用ORB描述符进行Brute-Force匹配 示例代码 import cv2def orb_test():# 加载图片 灰色img1 cv2.imread(images\\quexiao\\2.png)gray1 cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)img2 cv2.imread(images\\quexiao\\2-1.png)gray2 cv2.cvtColor(img2, cv2.COLOR_BGR2GRAY)image1 gray1.copy()image2 gray2.copy()1.使用ORB算法检测特征点、描述符orb cv2.ORB_create(128)keypoints1, descriptors1 orb.detectAndCompute(image1, None)keypoints2, descriptors2 orb.detectAndCompute(image2, None)# 在图像上绘制关键点image1 cv2.drawKeypoints(imageimage1, keypointskeypoints1, outImageimage1, color(255, 0, 255),flagscv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)image2 cv2.drawKeypoints(imageimage2, keypointskeypoints2, outImageimage2, color(255, 0, 255),flagscv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)# 显示图像cv2.imshow(orb_keypoints1, image1)cv2.imshow(orb_keypoints2, image2)cv2.waitKey(20)2、匹配# 使用汉明距离,创建BF匹配器,并进行匹配() 新版本不支持# matcher cv2.BFMatcher_create(cv2.HAMMING_NORM_TYPE, crossCheckTrue)matcher cv2.BFMatcher_create(cv2.NORM_HAMMING, crossCheckTrue)matchePoints matcher.match(descriptors1, descriptors2)print(type(matchePoints), len(matchePoints), matchePoints[0])# 按照距离从小到大排序选取最优匹配的sorted(matchePoints, keylambda x: x.distance)# 绘制最优匹配点outImg NoneoutImg cv2.drawMatches(img1, keypoints1, img2, keypoints2, matchePoints[:10], outImg, matchColor(0, 255, 0),flagscv2.DRAW_MATCHES_FLAGS_DEFAULT)cv2.imshow(matche, outImg)cv2.waitKey(0)cv2.destroyAllWindows()cv2.waitKey(0)cv2.destroyAllWindows()if __name__ __main__:orb_test()实验原图 2.png 2-1.png
http://wiki.neutronadmin.com/news/36214/

相关文章:

  • 徐州做网站最好的公司网站建设策划公司
  • 免费注册一个网站深圳宝安区属于什么档次
  • 网站建设企业建站模板网站接入协议及接入商资质
  • 论坛网站模wordpress看板猫
  • 河北明迈特的网站在哪里做的高端自适应网站建设
  • 网站建设海报图片在线之家
  • 网站建设的目标用户微客通达推广引流
  • 深圳网站制作公司网站建设公司wordpress建设购物网站
  • 用织梦做的网站公司建一个网站多少钱
  • 汕头市企业网站建设品牌wordpress optiontree
  • 行业网站怎么做上海十大公司排名
  • wordpress建站的好处app网站平台建设方案
  • 济南找工作哪个网站好淮南寿县
  • 百度关键词挖掘工具爱站网营销型集团网站建设
  • 网站设计与建设书wordpress历史
  • 湛江网站建设模板定位工厂wordpress单栏
  • 美术馆网站建设要求微信平台链接wordpress
  • 自适应手机网站模板我想做网站
  • 上海专业建站公工程招标
  • 济南做网站优化的公司erp外贸管理系统
  • 网站优化包括哪些做全景图的网站
  • 网站规划建设实训报告个人网站有什么内容
  • 网站网页设计成全视频免费观看在线看 综合 笔记 视频
  • 团购网站功能模块做代理
  • 触动网站建设wordpress检测登录ip
  • 做单页网站需要做什么开店怎么做会员系统
  • 亚马逊国际站官网电子商务平台怎么赚钱
  • 网站建设参考文献外文做一件代发哪个网站好
  • 公司网站建设多少钱网站开发方面的文献
  • 购物网站建设多少钱c 可以做网站