opencv(十七) 角點檢測

2021-10-08 14:52:38 字數 3439 閱讀 2861

影象特徵型別可以分為以下三點:

邊緣、角點、斑點(blob)

corners:包含大量本地資訊的畫素塊,並能夠在另一張圖中被快速識別

keypoints:作為 corners 的擴充套件,它將畫素塊的資訊進行編碼從而使得更易辨識,至少在原則上唯一

descriptors:它是對 keypoints 進一步處理的結果。通常它具有更低的維度,從而使得影象塊能夠在另一幅不同的影象中被更快地識別。

推薦優秀部落格:

//輸入8bit單通道灰度mat矩陣

outputarray dst,

//用於儲存harris角點檢測結果,32位單通道,大小與src相同

int blocksize,

//滑塊視窗的尺寸

int ksize,

//sobel邊緣檢測濾波器大小

double k,

//harris中間引數,經驗值0.04~0.06

int bordertype=border_default //插值型別

);

// detector parameters

int blocksize =2;

int aperturesize =3;

double k =

0.04

;// detecting corners

mat gray, dst;

cvtcolor

(image, gray, color_bgr2gray)

;cornerharris

(gray, dst, blocksize, aperturesize, k)

;

harris角點檢測是一種計算速度很慢的角點檢測演算法,很難實時計算,所有最常用的是shi-tomas角點檢測演算法,它的執行速度很快。shi-tomas角點檢測演算法是harris 演算法的改進,若兩個特徵值中較小的乙個大於最小閾值,則會得到強角點

c++:void

goodfeaturestotrack

( inputarray image,

//8位或32位單通道灰度影象

outputarray corners,

int maxcorners,

double qualitylevel,

//角點特徵值小於qualitylevel*最大特徵值的點將被捨棄;

double mindistance,

inputarray mask=

noarray()

,int blocksize=3,

bool useharrisdetector=

false

,//是否使用harris角點檢測,為false,則使用shi-tomasi運算元;

double k=

0.04

//留給harris角點檢測運算元用的中間引數,一般取經驗值0.04~0.06。第八個引數為false時,該引數不起作用

);

只能得到整數的座標值。對於儲存角點的陣列,如果是vector,那麼應該是cv::point2f的vector,如果是mat型,那麼是乙個nx2的mat,每一列均是乙個角點,兩列分別代表該點x,y。

//輸入影象

inputoutputarray corners,

//輸入角點的初始座標和為輸出的精確座標

size winsize,

//搜尋視窗邊長的一半

size zerozone,

//搜尋區域中間的死區大小的一半,(-1,-1)表示沒有這樣的大小。

termcriteria criteria //通常是cv::termcriteria::max_iter或cv::termcriteria::eps

//如果終止誤差定為 0.1,那麼最終的結果精度將為原始畫素點的十分之一

);

// detector parameters

int maxcorners =

100;

double quality_level =

0.01

;double mindistance =10;

// detecting corners

mat gray, dst;

cvtcolor

(image, gray, color_bgr2gray)

; vector corners;

goodfeaturestotrack

(gray, corners, maxcorners, quality_level, mindistance,

mat(),

3,false);

for(

int i =

0; i < corners.

size()

; i++

)// 亞畫素級別檢測

size winsize =

size(5

,5);

size zerozone =

size(-

1,-1

);termcriteria criteria =

termcriteria

(termcriteria::eps + termcriteria::count,40,

0.001);

cornersubpix

(gray, corners, winsize, zerozone, criteria)

;

opencv角點檢測

什麼叫角點呢?如果某一點在任意方向的乙個微小變化都會造成影象灰度很大的變化,那麼這個點就是角點 我們可以把角落看成是角點的現實體現,對於牆角來說,牆角是所有平面的開始點,只要這個點變化,就會引起所有從這個點出發的平面的變化,這就是角點。下面是幾個角點的具體描述 1 一階導數,也就是影象灰度的梯度的區...

OpenCV角點檢測小結

棋盤點匹配的問題?不考慮,因為r,t對內參標定沒影響。固定取左上角為原點就行了。注意 靶標是以什麼為單位無所謂,反正求出的內參是以畫素為單位的,t的單位和靶標單位一致。劉博確實很強大,均衡化後巧妙的統計得到了理想的門限,對光照相當魯棒!影象處理是一門藝術。opencv角點檢測小結 1,cvgoodf...

opencv角點檢測簡介

1 相關概念 1興趣點 在影象處理和計算機視覺領域,興趣點也被稱為 關鍵點或者特徵點被大量用於解決物體識別,影象識別,影象匹配,視覺追蹤,三維重建,等一系列問題,我們不再觀察整幅圖,而是選擇某些特殊的點,然後對他們進行分析,如果能檢測到足夠的這種點,同時他們的區分度很高,並且可以精準定位穩定的特徵,...