類(lèi)似于人的眼睛和大腦,OpenCV可以檢測(cè)圖像的主要特征并將這 些特征提取到所謂的圖像描述符中。然后,可以將這些特征作為數(shù)據(jù)
庫(kù),支持基于圖像的搜索。此外,我們可以使用關(guān)鍵點(diǎn)將圖像拼接起 來(lái),組成更大的圖像。(想象一下把很多圖片放到一起組成一幅360°的全景圖。)
本節(jié)將展示如何使用OpenCV檢測(cè)圖像中的特征,并利用這些特征
匹配和檢索圖像。在本節(jié)的學(xué)習(xí)過(guò)程中,我們會(huì)獲取樣本圖像并檢測(cè)
其主要特征,然后試著在另一幅圖像中找到與樣本圖像匹配的區(qū)域。
我們還將找到樣本圖像和另一幅圖像匹配區(qū)域之間的單應(yīng)性或者空間
關(guān)系。
Harris角點(diǎn)檢測(cè)是計(jì)算機(jī)視覺(jué)領(lǐng)域中一種經(jīng)典的角點(diǎn)檢測(cè)算法,它可以用于許多應(yīng)用場(chǎng)景。
以下是一些Harris角點(diǎn)檢測(cè)的應(yīng)用場(chǎng)景:
圖像配準(zhǔn): 在圖像配準(zhǔn)中,Harris角點(diǎn)檢測(cè)可以用于找到兩幅圖像中具有相似特征的角點(diǎn),從而進(jìn)行圖像對(duì)齊和匹配。
物體跟蹤: 在目標(biāo)跟蹤中,Harris角點(diǎn)檢測(cè)可以用于提取圖像中的顯著特征,幫助識(shí)別和跟蹤目標(biāo)。
攝像頭標(biāo)定: 在攝像頭標(biāo)定中,Harris角點(diǎn)檢測(cè)可以用于檢測(cè)攝像頭拍攝圖像中的角點(diǎn),幫助計(jì)算攝像頭的內(nèi)參和外參。
三維重建: 在三維重建中,Harris角點(diǎn)檢測(cè)可以用于提取圖像中的關(guān)鍵特征點(diǎn),幫助建立圖像間的對(duì)應(yīng)關(guān)系,從而實(shí)現(xiàn)場(chǎng)景的三維重建。
物體識(shí)別: 在物體識(shí)別中,Harris角點(diǎn)檢測(cè)可以用于提取圖像中的特征點(diǎn),幫助識(shí)別和分類(lèi)不同的物體。
自動(dòng)駕駛: 在自動(dòng)駕駛領(lǐng)域,Harris角點(diǎn)檢測(cè)可以用于檢測(cè)圖像中的道路邊緣和關(guān)鍵特征,幫助自動(dòng)駕駛系統(tǒng)判斷道路情況。
圖像拼接: 在圖像拼接中,Harris角點(diǎn)檢測(cè)可以用于提取圖像中的角點(diǎn),幫助找到不同圖像之間的對(duì)應(yīng)關(guān)系,實(shí)現(xiàn)圖像拼接和全景圖生成。
圖像匹配: 在圖像匹配中,Harris角點(diǎn)檢測(cè)可以用于尋找兩幅圖像中具有相似特征的角點(diǎn),從而進(jìn)行圖像配準(zhǔn)和匹配。
理解特征檢測(cè)和匹配的類(lèi)型
OpenCV中最常用的特征檢測(cè)和描述符提取算法如下:
- Harris:該算法適用于角點(diǎn)檢測(cè)。
- SIFT:該算法適用于斑點(diǎn)檢測(cè)。
- SURF:該算法適用于斑點(diǎn)檢測(cè)。
- FAST:該算法適用于角點(diǎn)檢測(cè)。
- BRIEF:該算法適用于斑點(diǎn)檢測(cè)。
- ORB:它是Oriented FAST和Rotated BRIEF的聯(lián)合縮寫(xiě)。ORB對(duì)于角點(diǎn)和斑點(diǎn)的組合檢測(cè)很有用。
可以通過(guò)下列方法進(jìn)行特征匹配:
- 蠻力匹配。
- 基于FLANN的匹配。
可以通過(guò)單應(yīng)性進(jìn)行空間驗(yàn)證。
究竟什么是特征?
為什么圖像的某個(gè)特定區(qū)域可以歸類(lèi)為特征,而其他區(qū)域則不能分類(lèi)為特征呢?廣義地說(shuō),特征是圖像中獨(dú)特或容易識(shí)別的一個(gè)感興趣區(qū)域。具有高密度紋理細(xì)節(jié)的角點(diǎn)和區(qū)域是好的特征,而在低密度區(qū)域(如藍(lán)天)不斷重復(fù)出現(xiàn)的模式就不是好的特征。邊緣是好的特征,因?yàn)樗鼈儍A向于把圖像分割成兩個(gè)區(qū)域。斑點(diǎn)(與周?chē)鷧^(qū)域有很大差別的圖像區(qū)域)也是一個(gè)有趣的特征。
大多數(shù)特征檢測(cè)算法都圍繞著角點(diǎn)、邊緣和斑點(diǎn)的識(shí)別展開(kāi),有
些還關(guān)注嶺(ridge)的概念,其中嶺可以概念化為細(xì)長(zhǎng)物體的對(duì)稱(chēng)
軸。(例如,想象一下識(shí)別圖像中的道路。)
有些算法更擅長(zhǎng)識(shí)別和提取特定類(lèi)型的特征,所以了解輸入圖像
是什么很重要,這樣就可以利用OpenCV中的最佳工具了。
檢測(cè)Harris角點(diǎn)
什么是角點(diǎn)?
在計(jì)算機(jī)視覺(jué)和圖像處理中,角點(diǎn)(Corner)是圖像中突出的、有角度的、明顯的像素點(diǎn)。角點(diǎn)通常位于圖像中物體的邊緣、紋理或其他特征的交叉點(diǎn),是圖像中的顯著特征點(diǎn)。角點(diǎn)對(duì)于圖像處理中的許多任務(wù),如特征匹配、目標(biāo)跟蹤、3D重建等,具有重要的作用。
角點(diǎn)具有以下特征:
局部極大值: 在角點(diǎn)周?chē)泥徲蛑?,角點(diǎn)的像素值應(yīng)該是局部最大值。
方向變化: 角點(diǎn)處的像素點(diǎn)方向會(huì)在不同方向上有較大的變化,這是因?yàn)榻屈c(diǎn)是明顯的圖像特征。
明暗對(duì)比: 角點(diǎn)處的像素點(diǎn)周?chē)赡苁敲靼祵?duì)比較大的區(qū)域,因?yàn)榻屈c(diǎn)是由物體的邊緣、紋理等特征交叉形成的。
可重復(fù)性: 角點(diǎn)在不同的尺度和旋轉(zhuǎn)下仍然可以被檢測(cè)到,這使得它們?cè)诓煌瑘?chǎng)景中都有用途。
下面看一下角點(diǎn)的類(lèi)型:
cv2.cornerHarris 函數(shù)說(shuō)明
dst=cv2.cornerHarris(img, blockSize, ksize, k)
公式中參數(shù):
- img表示原始圖像
- blockSize表示角點(diǎn)檢測(cè)中的領(lǐng)域大小
- ksize表示Sobel求導(dǎo)中使用的窗口大小
- k表示Harris 角點(diǎn)檢測(cè)方程中的自由參數(shù),取值參數(shù)為[0,04, 0.06]
代碼示例:
import numpy as np
import cv2
# 讀取待檢測(cè)的圖像
img = cv2.imread('chess_board.png')
# 轉(zhuǎn)換為灰度圖像
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
gray = np.float32(gray)
# 調(diào)用函數(shù) cornerHarris,檢測(cè)角點(diǎn),其中參數(shù) 2 表示 Sobel 算子的孔徑大小,23 表示 Sobel 算子的孔徑大小,0.04 表示 Harris 角點(diǎn)檢測(cè)方程中的 k 值
dst = cv2.cornerHarris(gray,2,23,0.04)
dst = cv2.dilate(dst,None)
# 將檢測(cè)到的角點(diǎn)標(biāo)記出來(lái)
img[dst>0.01*dst.max()]=[0,0,255]
cv2.imshow('dst',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
運(yùn)行效果:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-671081.html
這里,我們選取的像素的分值至少是最高分值的1%,并在原始圖
像中將這些像素涂成紅色。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-671081.html
到了這里,關(guān)于opencv進(jìn)階14-Harris角點(diǎn)檢測(cè)-cv2.cornerHarris的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!