harris角檢測器

2021-08-10 02:57:39 字數 2714 閱讀 1467

fromnumpyimport*

fromscipy.ndimage.filtersimportgaussian_filter

frompylabimport*

defget_quo(imarray,sigma=3):#sigma為方差

imx=zeros(imarray.shape)

imy=zeros(imarray.shape)

##計算在x,y方向上的方向上的導數

gaussian_filter(imarray,(sigma,sigma),(0,1),imx)

gaussian_filter(imarray,(sigma,sigma),(1,0),imy)

#計算mi矩陣,----harris矩陣的分量

wxx=gaussian_filter(imx*imx,sigma)

wyy=gaussian_filter(imy*imy,sigma)

wxy=gaussian_filter(imx*imy,sigma)

#計算特徵值和跡

det=wxx*wyy-wxy**2

#特徵值

trace1=wxx+wyy#跡

quo=det/trace1#商數

returnquo

defget_harris_point(quo,min_dis,threshold=0.1):

'''quo為商數,min_dis為兩個角點之間最短的距離,threshold為閾值比'''

conthro=threshold*quo.max()#確定閾值的具體值

harris=1*(quo>conthro)

print(harris.nonzero())

#獲取候選座標

harris_t=array(harris.nonzero()).t

# print(harris_t)

#獲取harris的響應值

harris_value=[quo[c[0],c[1]]forcinharris_t]

# print(harris_value)

# 將響應值按從小到大輸出其索引值

index=argsort(harris_value)

#將可行點的位置儲存在陣列中

allow_point=zeros(quo.shape)

allow_point[min_dis:-min_dis,min_dis:-min_dis]=1

#按照給出的min_dis-最短距離原則選擇最佳的harris點

結果顯示:



Harris角點檢測

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

harris 檢測角點

主要是使用函式 cv exports w void goodfeaturestotrack inputarray image,輸入影象 outputarray corners,角點數 int maxcorners,最大角點數 double qualitylevel,最大最小特徵值乘法因子 doubl...

HARRIS角點檢測

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