官术网_书友最值得收藏!

2.5 圖像角點檢測

底層視覺的重要任務之一就是提取圖像中的各種特征,為后續視覺處理任務提供支撐。而除邊緣外,角點為另外一個常用的重要特征,并且角點對幾何變換具有較好的魯棒性,因此在計算機視覺任務中扮演著重要的角色。

2.5.1 圖像角點檢測基本原理及Harris角點檢測

以下面比較極端的圖像為例,從中取出三個小區域進行角點檢測,如圖2.26所示。圖中的白色框作為一個滑動窗口,若對該窗口內的像素值做求和操作,則右邊最上面的滑動窗口無論往哪個方向做小量滑動,其值都不會發生任何變化。而右邊中間的窗口則不一樣,若該窗口水平方向滑動,則其值不會發生變化;而若該窗口上下滑動,則其值會發生變化。右邊最下面的窗口無論如何滑動窗口都會造成值發生變化。從圖中也可以看出,只有當圖像處于角點區域時,若任意滑動窗口,則滑動窗口覆蓋下的區域像素值之和都會發生變化。因此一般以此為特征來檢測圖像中的角點,或稱感興趣點。當然,也可以采用一些簡單的算法,如兩條曲線的交點等。

通常情況下,圖像的噪聲會對角點的檢測產生較大的影響,為了消除噪聲的影響,常采用低通濾波器對圖像進行預處理,如采用高斯低通濾波器進行處理,然后再采用滑動窗口進行處理。下面假設這種低通去噪的處理采用權值窗口w來表示。

img

圖2.26 角點檢測

在圖2.26中,左圖為原始圖像,每個小區域的像素值都沒有變化;右圖中白色框為滑動窗口,在右邊第一行的圖像中,無論滑動窗口如何滑動,滑動窗口內的像素值之和都不會發生變化;在右邊第二行的圖像中,滑動窗口左右滑動窗口內像素值之和都不會發生變化,但在上下滑動時,窗口內像素值之和會發生變化,這種情況對應水平方向的邊緣;而在右邊第三行的圖像中滑動窗口正好位于角點上,這時候無論往哪個方向移動都會造成窗口內的像素值之和發生變化。

假設滑動窗口在水平和豎直方向上移動的距離分別用uv來表示,圖像像素值用Iu,v)表示,則在窗口內移動(u,v)后,窗口內像素值之差可以表示為

img

Ix+u,y+v)在(x,y)處做一階泰勒展開:

img

其中,Ou2,v2)表示二階無窮小,將其代入式(2.29)可得

img

進一步,若將窗口在原圖像上做滑動處理,以點(x,y)為中心點,分別進行計算,則可以得到一幅差值圖像V,采用一般的表示形式,可以將其表示為

img

其中,img,易知det(M)=AB?C2。此時根據行列式M的兩個特征值λ1λ2的情況來判斷當前點(x,y)是否為角點。實際上,其兩個特征值對應這個矩陣的兩個主軸方向,哪個方向上的方差越大,其對應的特征值越大,說明這個方向上在滑動窗口滑動時變化大。同時,由前面的介紹可知,角點處的值在兩個方向都應該比較大,說明滑動窗口的差值變化大,對應行列式表明兩個特征值的乘積大,并且任意一個特征值也不小。而若對應邊緣,則表明窗口移動只在水平或者豎直方向上變化比較大,此時對應兩個特征值中的一個值比另一個值大,但其乘積較小。若對應平坦區域,則表明行列式的值會很小,此時對應兩個特征值都比較小,近似為0,如圖2.27所示。注意,角點對應的行列式的值會比較大,因此一般在判斷角點時就可以在差值圖V中通過計算其局部極大值點來體現。

img

圖2.27 根據滑動窗口像素值變化來對點進行分類

例如,一種簡單的Harris角點檢測算法,首先可以分別對原始圖像計算其水平Ix和豎直梯度圖Iy;其次分別計算其各自的平方img與兩者的乘積Ix·Iy,分別進行高斯低通平滑;然后再計算img,設定窗口大小,對其中的非局部極大值進行抑制;最后根據與閾值來比較確定是否為角點。

注意,在原始的Harris算法中,采用如下的角點響應函數

img

來進行判斷,根據線性代數的知識,上述的響應函數等價于R=λ1λ2?kλ1+λ22。實際上根據上面的分析,R的值越大,說明這兩個特征值必定也越大。在實際使用中,一般k取一個較小的值,如0.04~0.06,在原始文獻中Harris建議取0.04,可以獲得較好的結果。

如圖2.28 是采用Harris角點檢測后的結果,其中高斯低通窗口大小為5×5,尺度參數σ=0.8,非極大值抑制鄰域為5×5。設定閾值越大,獲得的角點越少,其魯棒性也就越好。但原始的Harris角點檢測算法不具有尺度不變性,即當圖像縮小或放大后,Harris點不一定還存在,此時可以對圖像進行高斯低通濾波來處理不同尺度下的檢測問題。

img

圖2.28 采用Harris角點檢測后的結果

根據特征值的關系,尤其是兩個特征值都必須比較大,可以進一步改進Harris角點檢測算法。Shi-Tomasi角點檢測即對最小特征值設定閾值來強化角點的檢測,這樣可以在滿足大于給定閾值的最小特征點上進一步選取滿足要求數量的最大特征值作為魯棒性較高的角點。

2.5.2 FAST角點檢測

直觀上,角點處的像素值肯定與周圍鄰域的像素值有較大的差別,這種差別的模式是可以確定的,因此需要考慮圖2.29中的中心像素與其周邊像素的差值,若其周邊與當前點像素值差值大的點足夠多,則當前點很可能是角點。例如,圖2.29中當前點的半徑為3的圓周上的點,若有連續12個點的像素值與當前點的像素值差大于某個閾值,則可認為是角點。進一步使用機器學習的方法來進行加速,對同一類圖像(如同一場景的圖像)可以在16個方向上進行訓練,得到一棵決策樹,從而在判定某個像素點是否為角點時,不再需要對所有方向進行檢測,而只需要按照決策樹指定的方向進行2、3次判定即可確定該點是否為角點。

img

圖2.29 Fast角點檢測

主站蜘蛛池模板: 荆门市| 淳化县| 安西县| 时尚| 交口县| 桑植县| 吉木乃县| 电白县| 富平县| 吴堡县| 盐池县| 芮城县| 丰城市| 长寿区| 织金县| 长宁县| 富顺县| 鹤山市| 云阳县| 芜湖县| 同江市| 外汇| 都匀市| 揭西县| 盐边县| 宜川县| 神农架林区| 红安县| 阿鲁科尔沁旗| 宽甸| 石门县| 伊金霍洛旗| 峡江县| 宣化县| 江油市| 克拉玛依市| 屯昌县| 张家川| 海口市| 翼城县| 裕民县|