Harris角點檢測

2022-09-19 07:03:13 字數 3181 閱讀 5367

影象中的特殊位置,是很常用的一類特徵,點的區域性特徵也可以叫做「關鍵特徵點」(keypoint feature),或「興趣點」(interest point),或「角點」(conrner)。

關於角點的具體描述可以有幾種:

一階導數(即灰度的梯度)的區域性最大所對應的畫素點;

兩條及兩條以上邊緣的交點;

影象中梯度值和梯度方向的變化速率都很高的點;

角點處的一階導數最大,二階導數為零,指示物體邊緣變化不連續的方向。

直接看圖的話會相對清晰一些

(1)高數:二元函式的泰勒展開

(2)線性代數:相似對角化、向量空間

角點檢測方法不止一種,這裡介紹haris角點檢測。

(1)變化

角點可以根據某個大小的框線中的影象在框線移動時灰度值的變化來判斷,如果是角點那就應該在框線的x軸和y軸座標變化時影響都比較大,如果是邊界點則應該沿著某乙個軸變化較大,而影象內部的點在座標變化時不會發生明顯變化,如下方綠色框線區域發生變化時對應的三種情況:

(2)灰度變化的數學表達

為了簡化計算,將彩色圖直接轉化為灰度圖:檢測效果一致,但是只需要考慮灰度變化即可。

其中:關於w(x,y):只是乙個加權函式,如果想要中心點的權重更大一些,就使用高斯加權

如高斯加權長這樣:

我們所希望看到的化簡結果是能夠清楚地看到c與dx、dy關係的乙個形式。

(dx,dy)在影象上是以畫素為單位進行變化的,但是在數學計算中完全可以是乙個小數,當dx、dy趨近於0的時候考慮使用二元函式的泰勒展開(由於幾乎是恒等變形,所以可以直接用)。

當採用一階展開的時候就可以化簡掉i(u,v)了:

上述的m'顯然是乙個對稱陣,如果對其進行對角化,則會得到乙個分別和dx、dy有關的式子,而dx、dy前的係數就是m'矩陣的特徵向量λ1、λ2,也表示著dx、dy二者變化時對c影響的權重,即當λ1>>λ2時表明影象視窗在x軸上的變化比較明顯,這裡很可能是關於y軸的一條邊,λ1>>λ2類似。

而不容易判斷的就是什麼時候二者都「比較大」從而對應角點,以及角點周圍的點也是「權重較高的點」,如何找到正確的那個?

【法一】

直接「規定」乙個基於實驗的來的「合適」的大小,作為λ1、λ2的參考,並通過nms非極大值抑制來決定真正的角點:非極大值抑制(non-maximum suppression,nms) - 康行天下 - (cnblogs.com)

【法二】

opencv給出了乙個計算公式來確定角點

,其中det為行列式,tr()為矩陣的跡,k是乙個常數,可以根據需要自行調配

opencv提供了相應的函式:cv2.cornerharris()

其中,sobel是指sobel運算元,用於求導,即求解ix、iy:(49條訊息) sobel運算元原理與實現_寫**的胡歌的部落格-csdn部落格_sobel運算元原理

個人理解:ix、iy並非真正對x、y求偏導,而是通過一些運算過程(函式對映、運算元)來得到近似或者等價的值。

#

harris角點檢測:移動dx,dy後檢查灰度變化

計算圖中每個點的c值

Harris角點檢測

貼一下 計算機視覺課的作業 有時候 需要用下 function f detectcorner i,threshold,sigma harris corner detect by lifeiteng version1.0 灰度影象 2013 5 08 version1.1 彩色影象 2013 5 13...

HARRIS角點檢測

cvinvoke.cornerharris image.convert b,2 注意 角點檢測傳出的為float型別的資料 cvinvoke.normalize b,b,0,255,normtype.minmax,depthtype.cv32f 正常化輸入陣列,使得它的範數或值範圍取一定值 多個 d...

Harris角點檢測

1 什麼是harris角點 在影象中,可以認為角點是物體輪廓線的連線點,是影象中重要的特徵點。角點數目遠小於畫素點,通過檢測角點可較準確地識別物體並減少計算量。角點檢測在目標識別 目標跟蹤 影象匹配等方面具有重要作用。如下圖,紅色圓圈標註的點可看做角點。2 如何檢測harris角點 可將影象分為三個...