特征点检测算法

作者: 陨星落云 | 来源:发表于2020-03-19 20:44 被阅读0次

特征点检测算法

Harris角点检测

cv2.cornerHarris(gray,blockSize=4,ksize=5,k=0.04)
import cv2
import matplotlib.pyplot as plt
import numpy as np

def cv_show(name,image):
    """图像显示函数
    name:字符串,窗口名称
    img:numpy.ndarray,图像
    """
    cv2.namedWindow(name,cv2.WINDOW_NORMAL)
    cv2.imshow(name,image)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

if __name__=="__main__":
    img = cv2.imread('.\data\Box.jpg')
    gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    gray = np.float32(gray)
    # 角点检测
    dst = cv2.cornerHarris(gray,blockSize=4,ksize=5,k=0.04)
    # 对角点进行膨胀操作
    dst = cv2.dilate(dst,None)
    img[dst>0.01*dst.max()] = [0,0,255]
    # 显示图像
    cv_show('Harris Corners',img)
harris_crners.jpg

SIFT特征检测

import cv2
import numpy as np

def cv_show(name,image):
    """图像显示函数
    name:字符串,窗口名称
    img:numpy.ndarray,图像
    """
    cv2.namedWindow(name,cv2.WINDOW_NORMAL)
    cv2.imshow(name,image)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

if __name__=="__main__":
    img = cv2.imread('.\data\975-1.jpg')
    gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    
    sift = cv2.xfeatures2d.SIFT_create()
    keypoints,descriptor = sift.detectAndCompute(gray,None)
    # 在图上绘制关键点
    img = cv2.drawKeypoints(image=img,outImage=img,keypoints=keypoints,flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS,color=(255,255,0))
    cv_show('sift_keypoints',img)
    cv2.imwrite('.\opencv_python\SIFT.jpg',img)
SIFT.jpg

SURF特征检测

import cv2
import numpy as np

def cv_show(name,image):
    """图像显示函数
    name:字符串,窗口名称
    img:numpy.ndarray,图像
    """
    cv2.namedWindow(name,cv2.WINDOW_NORMAL)
    cv2.imshow(name,image)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
if __name__=="__main__":
    img = cv2.imread('.\data\975-1.jpg')
    gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    
    surf = cv2.xfeatures2d.SURF_create(8000)
    keypoints,descriptor = surf.detectAndCompute(gray,None)
    
    img = cv2.drawKeypoints(image=img,outImage=img,keypoints=keypoints,flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS,color=(255,255,0))
    cv_show('surf_keypoints',img)
    cv2.imwrite('.\opencv_python\SURF.jpg',img)
SURF.jpg

ORB特征检测

def img_show(name,image):
    """matplotlib图像显示函数
    name:字符串,图像标题
    img:numpy.ndarray,图像
    """
    if len(image.shape) == 3:
        image = cv2.cvtColor(image,cv2.COLOR_BGR2RGB)
    plt.imshow(image,'gray')
    plt.xticks([])
    plt.yticks([])
    plt.xlabel(name,fontproperties='FangSong',fontsize=12)
 
if __name__=="__main__":
    img1 = cv2.imread('.\data\974-1.jpg')
    img2 = cv2.imread('.\data\975-1.jpg')
    gray1 = cv2.cvtColor(img1,cv2.COLOR_BGR2GRAY)
    gray2 = cv2.cvtColor(img2,cv2.COLOR_BGR2GRAY)
    orb = cv2.ORB_create()
    kp1,des1 = orb.detectAndCompute(gray1,None)
    kp2,des2 = orb.detectAndCompute(gray2,None)
    bf = cv2.BFMatcher(cv2.NORM_HAMMING,crossCheck=True)
    matches = bf.match(des1,des2)
    matches = sorted(matches,key=lambda x:x.distance)
    img3 = cv2.drawMatches(img1,kp1,img2,kp2,matches[:80],img2,flags=2)
    plt.figure(figsize=(60,80),dpi=80)
    img_show('',img3)
    
orb.png

相关文章

  • 特征点检测算法

    特征点检测算法 Harris角点检测 SIFT特征检测 SURF特征检测 ORB特征检测

  • SLAM相关

    特征点检测的算法更新 针对前期关键点检测的算法更新: 链接 特征点的提取效果: 对VO的效果提升: 其他方法

  • 计算机视觉 OpenCV Android | 特征检测与匹配之角

    本文要点总结(俩算法的联系与区别) Harris角点检测与Shi-Tomasi角点检测都是经典的角点特征提取算法,...

  • 吴恩达深度学习笔记(94)-目标检测之检测算法

    目标检测(Object detection) 学过了对象定位和特征点检测,今天我们来构建一个对象检测算法。这节课,...

  • Harris角点检测算法

    角点检测算法

  • 人脸特征点检测

    接着上一篇的人脸检测,这里进一步做了人脸特征点检测。算法很简单,参考论文:Face Alignment by Ex...

  • 角点检测(Corner Detection)

    1.角点检测简述 角点检测是计算机视觉系统中用来提取图像特征的一种方法,又称为特征点检测.广泛用于运动检测,图像匹...

  • Harris角点检测算法

    Harris角点算法 特征点检测广泛应用到目标匹配、目标跟踪、三维重建等应用中,在进行目标建模时会对图像进行目标特...

  • 特征脸算法

    前言 特征脸算法使经典的人脸识别算法,特征脸算法使用了PCA方法。本文介绍了PCA算法和其应用特征脸算法 算法流程...

  • 离群点分析

    LOF算法 使用基于密度的局部离群点检测算法LOF鉴于LOF算法的特点,使用了文献[1]中的DLOF算法,在文献中...

网友评论

    本文标题:特征点检测算法

    本文链接:https://www.haomeiwen.com/subject/zilryhtx.html