C++OpenCV特征提取之如何實現(xiàn)Harris角點檢測

這篇文章主要介紹C++ OpenCV特征提取之如何實現(xiàn)Harris角點檢測,文中介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們一定要看完!

創(chuàng)新互聯(lián)主營靈石網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,重慶APP開發(fā),靈石h5微信小程序搭建,靈石網(wǎng)站營銷推廣歡迎靈石等地區(qū)企業(yè)咨詢

簡介

算法基本思想是使用一個固定窗口在圖像上進(jìn)行任意方向上的滑動,比較滑動前與滑動后兩種情況,窗口中的像素灰度變化程度,如果存在任意方向上的滑動,都有著較大灰度變化,那么我們可以認(rèn)為該窗口中存在角點。

關(guān)于角點的應(yīng)用在圖像處理上比較廣泛,如圖像匹配(FPM特征點匹配)、相機(jī)標(biāo)定等。網(wǎng)上也有很多博客對Harris角點檢測原理進(jìn)行描述,但基本上只是描述了算法流程,而其中相關(guān)細(xì)節(jié)并未作出解釋,我們簡單補(bǔ)充說明一下

角點

下面有兩幅不同視角的圖像,通過找出對應(yīng)的角點進(jìn)行匹配。

C++ OpenCV特征提取之如何實現(xiàn)Harris角點檢測

再看下圖所示,放大圖像的兩處角點區(qū)域:

C++ OpenCV特征提取之如何實現(xiàn)Harris角點檢測

我們可以直觀的概括下角點所具有的特征:

>輪廓之間的交點;

>對于同一場景,即使視角發(fā)生變化,通常具備穩(wěn)定性質(zhì)的特征;

>該點附近區(qū)域的像素點無論在梯度方向上還是其梯度幅值上有著較大變化;

算法基本思想是使用一個固定窗口在圖像上進(jìn)行任意方向上的滑動,比較滑動前與滑動后兩種情況,窗口中的像素灰度變化程度,如果存在任意方向上的滑動,都有著較大灰度變化,那么我們可以認(rèn)為該窗口中存在角點

先上效果視頻

相關(guān)API

cornerHarris(InputArray src, OutputArray dst, int blockSize, int apertureSize, double k, int borderType=BORDER_DEFAULT )

參數(shù):

  • src– 輸入單通道8位或浮點圖像.

  • dst– 圖像存儲Harris檢測器響應(yīng)。它具有CVY32 FC1類型,大小與SRC相同

  • blockSize– 鄰域大小

  • apertureSize– 索貝爾算子參數(shù)值

  • k– Harris檢測器的閾值

  • boderType– 參數(shù)

實現(xiàn)步驟

  1. 將圖像轉(zhuǎn)為灰度圖(cvtcolor)

  2. 創(chuàng)建一個CV_32FC1的同樣大小圖像(Mat::zeros(size,CV_32FC1))

  3. 進(jìn)行Harris角點檢測(cornerHarris)

  4. 歸一化(normalize)

  5. 轉(zhuǎn)化為絕對值(convertScaleAbs)

  6. 把獲取到的的大于閾值的的角點畫紅色的圓顯示出來

代碼演示

我們新建一個項目opencv--connerharris,簡單說一下,以后我們就不再說了,我們把Opencv3.4.1重新用Cmake編譯了一遍,因為做特片簡單需要加入Opencv-contrib的庫,所以我們重新編譯在newbuild里了,同時編譯環(huán)境也重新配了一個,配置里面多少一些DLL和LIB別的還是按照配置屬性(VS2017配置OpenCV通用屬性),然后在源文件寫入#include和main方法

C++ OpenCV特征提取之如何實現(xiàn)Harris角點檢測

在上面定義一個默認(rèn)閾值和一個過程方法,因為我們用到了Trackbar

C++ OpenCV特征提取之如何實現(xiàn)Harris角點檢測

然輸出圖像上創(chuàng)建Trackbar

C++ OpenCV特征提取之如何實現(xiàn)Harris角點檢測

在過程前先轉(zhuǎn)為灰度圖

C++ OpenCV特征提取之如何實現(xiàn)Harris角點檢測

接下來就是重點,我們的Harris_Deal的方法

C++ OpenCV特征提取之如何實現(xiàn)Harris角點檢測

C++ OpenCV特征提取之如何實現(xiàn)Harris角點檢測

以上是“C++ OpenCV特征提取之如何實現(xiàn)Harris角點檢測”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

當(dāng)前文章:C++OpenCV特征提取之如何實現(xiàn)Harris角點檢測
網(wǎng)頁地址:http://muchs.cn/article20/ijojco.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)響應(yīng)式網(wǎng)站、企業(yè)建站、外貿(mào)建站、小程序開發(fā)、面包屑導(dǎo)航

廣告

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

成都做網(wǎng)站