女人荫蒂被添全过程13种图片,亚洲+欧美+在线,欧洲精品无码一区二区三区 ,在厨房拨开内裤进入毛片

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

三種最常用的特征檢測與匹配算法總結(jié)

新機(jī)器視覺 ? 來源:計(jì)算機(jī)視覺工坊 ? 2023-06-19 11:27 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

作者:計(jì)算機(jī)視覺@一杯紅茶|來源:計(jì)算機(jī)視覺工坊

我們都知道特征檢測和匹配是計(jì)算機(jī)視覺領(lǐng)域中的重要任務(wù),它們在許多應(yīng)用中發(fā)揮著關(guān)鍵作用,比如SLAM、SFM、AR、VR等許多算法都需要穩(wěn)定精確的特征檢測和匹配。

特征檢測算法的意義在于從圖像或視頻中提取出具有獨(dú)特性質(zhì)的特征點(diǎn),這些特征點(diǎn)可以代表圖像中的關(guān)鍵信息。這些特征點(diǎn)通常具有旋轉(zhuǎn)、尺度和光照變化的不變性,使得它們在圖像的不同位置和角度下都能夠被準(zhǔn)確地檢測到。

特征匹配算法的意義在于將兩個或多個圖像中的特征點(diǎn)進(jìn)行對應(yīng),以實(shí)現(xiàn)圖像間的關(guān)聯(lián)和匹配。通過將特征點(diǎn)進(jìn)行匹配,可以進(jìn)行目標(biāo)跟蹤、圖像配準(zhǔn)、三維重建等任務(wù)。

目前個人認(rèn)為特征檢測和匹配的研究點(diǎn)包括但不限于以下幾個方面:

1.特征點(diǎn)檢測算法的設(shè)計(jì)和改進(jìn),提高特征點(diǎn)的魯棒性和準(zhǔn)確性。

2.特征描述子的設(shè)計(jì)和優(yōu)化,提高特征點(diǎn)的區(qū)分度和匹配性能。

3.多尺度和多模態(tài)特征檢測與匹配,適應(yīng)不同尺度、視角和傳感器條件下的圖像數(shù)據(jù)。

4.大規(guī)模特征點(diǎn)檢測和匹配算法,用于處理大規(guī)模圖像數(shù)據(jù)庫或視頻流。

5.深度學(xué)習(xí)在特征檢測和匹配中的應(yīng)用,如使用卷積神經(jīng)網(wǎng)絡(luò)提取圖像特征和進(jìn)行匹配。

特征檢測和匹配的應(yīng)用廣泛,包括但不限于以下幾個方面:

1.目標(biāo)識別和跟蹤:通過檢測和匹配圖像中的特征點(diǎn),可以實(shí)現(xiàn)目標(biāo)在視頻中的跟蹤和定位,如自動駕駛中的目標(biāo)識別和跟蹤。

2.圖像配準(zhǔn)和拼接:通過匹配圖像中的特征點(diǎn),可以將多幅圖像進(jìn)行配準(zhǔn)和拼接,生成全景圖像或三維重建模型。

3.增強(qiáng)現(xiàn)實(shí)(AR)和虛擬現(xiàn)實(shí)(VR):特征檢測和匹配可用于將虛擬對象與真實(shí)世界進(jìn)行對齊和融合,實(shí)現(xiàn)更逼真的AR和VR體驗(yàn)。

4.圖像檢索和分類:通過匹配圖像中的特征點(diǎn),可以對圖像進(jìn)行相似性搜索和分類,用于圖像檢索和內(nèi)容識別。

5.三維重建和建模:通過匹配多個視角的圖像中的特征點(diǎn),可以進(jìn)行三維重建和場景建模,用于計(jì)算機(jī)輔助設(shè)計(jì)、虛擬現(xiàn)實(shí)等領(lǐng)域。

6.視頻處理和分析:特征檢測和匹配在視頻處理中可以用于運(yùn)動估計(jì)、目標(biāo)跟蹤、動作識別等任務(wù)。

所以,本篇文章針對不同的實(shí)際應(yīng)用需求,對三種特征檢測和匹配算法進(jìn)行總結(jié)并進(jìn)行代碼實(shí)踐:

1.最傳統(tǒng)的且應(yīng)用最為廣泛的SIFT特征檢測匹配算法。

2.速度和精度之間的平衡,注重實(shí)時性的SLAM中常用的ORB特征檢測和匹配算法。

3.最新且效果很好的基于深度學(xué)習(xí)的特征檢測和匹配算法SuperPoint+SuperGlue。

1.SIFT特征檢測和匹配算法

關(guān)于SIFT的算法原理及解釋網(wǎng)上有很多資料,如果想深入理解還可以找來原論文讀一讀,所以這里就簡單介紹下SIFT特征檢測和匹配算法。

SIFT是找到圖像中的一些“穩(wěn)定點(diǎn)”,這些點(diǎn)是一些十分突出的點(diǎn),比如角點(diǎn)、邊緣點(diǎn)、暗區(qū)域的亮點(diǎn)以及亮區(qū)域的點(diǎn),其算法假設(shè)兩幅圖像中有相同的景物,那么使用某種方法分別提取各自的穩(wěn)定點(diǎn),這些點(diǎn)之間會有相互對應(yīng)的匹配點(diǎn)。

SIFT算法找穩(wěn)定點(diǎn)的方法是找灰度圖的局部最值,由于數(shù)字圖像是離散的,想求導(dǎo)和求最值這些操作都是使用濾波器,而濾波器是有尺寸大小的,使用同一尺寸的濾波器對兩幅包含有不同尺寸的同一物體的圖像求局部最值將有可能出現(xiàn)一方求得最值而另一方卻沒有的情況,SIFT的精妙之處在于采用圖像金字塔的方法解決這一問題,我們可以把兩幅圖像想象成是連續(xù)的,分別以它們作為底面作四棱錐,就像金字塔,那么每一個截面與原圖像相似,那么兩個金字塔中必然會有包含大小一致的物體的無窮個截面,但應(yīng)用只能是離散的,所以我們只能構(gòu)造有限層,層數(shù)越多當(dāng)然越好,但處理時間會相應(yīng)增加,層數(shù)太少不行,因?yàn)橄蛳虏蓸拥慕孛嬷锌赡苷也坏匠叽绱笮∫恢碌膬蓚€物體的圖像。有了圖像金字塔就可以對每一層求出局部最值,但是這樣的穩(wěn)定點(diǎn)數(shù)目將會很多,所以需要使用某種方法抑制去除一部分點(diǎn),但又使得同一尺度下的穩(wěn)定點(diǎn)得以保存。

這里用C++Python各自實(shí)現(xiàn)一遍:

C++版本:

這里需要自己安裝配置opencv3哈,很簡單。安裝鏈接:https://blog.csdn.net/qq_43193873/article/details/126144636

在ubuntu20.04LTS下編譯執(zhí)行,首先是CMakeLists.txt的編寫

cmake_minimum_required(VERSION2.8)

set(CMAKE_BUILD_TYPEDebug)
set(DCMAKE_BUILD_TYPEDebug)

project(KeyPointsExtractionAndMatche)

find_package(OpenCV3REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})

##CUDA(可選擇,SIFT可以進(jìn)行GPU加速)
#FIND_PACKAGE(CUDA)
#IF(CUDA_FOUND)
#set(EXTRA_INC_DIRS
#${CUDA_INCLUDE_DIRS}
#${CUDA_SDK_INCLUDE_DIR}
#)
#cuda_include_directories(${EXTRA_INC_DIRS}${CMAKE_CURRENT_BINARY_DIR})
#set(EXTRA_LIBRARIES
#${CUDA_LIBS}
#${CUDA_cublas_LIBRARY}
#)
#ENDIF(CUDA_FOUND)

add_executable(KeyPointsExtractionAndMatchemain.cpp)

target_link_libraries(KeyPointsExtractionAndMatche${OpenCV_LIBS})

代碼:

#include
#include
#include

#include
#include
#include


usingnamespacestd;

intmain()
{
//圖像名,自己實(shí)踐時替換成自己的路徑
stringimage_name1="/home/ccy/code_test/img1.jpg";
stringimage_name2="/home/ccy/code_test/img2.jpg";

//先讀一個彩色圖像用于后續(xù)繪制特征點(diǎn)匹配對
cv::Matcolor_img1=cv::imread(image_name1,1);
cv::Matcolor_img2=cv::imread(image_name2,1);

//將圖像轉(zhuǎn)換為灰度圖像,用于SIFT特征提取和匹配
cv::Matgray_img1=cv::imread(image_name1,0);
cv::Matgray_img2=cv::imread(image_name2,0);

//計(jì)算SIFT特征檢測和匹配的時間
doublestart=static_cast(cv::getTickCount());
//提取兩幅圖像的SIFT特征點(diǎn)并篩選出匹配的特征點(diǎn)
vectorkeypoints1,keypoints2;
cv::Matdescriptors1,descriptors2;
cv::Ptrdetector=cv::create();
cv::Ptrdescriptor=cv::create();
cv::Ptrmatcher=cv::create("BruteForce");

//----------------------------------------------------------------------------------------------------//
//opencv3里提供了兩種匹配算法,分別是BruteForce和FlannBased,BruteForce是暴力匹配,F(xiàn)lannBased是基于近似最近鄰的匹配。
//BruteForce:通過計(jì)算兩個特征描述子之間的歐氏距離或其他相似性度量來確定匹配程度。
//BruteForce_L1:這種匹配類型使用L1范數(shù)(曼哈頓距離)作為特征描述子之間的距離度量方式。L1范數(shù)是將兩個向量各個對應(yīng)元素的差的絕對值求和作為距離的度量方式。
//BruteForce_Hamming:這種匹配類型使用漢明距離作為特征描述子之間的距離度量方式。漢明距離是將兩個向量各個對應(yīng)元素的差的絕對值求和作為距離的度量方式。
//BruteForce_HammingLUT:這種匹配類型使用漢明距離作為特征描述子之間的距離度量方式。漢明距離是將兩個向量各個對應(yīng)元素的差的絕對值求和作為距離的度量方式。這種匹配類型使用了查找表(LUT)來加速漢明距離的計(jì)算。
//BruteForce_SL2:這種匹配類型使用平方歐氏距離作為特征描述子之間的距離度量方式。平方歐氏距離是將兩個向量各個對應(yīng)元素的差的平方求和作為距離的度量方式。
//FlannBased:基于近似最近鄰的匹配,使用快速最近鄰搜索包(FLANN)來計(jì)算。
//----------------------------------------------------------------------------------------------------//

detector->detect(gray_img1,keypoints1);
detector->detect(gray_img2,keypoints2);

descriptor->compute(gray_img1,keypoints1,descriptors1);
descriptor->compute(gray_img2,keypoints2,descriptors2);

//匹配
vectormatches;
matcher->match(descriptors1,descriptors2,matches);
//篩選匹配點(diǎn)
doublemin_dist=10000,max_dist=0;
//找出所有匹配之間的最小距離和最大距離,即是最相似的和最不相似的兩組點(diǎn)之間的距離
for(inti=0;imax_dist)max_dist=dist;
}
cout<<"--?Max?dist?:?"<filteredMatches;
for(inti=0;i

結(jié)果:

689755a4-0c4b-11ee-962d-dac502259ad0.png

Python實(shí)現(xiàn):

importcv2

#讀取彩色圖像
image1_color=cv2.imread('/home/ccy/code_test/img1.jpg',1)
image2_color=cv2.imread('/home/ccy/code_test/img2.jpg',1)

#讀取灰度圖像
image1=cv2.imread('/home/ccy/code_test/img1.jpg',0)
image2=cv2.imread('/home/ccy/code_test/img2.jpg',0)

#計(jì)算SIFT特征檢測和匹配的時間
start=cv2.getTickCount()
#創(chuàng)建SIFT對象
sift=cv2.SIFT_create()

#檢測關(guān)鍵點(diǎn)和計(jì)算描述子
keypoints1,descriptors1=sift.detectAndCompute(image1,None)
keypoints2,descriptors2=sift.detectAndCompute(image2,None)

#創(chuàng)建FLANN匹配器
flann=cv2.FlannBasedMatcher()

#進(jìn)行特征匹配
matches=flann.knnMatch(descriptors1,descriptors2,k=2)

#篩選匹配結(jié)果
good_matches=[]
form,ninmatches:
ifm.distance

結(jié)果:

68af281e-0c4b-11ee-962d-dac502259ad0.png

可以看出FLANN匹配效果還是要比Brute-Force暴力匹配要好很多,速度也更快。

ORB特征檢測和匹配算法:

ORB(Oriented FAST and Rotated BRIEF)結(jié)合了FAST角點(diǎn)檢測和BRIEF特征描述子,具有快速、魯棒和旋轉(zhuǎn)不變性的特點(diǎn)。

其中FAST(Features from Accelerated Segment Test)角點(diǎn)檢測算法通過比較像素點(diǎn)與其周圍鄰域像素點(diǎn)的灰度值來判斷該點(diǎn)是否為角點(diǎn)。通過FAST角點(diǎn)檢測,ORB能夠快速而準(zhǔn)確地檢測出具有穩(wěn)定性和重復(fù)性的關(guān)鍵點(diǎn)。BRIEF(Binary Robust Independent Elementary Features)特征描述子來表示關(guān)鍵點(diǎn)的局部特征。BRIEF特征描述子將關(guān)鍵點(diǎn)周圍的像素對進(jìn)行二進(jìn)制比較,并生成一個定長的二進(jìn)制描述子,用于描述關(guān)鍵點(diǎn)的局部特征。這種二進(jìn)制描述子具有較小的存儲空間和快速的匹配速度。

ORB算法具有旋轉(zhuǎn)不變性,這意味著它能夠檢測和匹配旋轉(zhuǎn)變化后的關(guān)鍵點(diǎn)。為了實(shí)現(xiàn)旋轉(zhuǎn)不變性,ORB在角點(diǎn)檢測過程中計(jì)算關(guān)鍵點(diǎn)的方向,并在生成描述子時根據(jù)關(guān)鍵點(diǎn)的方向進(jìn)行旋轉(zhuǎn)。這樣,即使圖像發(fā)生旋轉(zhuǎn),ORB算法仍然能夠正確地匹配關(guān)鍵點(diǎn)。

ORB算法可以使用暴力匹配(Brute-Force)或近似最近鄰匹配(FLANN)進(jìn)行特征匹配。暴力匹配方法通過計(jì)算特征描述子之間的歐氏距離或漢明距離來確定匹配程度。近似最近鄰匹配方法使用FLANN(快速最近鄰搜索庫)算法進(jìn)行近似的最近鄰搜索,以加速匹配過程。

C++實(shí)踐代碼:

#include
#include
#include

#include
#include
#include


usingnamespacestd;
intmain()
{
//讀取彩色圖像
cv::Matimage1_color=cv::imread("/home/ccy/code_test/img1.jpg",cv::IMREAD_COLOR);
cv::Matimage2_color=cv::imread("/home/ccy/code_test/img2.jpg",cv::IMREAD_COLOR);

//讀取灰度圖像
cv::Matimage1_gray=cv::imread("/home/ccy/code_test/img1.jpg",cv::IMREAD_GRAYSCALE);
cv::Matimage2_gray=cv::imread("/home/ccy/code_test/img2.jpg",cv::IMREAD_GRAYSCALE);

//計(jì)時
doublestart=static_cast(cv::getTickCount());

//創(chuàng)建ORB對象
cv::Ptrorb=cv::create();

//檢測關(guān)鍵點(diǎn)和計(jì)算描述子
std::vectorkeypoints1,keypoints2;
cv::Matdescriptors1,descriptors2;
orb->detectAndCompute(image1_gray,cv::noArray(),keypoints1,descriptors1);
orb->detectAndCompute(image2_gray,cv::noArray(),keypoints2,descriptors2);

//創(chuàng)建FLANN匹配器
//注意:BruteForce_HAMMING匹配類型適用于二進(jìn)制特征描述子,如ORB(Oriented FAST and Rotated BRIEF)和Brief。
//這種匹配類型使用漢明距離(Hamming distance)作為特征描述子之間的距離度量方式。漢明距離是計(jì)算兩個二進(jìn)制向量之間不同位的數(shù)量。
cv::Ptrmatcher=cv::BRUTEFORCE_HAMMING);

//進(jìn)行特征匹配
std::vectormatches;
matcher->match(descriptors1,descriptors2,matches);

//篩選匹配結(jié)果
std::vectorgoodMatches;
doubleminDist=100.0;
doublemaxDist=0.0;
for(inti=0;imaxDist)
maxDist=dist;
}
doublethresholdDist=0.6*maxDist;
for(inti=0;i

結(jié)果:68c4cbf6-0c4b-11ee-962d-dac502259ad0.png

python代碼實(shí)現(xiàn):

importcv2

#讀取彩色圖像
image1_color=cv2.imread('/home/ccy/code_test/img1.jpg',1)
image2_color=cv2.imread('/home/ccy/code_test/img2.jpg',1)

#讀取灰度圖像
image1_gray=cv2.imread('/home/ccy/code_test/img1.jpg',cv2.IMREAD_GRAYSCALE)
image2_gray=cv2.imread('/home/ccy/code_test/img2.jpg',cv2.IMREAD_GRAYSCALE)

#計(jì)時
start=cv2.getTickCount()

#創(chuàng)建ORB對象
orb=cv2.ORB_create()

#檢測關(guān)鍵點(diǎn)和計(jì)算描述子
keypoints1,descriptors1=orb.detectAndCompute(image1_gray,None)
keypoints2,descriptors2=orb.detectAndCompute(image2_gray,None)

#創(chuàng)建BFMatcher匹配器
bf=cv2.BFMatcher(cv2.NORM_HAMMING,crossCheck=True)

#進(jìn)行特征匹配
matches=bf.match(descriptors1,descriptors2)

#篩選匹配結(jié)果
matches=sorted(matches,key=lambdax:x.distance)#按距離升序排序
good_matches=matches[:50]#選擇前50個較好的匹配

end=cv2.getTickCount()
print('ORB匹配時間:',(end-start)/cv2.getTickFrequency(),'s')

#繪制匹配結(jié)果
result=cv2.drawMatches(image1_color,keypoints1,image2_color,keypoints2,good_matches,None,flags=2)

#保存結(jié)果
cv2.imwrite('ORB_Matches.jpg',result)

結(jié)果:

68dee554-0c4b-11ee-962d-dac502259ad0.png

從匹配質(zhì)量上看還是SIFT更好,這是沒有疑問的,但是速度比SIFT快一個數(shù)量級要。

Super Point + Super Glue特征檢測和匹配算法:

Super Point論文:

D Detone, Malisiewicz T , Rabinovich A . SuperPoint: Self-Supervised Interest Point Detection and Description[C]// 2018 IEEE/CVF Conference on Computer Vision and Pattern Recognition Workshops (CVPRW). IEEE, 2018.

項(xiàng)目地址:https://github.com/magicleap/SuperPointPretrainedNetwork

Super Glue論文:

P. -E. Sarlin, D. DeTone, T. Malisiewicz and A. Rabinovich, "SuperGlue: Learning Feature Matching With Graph Neural Networks," 2020 IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR), Seattle, WA, USA, 2020, pp. 4937-4946, doi: 10.1109/CVPR42600.2020.00499.

項(xiàng)目地址:https://github.com/magicleap/SuperGluePretrainedNetwork

簡單介紹下這兩個算法,具體的網(wǎng)上有解釋,還可以看原論文。

首先SuperPoint,采用了自監(jiān)督的方法提取特征點(diǎn),設(shè)計(jì)了一個由特征點(diǎn)檢測器生成的具有偽真值的數(shù)據(jù)集,而非大量的人工標(biāo)記。為了得到偽真值,首先在大量的虛擬數(shù)據(jù)集上訓(xùn)練了一個全卷積網(wǎng)絡(luò),這些虛擬數(shù)據(jù)集由一些基本圖形組成,例如線段、三角形、矩形和立方體等,這些基本圖形具有無爭議的特征點(diǎn)位置;這樣pre-trained得到的檢測網(wǎng)絡(luò)稱之為MagicPoint,它在虛擬場景中檢測特征點(diǎn)的性能明顯優(yōu)于傳統(tǒng)方式,但是在真實(shí)的復(fù)雜場景中表現(xiàn)不佳,因此提出了一種多尺度多變換的方法Homographic Adaptation,通過對圖像進(jìn)行多次不同的尺度或角度變換來幫助網(wǎng)絡(luò)能夠在不同視角、不同尺度觀測到特征點(diǎn)。

68fa31a6-0c4b-11ee-962d-dac502259ad0.png

然后是SuperGlue,他是一種能夠同時進(jìn)行特征匹配以及濾除外點(diǎn)的網(wǎng)絡(luò),其中特征匹配是通過求解可微分最優(yōu)化轉(zhuǎn)移問題( optimal transport problem)來解決,損失函數(shù)由GNN來構(gòu)建;基于注意力機(jī)制提出了一種靈活的內(nèi)容聚合機(jī)制,這使得SuperGlue能夠同時感知潛在的3D場景以及進(jìn)行特征匹配。

6908f100-0c4b-11ee-962d-dac502259ad0.png

代碼實(shí)踐:這里介紹一個常用的特征檢測、匹配、重建、定位工具包,hloc,里面集成里很多常用的特征檢測和匹配、重建、定位算法,我們直接拿他的庫來進(jìn)行super point和super glue特征檢測和匹配。

項(xiàng)目地址:https://github.com/cvg/Hierarchical-Localization

首先配置hloc,其需要Python >=3.7 PyTorch >=1.1

gitclone--recursivehttps://github.com/cvg/Hierarchical-Localization/
cdHierarchical-Localization/
python-mpipinstall-e.

代碼:

fromhlocimportextract_features,match_features
fromtqdmimporttqdm
frompathlibimportPath
importargparse
fromhloc.utils.parsersimportparse_retrieval
fromhloc.utils.ioimportget_keypoints,get_matches

importcv2
importnumpyasnp

importtime

if__name__=='__main__':

#添加參數(shù),在運(yùn)行時輸入自己的--base_dir,比如我的運(yùn)行代碼是'pythonSPSGtest.py--base_dir/home/ccy/code_test'
parser=argparse.ArgumentParser()
parser.add_argument('--base_dir',type=Path,required=True)
args=parser.parse_args()

#圖像所在路徑
images=args.base_dir/'images/'
#輸出路徑
outputs=args.base_dir/'output/'
#要匹配的圖像對所在路徑,里面每行的內(nèi)容為:img1name img2name
loc_pairs=args.base_dir/'loc_pairs.txt'
#計(jì)時
start=time.time()
#提取特征和匹配特征的配置文件
feature_conf=extract_features.confs['superpoint_max']
matcher_conf=match_features.confs['superglue']


#提取特征和匹配特征,利用預(yù)訓(xùn)練模型
features=extract_features.main(feature_conf,images,outputs)
loc_matches=match_features.main(matcher_conf,loc_pairs,feature_conf['output'],outputs)
retrieval_dict=parse_retrieval(loc_pairs)

end=time.time()
print('time:',end-start)

#遍歷每一對圖像,畫出匹配點(diǎn)對和匹配線
forimg1intqdm(retrieval_dict):
img2=retrieval_dict[img1]
forimg2nameinimg2:
matches,_=get_matches(loc_matches,img1,img2name)
kpts0=get_keypoints(features,img1)
kpts1=get_keypoints(features,img2name)
#找出匹配點(diǎn)對的坐標(biāo)
kpts0=kpts0[matches[:,0]]
kpts1=kpts1[matches[:,1]]
#畫出匹配點(diǎn)對
img1=cv2.imread(str(images/img1))
img2=cv2.imread(str(images/img2name))
foriinrange(len(kpts0)):
cv2.circle(img1,(int(kpts0[i][0]),int(kpts0[i][1])),2,(0,0,255),-1)
cv2.circle(img2,(int(kpts1[i][0]),int(kpts1[i][1])),2,(0,0,255),-1)

img3=np.zeros((max(img1.shape[0],img2.shape[0]),img1.shape[1]+img2.shape[1],3),np.uint8)
img3[:img1.shape[0],:img1.shape[1]]=img1
img3[:img2.shape[0],img1.shape[1]:]=img2
#畫出所有匹配線
foriinrange(len(kpts0)):
cv2.line(img3,(int(kpts0[i][0]),int(kpts0[i][1])),(int(kpts1[i][0])+img1.shape[1],int(kpts1[i][1])),(0,255,0),1)

cv2.imwrite('/home/ccy/code_test/result.jpg',img3)

結(jié)果:

6929b5f2-0c4b-11ee-962d-dac502259ad0.png

可以看到SP+SG的結(jié)果又快又準(zhǔn)!


審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 算法
    +關(guān)注

    關(guān)注

    23

    文章

    4708

    瀏覽量

    95255
  • 計(jì)算機(jī)
    +關(guān)注

    關(guān)注

    19

    文章

    7654

    瀏覽量

    90659
  • 特征檢測
    +關(guān)注

    關(guān)注

    0

    文章

    2

    瀏覽量

    5668
  • 深度學(xué)習(xí)
    +關(guān)注

    關(guān)注

    73

    文章

    5560

    瀏覽量

    122747

原文標(biāo)題:三種最常用的特征檢測與匹配算法總結(jié)實(shí)踐!

文章出處:【微信號:vision263com,微信公眾號:新機(jī)器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    算法三種結(jié)構(gòu)介紹

    嵌入式學(xué)習(xí)日記2018.11.62018.11.16理論學(xué)習(xí)階段計(jì)算機(jī)科學(xué)導(dǎo)論(原書第二版)第8章 算法學(xué)到的新知識1算法三種結(jié)構(gòu):順序、判斷(選擇)和重復(fù)(循環(huán))2常用
    發(fā)表于 11-08 07:12

    單片機(jī)系統(tǒng)中最常用三種通信協(xié)議

    UART、 I2C 和 SPI 是單片機(jī)系統(tǒng)中最常用三種通信協(xié)議。1、初步介紹SPI 是一高速的、全雙工、同步通信總線,標(biāo)準(zhǔn)的 SPI 也僅僅使用 4 個引腳,常用于單片機(jī)和 EE
    發(fā)表于 11-18 09:22

    單片機(jī)系統(tǒng)中最常用三種通信協(xié)議是什么?

    單片機(jī)系統(tǒng)中最常用三種通信協(xié)議是什么?
    發(fā)表于 02-17 06:03

    基于HALCON的模板匹配方法總結(jié)

    了,需要可以去下載。 德國MVTec公司開發(fā)地HALCON機(jī)器視覺開發(fā)軟件,提供了許多地功能,在這里我主要學(xué)習(xí)和研究了其中地形狀匹配算法和流程。HDevelop開發(fā)環(huán)境中提供地匹配地方法主要有
    發(fā)表于 09-19 06:13

    基于SIFT的視圖像特征匹配算法

    提出一基于SIFT的視圖像特征匹配算法。采用SIFT算法
    發(fā)表于 04-18 09:49 ?24次下載

    基于SIFT描述子的特征匹配算法

    為了克服傳統(tǒng)的局部特征匹配算法對噪聲和圖像灰度非線性變換敏感的不足,提出了基于SIFT(Scale Invariant Feature Transform)描述算子的特征
    發(fā)表于 12-07 11:03 ?29次下載

    基于顏色和SURF特征的混合匹配算法研究

    針對傳統(tǒng)的SURF算法未使用圖像的顏色信息,提出了一基于顏色信息和SURF特征相結(jié)合的混合圖像匹配算法,
    發(fā)表于 12-24 16:05 ?15次下載

    數(shù)控機(jī)床插補(bǔ)算法最常用三種算法源碼

    菱PLC(可編程邏輯控制器)編程實(shí)例項(xiàng)目例程——數(shù)控機(jī)床插補(bǔ)算法最常用三種算法源碼
    發(fā)表于 11-08 17:32 ?44次下載

    基于區(qū)域檢測特征匹配方法設(shè)計(jì)研究

    針對傳統(tǒng)特征匹配算法在實(shí)際的應(yīng)用中存在搜索范圍廣、無關(guān)特征點(diǎn)多等問題,提出一基于顯著性區(qū)域檢測
    發(fā)表于 10-28 11:01 ?0次下載

    改進(jìn)的雙向SIFT特征匹配算法

    以基于圖像序列攝像機(jī)自標(biāo)定為基礎(chǔ),針對尺度不變特征轉(zhuǎn)換SIFT算法匹配率高且運(yùn)行效率低的問題,提出一改進(jìn)的雙向SIFT特征
    發(fā)表于 12-06 15:00 ?1次下載
    一<b class='flag-5'>種</b>改進(jìn)的雙向SIFT<b class='flag-5'>特征</b><b class='flag-5'>匹配</b><b class='flag-5'>算法</b>

    改進(jìn)ORB的特征點(diǎn)匹配算法

    針對定向二進(jìn)制簡單描述符( ORB)算法不具備尺度不變性的問題,提出一結(jié)合快速魯棒性特征( SURF)算法和ORB的改進(jìn)算法。首先,利用H
    發(fā)表于 12-15 17:15 ?21次下載

    開關(guān)模式電源電流檢測三種常用檢測方法的詳細(xì)資料介紹

    開關(guān)模式電源有三種常用電流檢測方法是:使用檢測電阻,使用MOSFET RDS(ON),以及使用電感的直流電阻(DCR)。每種方法都有優(yōu)點(diǎn)和缺點(diǎn),選擇
    的頭像 發(fā)表于 07-03 16:09 ?1.5w次閱讀
    開關(guān)模式電源電流<b class='flag-5'>檢測</b>的<b class='flag-5'>三種</b><b class='flag-5'>常用</b><b class='flag-5'>檢測</b>方法的詳細(xì)資料介紹

    三種最常用的MEMS制造技術(shù)解析

    MEMS器件利用半導(dǎo)體加工技術(shù)來制造維機(jī)械結(jié)構(gòu),三種最常用的MEMS制造技術(shù)包括體微加工(Bulk Micro Machining)、表面微加工(Surface Micro Machining)和LIGA。
    發(fā)表于 07-29 17:42 ?8215次閱讀

    開關(guān)電源最常見的三種結(jié)構(gòu)

    開關(guān)電源最常見的三種結(jié)構(gòu)布局是降壓(buck)、升壓(boost)和降壓–升壓(buck-boost),這三種布局都不是相互隔離的。
    的頭像 發(fā)表于 03-11 17:00 ?1.1w次閱讀

    基于計(jì)算機(jī)視覺領(lǐng)域中的特征檢測匹配研究

    ? 我們都知道特征檢測匹配是計(jì)算機(jī)視覺領(lǐng)域中的重要任務(wù),它們在許多應(yīng)用中發(fā)揮著關(guān)鍵作用,比如SLAM、SFM、AR、VR等許多算法都需要穩(wěn)定精確的
    的頭像 發(fā)表于 06-16 16:48 ?3993次閱讀
    基于計(jì)算機(jī)視覺領(lǐng)域中的<b class='flag-5'>特征</b><b class='flag-5'>檢測</b>和<b class='flag-5'>匹配</b>研究
    主站蜘蛛池模板: 自贡市| 鞍山市| 密云县| 犍为县| 新安县| 赤水市| 聂荣县| 固安县| 温州市| 区。| 北京市| 吉安市| 富川| 青阳县| 新宁县| 盘山县| 赣州市| 许昌市| 桐梓县| 广汉市| 古丈县| 个旧市| 云阳县| 永寿县| 临夏市| 宕昌县| 平乐县| 元阳县| 蓬莱市| 双鸭山市| 丽水市| 讷河市| 洪洞县| 平乡县| 奈曼旗| 锡林浩特市| 武功县| 石城县| 长阳| 洪雅县| 西平县|