物体识别算法——SIFT/SURF、haar特征、广义hough变换的对比分析
生活随笔
收集整理的這篇文章主要介紹了
物体识别算法——SIFT/SURF、haar特征、广义hough变换的对比分析
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
著作權歸作者所有。
商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
作者:cvvision
鏈接:http://www.cvvision.cn/7780.html
來源:CV視覺網
識別算法概述:SIFT/SURF基于灰度圖,一、首先建立圖像金字塔,形成三維的圖像空間,通過Hessian矩陣獲取每一層的局部極大值,然后進行在極值點周圍26個點進行NMS,從而得到粗略的特征點,再使用二次插值法得到精確特征點所在的層(尺度),即完成了尺度不變。二、在特征點選取一個與尺度相應的鄰域,求出主方向,其中SIFT采用在一個正方形鄰域內統計所有點的梯度方向,找到占80%以上的方向作為主方向;而SURF則選擇圓形鄰域,并且使用活動扇形的方法求出特征點主方向,以主方向對齊即完成旋轉不變。三、以主方向為軸可以在每個特征點建立坐標,SIFT在特征點選擇一塊大小與尺度相應 的方形區域,分成16塊,統計每一塊沿著八個方向占的比例,于是特征點形成了128維特征向量,對圖像進行歸一化則完成強度不變;而SURF分成64塊, 統計每一塊的dx,dy,|dx|,|dy|的累積和,同樣形成128維向量,再進行歸一化則完成了對比度不變與強度不變。 Haar特征也是基于灰度圖,首先通過大量的具有比較明顯的haar特征(矩形)的物體圖像用模式識別的方法訓練出 分類器,分類器是個級聯的,每級都以大概相同的識別率保留進入下一級的具有物體特征的候選物體,而每一級的子分類器則由許多haar特征構成(由積分圖像 計算得到,并保存下位置),有水平的、豎直的、傾斜的,并且每個特征帶一個閾值和兩個分支值,每級子分類器帶一個總的閾值。識別物體的時候,同樣計算積分 圖像為后面計算haar特征做準備,然后采用與訓練的時候有物體的窗口同樣大小的窗口遍歷整幅圖像,以后逐漸放大窗口,同樣做遍歷搜索物體;每當窗口移動 到一個位置,即計算該窗口內的haar特征,加權后與分類器中haar特征的閾值比較從而選擇左或者右分支值,累加一個級的分支值與相應級的閾值比較,大 于該閾值才可以通過進入下一輪篩選。當通過分類器所以級的時候說明這個物體以大概率被識別。 廣義hough變換同樣基于灰度圖,使用輪廓作為特征,融合了梯度信息,以投票的方式識別物體,在本blog的另一篇文章中有詳細討論,這里不再贅述。 特點異同對比及其適用場合:三種算法都只是基于強度(灰度)信息,都是特征方法,但SIFT/SURF的特征是一種具有強烈方向性及亮度性的特征,這使得它適用于剛性形變,稍有透視形變的場合;haar特征識別方法帶有一點人工智能的 意味,對于像人臉這種有明顯的、穩定結構的haar特征的物體最適用,只要結構相對固定即使發生扭曲等非線性形變依然可識別;廣義hough變換完全是精 確的匹配,可得到物體的位置方向等參數信息。前兩種方法基本都是通過先獲取局部特征然后再逐個匹配,只是局部特征的計算方法不同,SIFT/SURF比較 復雜也相對穩定,haar方法比較簡單,偏向一種統計的方法形成特征,這也使其具有一定的模糊彈性;廣義hough變換則是一種全局的特征——輪廓梯度, 但也可以看做整個輪廓的每一個點的位置和梯度都是特征,每個點都對識別有貢獻,用直觀的投票,看票數多少去確定是否識別出物體。 SIFT/SURF算法的深入剖析——談SIFT的精妙與不足SURF算法是SIFT算法的加速版,OpenCV的SURF算法在適中的條件下完成兩幅圖像中物體的匹配基本實現了實時處理,其快速的基礎實際上只有一個——積分圖像haar求導,對于它們其他方面的不同可以參考本blog的另外一篇關于SIFT的文章。不論科研還是應用上都希望可以和人類的視覺一樣通過程序自動找出兩幅圖像里面相同的景物,并且建立它們之間的對應,前幾年才被提出的SIFT(尺度不變特 征)算法提供了一種解決方法,通過這個算法可以使得滿足一定條件下兩幅圖像中相同景物的某些點(后面提到的關鍵點)可以匹配起來,為什么不是每一點都匹配 呢?下面的論述將會提到。SIFT算法實現物體識別主要有三大工序,1、提取關鍵點;2、對關鍵點附加詳細的信息(局部特征)也就是所謂的描述器;3、通過兩方特征點(附帶上特征向量的關鍵點)的兩兩比較找出相互匹配的若干對特征點,也就建立了景物間的對應關系。日常的應用中,多數情況是給出一幅包含物體的參考圖像,然后在另外一幅同樣含有該物體的圖像中實現它們的匹配。兩幅圖像中的物體一般只是旋轉和縮放的關 系,加上圖像的亮度及對比度的不同,這些就是最常見的情形。基于這些條件下要實現物體之間的匹配,SIFT算法的先驅及其發明者想到只要找到多于三對物體 間的匹配點就可以通過射影幾何的理論建立它們的一一對應。首先在形狀上物體既有旋轉又有縮小放大的變化,如何找到這樣的對應點呢?于是他們的想法是首先找 到圖像中的一些“穩定點”,這些點是一些十分突出的點不會因光照條件的改變而消失,比如角點、邊緣點、暗區域的亮點以及亮區域的暗點,既然兩幅圖像中有相 同的景物,那么使用某種方法分別提取各自的穩定點,這些點之間會有相互對應的匹配點,正是基于這樣合理的假設,SIFT算法的基礎是穩定點。SIFT算法 找穩定點的方法是找灰度圖的局部最值,由于數字圖像是離散的,想求導和求最值這些操作都是使用濾波器,而濾波器是有尺寸大小的,使用同一尺寸的濾波器對兩 幅包含有不同尺寸的同一物體的圖像求局部最值將有可能出現一方求得最值而另一方卻沒有的情況,但是容易知道假如物體的尺寸都一致的話它們的局部最值將會相 同。SIFT的精妙之處在于采用圖像金字塔的方法解決這一問題,我們可以把兩幅圖像想象成是連續的,分別以它們作為底面作四棱錐,就像金字塔,那么每一個 截面與原圖像相似,那么兩個金字塔中必然會有包含大小一致的物體的無窮個截面,但應用只能是離散的,所以我們只能構造有限層,層數越多當然越好,但處理時 間會相應增加,層數太少不行,因為向下采樣的截面中可能找不到尺寸大小一致的兩個物體的圖像。有了圖像金字塔就可以對每一層求出局部最值,但是這樣的穩定 點數目將會十分可觀,所以需要使用某種方法抑制去除一部分點,但又使得同一尺度下的穩定點得以保存。有了穩定點之后如何去讓程序明白它們之間是物體的同一 位置?研究者想到以該點為中心挖出一小塊區域,然后找出區域內的某些特征,讓這些特征附件在穩定點上,SIFT的又一個精妙之處在于穩定點附加上特征向量 之后就像一個根系發達的樹根一樣牢牢的抓住它的“土地”,使之成為更穩固的特征點,但是問題又來了,遇到旋轉的情況怎么辦?發明者的解決方法是找一個“主 方向”然后以它看齊,就可以知道兩個物體的旋轉夾角了。下面就討論一下SIFT算法的缺陷。SIFT/SURT采用henssian矩陣獲取圖像局部最值還是十分穩定的,但是在求主方向階段太過于依賴局部區域像素的梯度方向,有可能使得找到的主 方向不準確,后面的特征向量提取以及匹配都嚴重依賴于主方向,即使不大偏差角度也可以造成后面特征匹配的放大誤差,從而匹配不成功;另外圖像金字塔的層取 得不足夠緊密也會使得尺度有誤差,后面的特征向量提取同樣依賴相應的尺度,發明者在這個問題上的折中解決方法是取適量的層然后進行插值。SIFT是一種只 利用到灰度性質的算法,忽略了色彩信息,后面又出現了幾種據說比SIFT更穩定的描述器其中一些利用到了色彩信息,讓我們拭目以待。最后要提一下,我們知道同樣的景物在不同的照片中可能出現不同的形狀、大小、角度、亮度,甚至扭曲;計算機視覺的知識表明通過光學鏡頭獲取的圖像,對于平 面形狀的兩個物體它們之間可以建立射影對應,對于像人臉這種曲面物體在不同角度距離不同相機參數下獲取的兩幅圖像,它們之間不是一個線性對應關系,就是說 我們即使獲得兩張圖像中的臉上若干匹配好的點對,還是無法從中推導出其他點的對應。
商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
作者:cvvision
鏈接:http://www.cvvision.cn/7780.html
來源:CV視覺網
識別算法概述:SIFT/SURF基于灰度圖,一、首先建立圖像金字塔,形成三維的圖像空間,通過Hessian矩陣獲取每一層的局部極大值,然后進行在極值點周圍26個點進行NMS,從而得到粗略的特征點,再使用二次插值法得到精確特征點所在的層(尺度),即完成了尺度不變。二、在特征點選取一個與尺度相應的鄰域,求出主方向,其中SIFT采用在一個正方形鄰域內統計所有點的梯度方向,找到占80%以上的方向作為主方向;而SURF則選擇圓形鄰域,并且使用活動扇形的方法求出特征點主方向,以主方向對齊即完成旋轉不變。三、以主方向為軸可以在每個特征點建立坐標,SIFT在特征點選擇一塊大小與尺度相應 的方形區域,分成16塊,統計每一塊沿著八個方向占的比例,于是特征點形成了128維特征向量,對圖像進行歸一化則完成強度不變;而SURF分成64塊, 統計每一塊的dx,dy,|dx|,|dy|的累積和,同樣形成128維向量,再進行歸一化則完成了對比度不變與強度不變。 Haar特征也是基于灰度圖,首先通過大量的具有比較明顯的haar特征(矩形)的物體圖像用模式識別的方法訓練出 分類器,分類器是個級聯的,每級都以大概相同的識別率保留進入下一級的具有物體特征的候選物體,而每一級的子分類器則由許多haar特征構成(由積分圖像 計算得到,并保存下位置),有水平的、豎直的、傾斜的,并且每個特征帶一個閾值和兩個分支值,每級子分類器帶一個總的閾值。識別物體的時候,同樣計算積分 圖像為后面計算haar特征做準備,然后采用與訓練的時候有物體的窗口同樣大小的窗口遍歷整幅圖像,以后逐漸放大窗口,同樣做遍歷搜索物體;每當窗口移動 到一個位置,即計算該窗口內的haar特征,加權后與分類器中haar特征的閾值比較從而選擇左或者右分支值,累加一個級的分支值與相應級的閾值比較,大 于該閾值才可以通過進入下一輪篩選。當通過分類器所以級的時候說明這個物體以大概率被識別。 廣義hough變換同樣基于灰度圖,使用輪廓作為特征,融合了梯度信息,以投票的方式識別物體,在本blog的另一篇文章中有詳細討論,這里不再贅述。 特點異同對比及其適用場合:三種算法都只是基于強度(灰度)信息,都是特征方法,但SIFT/SURF的特征是一種具有強烈方向性及亮度性的特征,這使得它適用于剛性形變,稍有透視形變的場合;haar特征識別方法帶有一點人工智能的 意味,對于像人臉這種有明顯的、穩定結構的haar特征的物體最適用,只要結構相對固定即使發生扭曲等非線性形變依然可識別;廣義hough變換完全是精 確的匹配,可得到物體的位置方向等參數信息。前兩種方法基本都是通過先獲取局部特征然后再逐個匹配,只是局部特征的計算方法不同,SIFT/SURF比較 復雜也相對穩定,haar方法比較簡單,偏向一種統計的方法形成特征,這也使其具有一定的模糊彈性;廣義hough變換則是一種全局的特征——輪廓梯度, 但也可以看做整個輪廓的每一個點的位置和梯度都是特征,每個點都對識別有貢獻,用直觀的投票,看票數多少去確定是否識別出物體。 SIFT/SURF算法的深入剖析——談SIFT的精妙與不足SURF算法是SIFT算法的加速版,OpenCV的SURF算法在適中的條件下完成兩幅圖像中物體的匹配基本實現了實時處理,其快速的基礎實際上只有一個——積分圖像haar求導,對于它們其他方面的不同可以參考本blog的另外一篇關于SIFT的文章。不論科研還是應用上都希望可以和人類的視覺一樣通過程序自動找出兩幅圖像里面相同的景物,并且建立它們之間的對應,前幾年才被提出的SIFT(尺度不變特 征)算法提供了一種解決方法,通過這個算法可以使得滿足一定條件下兩幅圖像中相同景物的某些點(后面提到的關鍵點)可以匹配起來,為什么不是每一點都匹配 呢?下面的論述將會提到。SIFT算法實現物體識別主要有三大工序,1、提取關鍵點;2、對關鍵點附加詳細的信息(局部特征)也就是所謂的描述器;3、通過兩方特征點(附帶上特征向量的關鍵點)的兩兩比較找出相互匹配的若干對特征點,也就建立了景物間的對應關系。日常的應用中,多數情況是給出一幅包含物體的參考圖像,然后在另外一幅同樣含有該物體的圖像中實現它們的匹配。兩幅圖像中的物體一般只是旋轉和縮放的關 系,加上圖像的亮度及對比度的不同,這些就是最常見的情形。基于這些條件下要實現物體之間的匹配,SIFT算法的先驅及其發明者想到只要找到多于三對物體 間的匹配點就可以通過射影幾何的理論建立它們的一一對應。首先在形狀上物體既有旋轉又有縮小放大的變化,如何找到這樣的對應點呢?于是他們的想法是首先找 到圖像中的一些“穩定點”,這些點是一些十分突出的點不會因光照條件的改變而消失,比如角點、邊緣點、暗區域的亮點以及亮區域的暗點,既然兩幅圖像中有相 同的景物,那么使用某種方法分別提取各自的穩定點,這些點之間會有相互對應的匹配點,正是基于這樣合理的假設,SIFT算法的基礎是穩定點。SIFT算法 找穩定點的方法是找灰度圖的局部最值,由于數字圖像是離散的,想求導和求最值這些操作都是使用濾波器,而濾波器是有尺寸大小的,使用同一尺寸的濾波器對兩 幅包含有不同尺寸的同一物體的圖像求局部最值將有可能出現一方求得最值而另一方卻沒有的情況,但是容易知道假如物體的尺寸都一致的話它們的局部最值將會相 同。SIFT的精妙之處在于采用圖像金字塔的方法解決這一問題,我們可以把兩幅圖像想象成是連續的,分別以它們作為底面作四棱錐,就像金字塔,那么每一個 截面與原圖像相似,那么兩個金字塔中必然會有包含大小一致的物體的無窮個截面,但應用只能是離散的,所以我們只能構造有限層,層數越多當然越好,但處理時 間會相應增加,層數太少不行,因為向下采樣的截面中可能找不到尺寸大小一致的兩個物體的圖像。有了圖像金字塔就可以對每一層求出局部最值,但是這樣的穩定 點數目將會十分可觀,所以需要使用某種方法抑制去除一部分點,但又使得同一尺度下的穩定點得以保存。有了穩定點之后如何去讓程序明白它們之間是物體的同一 位置?研究者想到以該點為中心挖出一小塊區域,然后找出區域內的某些特征,讓這些特征附件在穩定點上,SIFT的又一個精妙之處在于穩定點附加上特征向量 之后就像一個根系發達的樹根一樣牢牢的抓住它的“土地”,使之成為更穩固的特征點,但是問題又來了,遇到旋轉的情況怎么辦?發明者的解決方法是找一個“主 方向”然后以它看齊,就可以知道兩個物體的旋轉夾角了。下面就討論一下SIFT算法的缺陷。SIFT/SURT采用henssian矩陣獲取圖像局部最值還是十分穩定的,但是在求主方向階段太過于依賴局部區域像素的梯度方向,有可能使得找到的主 方向不準確,后面的特征向量提取以及匹配都嚴重依賴于主方向,即使不大偏差角度也可以造成后面特征匹配的放大誤差,從而匹配不成功;另外圖像金字塔的層取 得不足夠緊密也會使得尺度有誤差,后面的特征向量提取同樣依賴相應的尺度,發明者在這個問題上的折中解決方法是取適量的層然后進行插值。SIFT是一種只 利用到灰度性質的算法,忽略了色彩信息,后面又出現了幾種據說比SIFT更穩定的描述器其中一些利用到了色彩信息,讓我們拭目以待。最后要提一下,我們知道同樣的景物在不同的照片中可能出現不同的形狀、大小、角度、亮度,甚至扭曲;計算機視覺的知識表明通過光學鏡頭獲取的圖像,對于平 面形狀的兩個物體它們之間可以建立射影對應,對于像人臉這種曲面物體在不同角度距離不同相機參數下獲取的兩幅圖像,它們之間不是一個線性對應關系,就是說 我們即使獲得兩張圖像中的臉上若干匹配好的點對,還是無法從中推導出其他點的對應。
總結
以上是生活随笔為你收集整理的物体识别算法——SIFT/SURF、haar特征、广义hough变换的对比分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VS+MFC+Opencv显示视频和图像
- 下一篇: 基于运动信息的物体检测(背景差分法、帧间