檢測亞畫素級角點

2021-07-07 01:23:37 字數 535 閱讀 3013

用cornersubpix()函式將角點定位到子畫素,從而取得亞畫素級別的角點檢測效果。

尋找更精確的角點位置 (不是整數型別的位置,而是更精確的浮點型別位置).

如何將求得的座標值精確到亞畫素級精度?

方法就是向量的點積理論:乙個向量和其正交的向量的點積為0,角點我們之前有說過了,就是兩個邊緣的相交,可以滿足這樣的情況。

當要求的點p位於乙個區域的內部時,點p邊緣是平緩的,它的梯度值為0,此時向量 q-p 的與p的梯度點積為0,; 

當點p位於區域的邊緣的時候,向量q-p  與區域平行,而p的梯度值則與邊緣垂直,此時向量  的與p的梯度點積為0。

這兩種情況下,向量  與p點的梯度都是正交的。先假設起始角點q在實際亞畫素級角點p附近,則我們可以在要求的p點的周圍取到很多p點的梯度和相關向量  令其點積為0,然後就可以通過求解方程組,方程組的解就是角點q的亞畫素精度的位置,也就是精確角點的位置。

對於棋盤格影象如圖1所示,角點附近的點可分為在邊緣上的點和不在邊緣上的點兩類。b點上的梯度方向與ob垂直,a點處灰度梯度為0,。

文獻:

亞畫素角點

harris 角點定義為乙個鄰域內存在兩個正交方向上梯度變化較大的點。在某些應用中 如視覺測量 想獲得更加精確的角點定位,可使用角點亞畫素演算法實現。在提取亞畫素邊緣時,可以通過數學建模 最小二乘法 來描述邊緣方向上一階導數曲線,該曲線為乙個二次函式 然後找到數學模型的最值點即為亞畫素邊緣位置。對於...

OPENCV角點檢測和亞畫素級檢測

首先進行粗檢測,函式goodfeaturestotrack,儲存進入corners中,然後cornersubpix函式進行亞畫素精確匹配,設定結束條件。由於實際應用中線條較粗,因此 corner blocksize 9 corner qualitylevel 0.6 其他引數可以微調。std vec...

opencv 亞畫素點檢測

之前方面的總結 之前用的harris和shi tomasi進行角點檢測時得到的都是自己想要的角點,這些角點的座標都是粗略的,要想得到最完美的角點檢測就是利用亞畫素級角點檢測 若我們進行的不是影象處理的識別特徵點而是進行幾何測量,通常需要更高的精度前兩種角點檢測只能提供簡單畫素的座標值,也就是說有時候...