image and video processing聽課筆記(四)

本章主要講解最基本的圖像分割算法


Hough transform霍夫變換

算法流程:讀入圖片,邊緣檢測,創建累加器,找到累加器中的最大值,將曲線畫回原圖片


首先從檢測直線來理解,平面直線的表達式


row是直線到原點的距離,thetax軸到過原點垂線逆時針方向夾角,直線上的所有點都滿足上述表達式。而每一個點(x,y)都可以有無限多條直線(rowtheta)與之對應,就看做這些直線(row,theta)得到點(x,y)的一次投票。


同理,通過另一個點也有無數條直線(row,theta)與之對應,這些線同樣得到該點的一次投票。此時有且僅有一條直線會同時得到來自上述兩點的投票。繼續檢測其他點(這些點應該具有一些相同屬性,比如相同灰度值),對通過每個點的直線投票,那麼目標直線就是累計得票最多的(row,theta),上限是取點數。

現在把這個過程轉換到rowtheta的座標上理解微笑

平面上固定的點(x,y),取遍theta可以得到不同的row,這些(row,theta)在座標上描出形如sin函數的圖,同理每個點都可以得到一個這樣的類似sin函數的圖,每個(row,theta)可以用一個累加器來記錄函數通過它的次數(得票數),次數越多的就越可能是目標直線。



下列程序調用MATLAB的庫函數來實現hough變換尋找直線段。


如何檢測圓?驚訝

平面圓上的每個點都滿足如下方程,(x0,y0)是圓心座標,r是圓半徑


和直線檢測類似,每個點(x,y)對通過它的圓(x0,y0,r)投票,票數最多的就是目標圓了,對應的應該是3維座標


hough變換一邊用於檢測簡單的曲線,比如直線,圓,橢圓,因爲他們的表達式中參數有限且範圍固定,所以計算效率較高,佔用空間也不會很大。下一章將會和大家分享otsu算法的學習心得。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章