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...