欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

應(yīng)用OpenCV和Python進(jìn)行SIFT算法的實(shí)現(xiàn)詳解-創(chuàng)新互聯(lián)

應(yīng)用OpenCV和Python進(jìn)行SIFT算法的實(shí)現(xiàn)

創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比奉節(jié)網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式奉節(jié)網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋奉節(jié)地區(qū)。費(fèi)用合理售后完善,10余年實(shí)體公司更值得信賴。

如下圖為進(jìn)行測(cè)試的gakki101和gakki102,分別驗(yàn)證基于BFmatcher、FlannBasedMatcher等的SIFT算法,對(duì)比其優(yōu)劣。為體現(xiàn)出匹配效果對(duì)于旋轉(zhuǎn)特性的優(yōu)勢(shì),將圖gakki101做成具有旋轉(zhuǎn)特性的效果。

基于BFmatcher的SIFT實(shí)現(xiàn)

BFmatcher(Brute-Force Matching)暴力匹配,應(yīng)用BFMatcher.knnMatch( )函數(shù)來進(jìn)行核心的匹配,knnMatch(k-nearest neighbor classification)k近鄰分類算法。


kNN算法則是從訓(xùn)練集中找到和新數(shù)據(jù)最接近的k條記錄,然后根據(jù)他們的主要分類來決定新數(shù)據(jù)的類別。該算法涉及3個(gè)主要因素:訓(xùn)練集、距離或相似的衡量、k的大小。kNN算法的核心思想是如果一個(gè)樣本在特征空間中的k個(gè)最相鄰的樣本中的大多數(shù)屬于某一個(gè)類別,則該樣本也屬于這個(gè)類別,并具有這個(gè)類別上樣本的特性。該方法在確定分類決策上只依據(jù)最鄰近的一個(gè)或者幾個(gè)樣本的類別來決定待分樣本所屬的類別。


kNN方法在類別決策時(shí),只與極少量的相鄰樣本有關(guān)。由于kNN方法主要靠周圍有限的鄰近的樣本,而不是靠判別類域的方法來確定所屬類別的,因此對(duì)于類域的交叉或重疊較多的待分樣本集來說,kNN方法較其他方法更為適合。
經(jīng)檢驗(yàn) BFmatcher在做匹配時(shí)會(huì)耗費(fèi)大量的時(shí)間。


代碼段如下:

import numpy as np
import cv2
from matplotlib import pyplot as plt

imgname1 = 'E:/other/gakki101.jpg'
imgname2 = 'E:/other/gakki102.jpg'

sift = cv2.xfeatures2d.SIFT_create()

img1 = cv2.imread(imgname1)
gray1 = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY) #灰度處理圖像
kp1, des1 = sift.detectAndCompute(img1,None)  #des是描述子

img2 = cv2.imread(imgname2)
gray2 = cv2.cvtColor(img2, cv2.COLOR_BGR2GRAY)#灰度處理圖像
kp2, des2 = sift.detectAndCompute(img2,None) #des是描述子

hmerge = np.hstack((gray1, gray2)) #水平拼接
cv2.imshow("gray", hmerge) #拼接顯示為gray
cv2.waitKey(0)

img3 = cv2.drawKeypoints(img1,kp1,img1,color=(255,0,255)) #畫出特征點(diǎn),并顯示為紅色圓圈
img4 = cv2.drawKeypoints(img2,kp2,img2,color=(255,0,255)) #畫出特征點(diǎn),并顯示為紅色圓圈
hmerge = np.hstack((img3, img4)) #水平拼接
cv2.imshow("point", hmerge) #拼接顯示為gray
cv2.waitKey(0)
# BFMatcher解決匹配
bf = cv2.BFMatcher()
matches = bf.knnMatch(des1,des2, k=2)
# 調(diào)整ratio
good = []
for m,n in matches:
  if m.distance < 0.75*n.distance:
    good.append([m])

img5 = cv2.drawMatchesKnn(img1,kp1,img2,kp2,matches,None,flags=2)
cv2.imshow("BFmatch", img5)
cv2.waitKey(0)
cv2.destroyAllWindows()

網(wǎng)站題目:應(yīng)用OpenCV和Python進(jìn)行SIFT算法的實(shí)現(xiàn)詳解-創(chuàng)新互聯(lián)
URL鏈接:http://www.chinadenli.net/article42/coioec.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航網(wǎng)站制作App設(shè)計(jì)關(guān)鍵詞優(yōu)化Google網(wǎng)站維護(hù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司