前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >SIFT暴力匹配

SIFT暴力匹配

作者头像
裴来凡
发布于 2022-05-28 08:54:28
发布于 2022-05-28 08:54:28
57100
代码可运行
举报
运行总次数:0
代码可运行
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import cv2
from skimage import transform as transform
from skimage.feature import (match_descriptors, ORB, plot_matches)
img1=cv2.imread('C:/Users/xpp/Desktop/Lena.png',0)#原始图像
img2=cv2.imread('C:/Users/xpp/Desktop/face.png',0)#原始图像
sift=cv2.xfeatures2d.SIFT_create()#实例化
kp1,des1=sift.detectAndCompute(img1,None)#找出图像中的关键点
kp2,des2=sift.detectAndCompute(img2,None)#找出图像中的关键点
bf=cv2.BFMatcher()#创建BF暴力匹配对象
matches=bf.knnMatch(des1,des2,k=2)#获得两幅图像的k个最佳匹配
good_matches=[]
for m1, m2 in matches:
    if m1.distance<0.75*m2.distance:
        good_matches.append([m1])#比值小于0.75,即最佳匹配点
        img3=cv2.drawMatchesKnn(img1,kp1,img2,kp2,good_matches,None,flags=2)#在最佳匹配点之间绘制直线
pylab.imshow(img3)
pylab.show()

算法:SIFT暴力匹配是通过识别两个图像之间的SIFT关键点最近的邻居来进行匹配。但在某些情况下,由于噪声等因素,第二个最接近的匹配似乎更接近第一个匹配。在这种情况下,计算最近距离与第二最近距离的比率,并检验它是否大于0.8。如果比率大于0.8,则表示拒绝。这有效地消除了约90%的错误匹配,且只有约5%的正确匹配。

网址:https://www.cs.ubc.ca/~lowe/pubs.html

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 图像处理与模式识别研究所 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档