1. 程式人生 > >Harris角點檢測原理

Harris角點檢測原理

1. 首先,我們不禁要問什麼是harris角點?

       對於角點,到目前為止還沒有明確的數學定義。但是你可以認為角點就是極值點,即在某方面屬性特別突出的點。一般的角點檢測都是對有具體定義的、或者是能夠具體檢測出來的興趣點的檢測。這意味著興趣點可以是角點,是在某些屬性上強度最大或者最小的孤立點、線段的終點,或者是曲線上局部曲率最大的點。

       通俗的來說,在一副影象中,我們可以認為角點是物體輪廓線的連線點(見圖1),當拍攝視角變化的時候,這些特徵點仍能很好地保持穩定的屬性。

                                                                 圖1  corner

       角點在保留影象圖形重要特徵的同時,可以有效地減少資訊的資料量,使其資訊的含量很高,有效地提高了計算的速度,有利於影象的可靠匹配,使得實時處理成為可能。它的各種應用,這裡我就不再贅述了。

2. 如何檢測出harris角點?

                                                         圖2  角點檢測的基本思想

       角點檢測最原始的想法就是取某個畫素的一個鄰域視窗,當這個視窗在各個方向上進行小範圍移動時,觀察視窗內平均的畫素灰度值的變化(即,E(u,v),Window-averaged change of intensity)。從上圖可知,我們可以將一幅影象大致分為三個區域(‘flat’,‘edge’,‘corner’),這三個區域變化是不一樣的。

      其中,u,v是視窗在水平,豎直方向的偏移,

      這裡可以先簡單複習一下泰勒級數展開的知識,因為馬上就用到啦,

這是一維的情況,對於多元函式,也有類似的泰勒公式。

       對I(x+u,y+v)進行二維泰勒級數展開,我們取一階近似,有

        圖中藍線圈出的部分我們稱之為結構張量(structure tensor),用M表示。

        講到這裡,先明確一點,我們的目的是什麼?我們的目的是尋找這樣的畫素點,它使得我們的u,v無論怎樣取值,E(u,v)都是變化比較大的,這個畫素點就是我們要找的角點。不難觀察,上式近似處理後的E(u,v)是一個二次型,而由下述定理可知,

        令E(u,v)=常數,我們可用一個橢圓來描繪這一函式。

         橢圓的長短軸是與結構張量M的兩個特徵值相對應的量。通過判斷的情況我們就可以區分出‘flat’,‘edge’,‘corner’這三種區域,因為最直觀的印象:

corner:在水平、豎直兩個方向上變化均較大的點,即Ix、Iy都較大;   edge :僅在水平、或者僅在豎直方向有較大的點,即Ix和Iy只有其一較大 ;   flat   : 在水平、豎直方向的變化量均較小的點,即Ix、Iy都較小;

       而結構張量M是由Ix,Iy構成,它的特徵值正好可以反映Ix,Iy的情況,下面我以一種更容易理解的方式來講述橢圓的物理意義。

         這樣是不是更清楚了呢^_^......,因此我們可以得出結論:

         當然,大牛們並沒有止步於此,這樣通過判斷兩個變數的值來判斷角點畢竟不是很方便。於是他們想出了一種更好的方法,對,就是定義角點響應函式R(corner response function),

      針對三種區域,R的取值如何呢?

            至此,我們就可以通過判斷R的值來判斷某個點是不是角點了。 ---------------------  作者:零錢幣  來源:CSDN  原文:https://blog.csdn.net/linqianbi/article/details/78930239?utm_source=copy  版權宣告:本文為博主原創文章,轉載請附上博文連結!