opencv 亞畫素點檢測

2021-09-09 07:27:51 字數 1126 閱讀 6757

之前方面的總結:

之前用的harris和shi-tomasi進行角點檢測時得到的都是自己想要的角點,這些角點的座標都是粗略的,要想得到最完美的角點檢測就是利用亞畫素級角點檢測

若我們進行的不是影象處理的識別特徵點而是進行幾何測量,通常需要更高的精度前兩種角點檢測只能提供簡單畫素的座標值,也就是說有時候會需要實數座標值而不是整數座標值。

1.亞畫素級角點檢測的位置在攝像機標定,跟蹤並重建攝像機的軌跡,或者重建被跟蹤目標的三維結構時,是乙個基本的測量值

一般都是根據角點的位置–退出位置精確的亞畫素級精度,乙個向量和其正交的向量的點積為0

第一步就是先確定角點的位置用harris或者shi-tomasi來進行求取角點,由這些角點再來計算亞畫素級角點的具體位置opencv為我們提供了cornersubpix()函式用於尋找亞畫素級角點的位置的。

2.cornersubpix()函式尋找角點時(不是整數型別的位置,而是更加精確的浮點型別位置)

c++:void cornersubpix(inputarray img,inputoutputarray corner,size winsize,size zerozone,termcriteria criteria);

首先說明最主要的是引數二:表示輸入輸出的二維點vector corners型別的,作為輸入時表示由harris角點檢測之後返回的角點,首先遍歷角點,把角點push_back到二維點容器中,然後在放到亞畫素級角點檢測函式中作為輸入,輸出的時候就是亞畫素級的2維座標點,進行遍歷顯示既可以,同時由shi-tomasi角點檢測出來的角點直接放入亞畫素級角點檢測中去作為輸入,輸出就是亞畫素級別的角點

1.輸入的影象一般是灰度影象

2.input和output型別的角點,輸入是角點的初始座標點,輸出是精準的輸出座標

3.size型別的winsize,搜尋視窗的一半尺寸,搜尋視窗就是2倍的關係

4.size型別的zerozone,表示死區的一半尺寸 值為(-1,-1)表示無死區。

5.求角點的迭代過程的終止條件

總之在進行亞畫素級的角點檢測時:

1.harris角點檢測配合cornersubpix()函式(注意引數的準備)可以求出精確的角點

2.shi-tomasi角點檢測配合cornersubpix()函式(注意引數的準備)可以求出精確的角點

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

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

OpenCV第十二講 角點檢測與亞畫素精度

角點檢測被定義兩條邊的交點,在實際應用中,大多數所謂的角點檢測方法檢測的是擁有特定特徵的影象點,而不僅僅是角點。角點 如果某一點在任意方向的乙個微小變動都會引起灰度很大的變化,那麼將其稱之為角點。角點檢測演算法 基於二值影象的角點檢測 基於輪廓曲線的角點檢測 harris角點檢測 cornerhar...

openCV畫素點處理

獲得畫素點的值便可以更加靈活的進行影象處理,在opencv裡可以通過cvget2d 和cvset2d 兩個函式加上乙個cvscalar結構體做到。opencv中,cvscalar結構為 typedef struct cvscalar cvscalar 4個double型變數,演算法處理時不至於被強制...