Shi Tomasi角點檢測原始碼分析

2021-09-10 08:39:02 字數 1944 閱讀 8349

shi-tomas在角點響應函式上與harris不同。

1.shi-tomas角點響應函式

r = min(λ1,λ2)

2.harris角點響應函式

r = det(m) - k(trace(m)^2)

其中m,是影象的張量矩陣。λ1與λ2是m的特徵值。

1.個人理解

1)在所表示的幾何橢圓中,特徵值越大,對應的橢圓軸越短,e(u,v)隨(u,v)的改變越大。

2)當某點最小的特徵值大於所設定的閾值時,矩陣m最少有兩個特徵值大於設定閾值。從而此點一定滿足角點要求。

因此以特徵值最小值作為判斷點能夠滿足強角點 。

2.影象直觀表示

//在shi-tomasi角點檢測中,此函式呼叫與harris角點檢測一致,唯一的不同在最後一步的模式選擇

int aperture_size,

int op_type,

double k=0.,

int bordertype=border_default )

else

size size = src.

size()

; mat cov

( size, cv_32fc3 )

;int i, j;

for( i =

0; i < size.height; i++)}

#endif

// cv_simd128

for(

; j < size.width; j++

)//直接的序列步驟

}boxfilter

(cov, cov, cov.

depth()

,size

(block_size, block_size)

,point(-

1,-1

), false, bordertype );if

( op_type == mineigenval )

//此處的選擇模式是最小特徵值

calcmineigenval

( cov, eigenv )

;else

if( op_type == harris )

calcharris

( cov, eigenv, k )

;else

if( op_type == eigenvalsvecs )

calceigenvalsvecs

( cov, eigenv );}

static

void

calcmineigenval

(const mat& _cov, mat& _dst )

for( i =

0; i < size.height; i++)}

#endif

// cv_simd128

//直接進行序列處理

for(

; j < size.width; j++

)//λ2 = (float)((a + c) - std::sqrt((a - c)*(a - c) + b*b))這個是最小的

}}

Shi Tomasi角點檢測演算法

1 shi tomasi概念 2 api 3 code 1 角點檢測除了harris角點檢測演算法外,還常常使用shi tomasi演算法,shi tomasi演算法是harris演算法的改進,因此計算速度更快,shi tomasi演算法於1994年在文章 good features to trac...

OpenCV2 Shi Tomasi角點檢測

角點檢測理論 和harris角點檢測的理論幾乎完全一致,唯一不同的是在使用矩陣特徵值 1 lambda 1 1 2 lambda 2 2 計算角度響應的時候的公式不同。shi tomasi角點響應公式 r m in 1,2 r min lambda 1,lambda 2 r min 1 2 引數說明...

harris角點檢測 角點檢測實戰

介紹 角點是很容易在影象中定位的區域性特徵,並且大量存在於人造物體中 例如牆壁 門 桌子等 角點的價值在於它是兩條邊緣線的接合點,是一種二維特徵,可以被精確地檢測 即使是亞畫素級精度 實現原理 例子 include includeusing namespace std using namespace...