harris 演算法python實現

來源:互聯網
上載者:User

標籤:

harris 最常用作特徵檢測演算法。

     第一個檔案harris.py

<pre name="code" class="python">from scipy.ndimage import filtersfrom numpy import *from pylab import *def compute_harris_response(im,sigma=3):    imx=zeros(im.shape)#計算導數    filters.gaussian_filter(im,(sigma,sigma),(0,1),imx)    imy=zeros(im.shape)    filters.gaussian_filter(im,(sigma,sigma),(1,0),imy)    Wxx=filters.gaussian_filter(imx*imx,sigma)   #計算harris矩陣分量       Wxy=filters.gaussian_filter(imx*imy,sigma)    Wyy=filters.gaussian_filter(imy*imy,sigma)    Wdet=Wxx*Wyy-Wxy**2    #計算矩陣的特徵值和跡    Wtr=Wxx+Wyy    return  Wdet/Wtrdef get_harris_points(harrisim,min_dist=10,threshold=0.1):    conner_threshold=harrisim.max()*threshold    harrisim_t=(harrisim>conner_threshold)*1        coords=array(harrisim_t.nonzero()).T    candidate_values=[harrisim[c[0],c[1]] for c in coords]    index=argsort(candidate_values)    allowed_locations=zeros(harrisim.shape)    allowed_locations[min_dist:-min_dist,min_dist:-min_dist]=1    filtered_coords=[]    for i in index:        if allowed_locations[coords[i,0],coords[i,1]]==1:            filtered_coords.append(coords[i])            allowed_locations[(coords[i,0]-min_dist):(coords[i,0]+min_dist),(coords[i,1]-min_dist):(coords[i,1]+min_dist)]=0#此處保證min_dist*min_dist僅僅有一個harris特徵點    return filtered_coordsdef plot_harris_points(image,filtered_coords):    figure()    gray()    imshow(image)    plot([p[1] for p in filtered_coords],[p[0]for p in filtered_coords],'+')    axis('off')    show()

第二個檔案測試演算法

from PIL import Imagefrom numpy import *import harrisfrom pylab import *from scipy.ndimage import filtersim=array(Image.open('33.jpg').convert('L'))harrisim=harris.compute_harris_response(im)filtered_coords=harris.get_harris_points(harrisim)harris.plot_harris_points(im,filtered_coords)



著作權聲明:本文部落格原創文章,部落格,未經同意,不得轉載。

harris 演算法python實現

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.