国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

詳解opencv Python特征檢測及K-最近鄰匹配

2020-02-16 00:45:32
字體:
來源:轉載
供稿:網友

鑒于即將啟程旅行,先上傳篇簡單的圖像檢索介紹,與各位一起學習opencv的同學共勉

一.特征檢測

圖片的特征主要分為角點,斑點,邊,脊向等,都是常用特征檢測算法所檢測到的圖像特征·

1.Harris角點檢測

先將圖片轉換為灰度模式,再使用以下函數檢測圖片的角點特征:

dst=cv2.cornerHarris(src, blockSize, ksize, k[, dst[, borderType]])

重點關注第三個參數,這里使用了Sobel算子,簡單來說,其取為3-31間的奇數,定義了角點檢測的敏感性,不同圖片需要進行調試。

k 是 Harris 角點檢測方程中的自由參數,取值參數為[0,04,0.06].

2.DoG角點檢測及SIFT特征變換

Harris角點檢測在面對圖像尺度性發生改變時極其容易丟失圖像細節,造成檢測失誤。因此在檢測圖像特征時,常常我們需要一些擁有尺度不變性的特征檢測算法。

DoG角點檢測即將兩幅圖像在不同參數下的高斯濾波結果相減,得到DoG圖。步驟:用兩個不同的5x5高斯核對圖像進行卷積,然后再相減的操作。重復三次得到三個差分圖A,B,C。計算出的A,B,C三個DOG圖中求圖B中是極值的點。圖B的點在當前由A,B,C共27個點組成的block中是否為極大值或者極小值。若滿足此條件則認為是角點。

SIFT對象會使用DoG檢測關鍵點,并對每個關鍵點周圍的區域計算特征向量。事實上他僅做檢測和計算,其返回值是關鍵點信息(關鍵點)和描述符。

#下列代碼即先創建一個SIFT對象,然后計算灰度圖像sift = cv2.xfeatures2d.SIFT_create()keypoints, descriptor = sift.detectAndCompute(gray, None)#sift對象會使用DoG檢測關鍵點,對關鍵點周圍的區域計算向量特征,檢測并計算

需要注意的是,返回的是關鍵點和描述符

關鍵點是點的列表

描述符是檢測到的特征的局部區域圖像列表

介紹一下關鍵點的屬性:pt: 點的x y坐標 size: 表示特征的直徑 angle: 特征方向 response: 關鍵點的強度 octave: 特征所在金字塔層級,算法進行迭代的時候, 作為參數的圖像尺寸和相鄰像素會發生變化octave屬性表示檢測到關鍵點所在的層級 ID: 檢測到關鍵點的ID

SIFT特征不只具有尺度不變性,即使改變旋轉角度,圖像亮度或拍攝視角,仍然能夠得到好的檢測效果。

3.SURF提取和檢測特征

SURF是SIFT的加速版算法,采用快速Hessian算法檢測關鍵點

借用下度娘的說法:SURF算法原理:

1.構建Hessian矩陣構造高斯金字塔尺度空間

2.利用非極大值抑制初步確定特征點

3精確定位極值點

4選取特征點的主方向

5構造surf特征點描述算子

具體應用看代碼

import cv2import numpy as npimg = cv2.imread('/home/yc/Pictures/jianbin.jpg')#參數為hessian矩陣的閾值surf = cv2.xfeatures2d.SURF_create(4000)#設置是否要檢測方向surf.setUpright(True)#輸出設置值print(surf.getUpright())#找到關鍵點和描述符key_query,desc_query = surf.detectAndCompute(img,None)img=cv2.drawKeypoints(img,key_query,img)#輸出描述符的個數print(surf.descriptorSize())cv2.namedWindow("jianbin",cv2.WINDOW_NORMAL)cv2.imshow('jianbin',img)cv2.waitKey(0)cv2.destroyAllWindows()            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 南阳市| 锡林浩特市| 宝丰县| 蒙城县| 昭平县| 宜兰县| 马尔康县| 万盛区| 双鸭山市| 渝中区| 宝应县| 庆元县| 长沙县| 灵台县| 双桥区| 利津县| 文成县| 鹿泉市| 通江县| 泗洪县| 三门峡市| 新巴尔虎左旗| 松溪县| 云龙县| 尤溪县| 泰兴市| 荆州市| 师宗县| 丰顺县| 白银市| 宁河县| 曲水县| 鹤壁市| 天长市| 横峰县| 镶黄旗| 库车县| 本溪市| 安图县| 灵璧县| 铁岭县|