天天看點

圖像處理之霍夫變換圓檢測算法

圖像處理之霍夫變換圓檢測算法

之前寫過一篇文章講述霍夫變換原理與利用霍夫變換檢測直線, 結果發現通路量還是蠻

多,有點超出我的意料,很多人都留言說代碼寫得不好,沒有注釋,結構也不是很清晰,是以

我萌發了再寫一篇,介紹霍夫變換圓檢測算法,同時也盡量的加上詳細的注釋,介紹代碼

結構.讓更多的人能夠讀懂與了解.

一:霍夫變換檢測圓的數學原理

圖像處理之霍夫變換圓檢測算法

根據極坐标,圓上任意一點的坐标可以表示為如上形式, 是以對于任意一個圓, 假設

中心像素點p(x0, y0)像素點已知, 圓半徑已知,則旋轉360由極坐标方程可以得到每

個點上得坐标同樣,如果隻是知道圖像上像素點, 圓半徑,旋轉360°則中心點處的坐

标值必定最強.這正是霍夫變換檢測圓的數學原理.

二:算法流程

該算法大緻可以分為以下幾個步驟

圖像處理之霍夫變換圓檢測算法

三:運作效果

圖像從空間坐标變換到極坐标效果, 最亮一點為圓心.

圖像處理之霍夫變換圓檢測算法

圖像從極坐标變換回到空間坐标,檢測結果顯示:

圖像處理之霍夫變換圓檢測算法

四:關鍵代碼解析

個人覺得這次注釋已經是非常的詳細啦,而且我寫的還是中文注釋

完整的算法源代碼, 已經全部的加上注釋

測試的UI類:

五:霍夫變換檢測圓與直線的圖像預處理

使用霍夫變換檢測圓與直線時候,一定要對圖像進行預處理,灰階化以後,提取

圖像的邊緣使用非最大信号壓制得到一個像素寬的邊緣, 這個步驟對霍夫變

換非常重要.否則可能導緻霍夫變換檢測的嚴重失真.

第一次用Mac發博文,編輯不好請見諒!