計(jì)算機(jī)視覺 OpenCV Android | 基本特征檢測之 霍夫圓檢測

  • 霍夫圓變換霍夫直線變換原理類似,也是將圓上的每個(gè)點(diǎn)轉(zhuǎn)換到霍夫空間盏檐,

  • 其轉(zhuǎn)換的參數(shù)方程如下:
  • 對于圓來說歇式,θ的取值范圍在0~360°,這樣就有了三個(gè)參數(shù)胡野,
    另外兩個(gè)參數(shù)圓心(x0材失,y0)半徑γ

  • 這里的霍夫空間便是一個(gè)三維空間硫豆,
    所以如果還是跟之前的累積計(jì)算一樣龙巨,計(jì)算量就會(huì)大大增加
    這樣顯然不利于快速計(jì)算與檢測熊响,

  • 所以在OpenCV中旨别,
    霍夫圓檢測不是基于二值圖像或者邊緣檢測的結(jié)果
    而是基于灰度圖像的梯度來找到候選區(qū)域汗茄,
    然后基于候選區(qū)域實(shí)現(xiàn)霍夫圓檢測秸弛,
    這樣就會(huì)大大減少計(jì)算量,提高程序的執(zhí)行速度與性能洪碳,

    但是基于梯度實(shí)現(xiàn)霍夫圓檢測也帶來了另外一個(gè)問題递览,那就是結(jié)果特別容易受到噪聲影響,
    對圖像中的噪聲特別敏感瞳腌,

    所以在OpenCV中使用相關(guān)API實(shí)現(xiàn)霍夫圓檢測的時(shí)候绞铃,
    首先需要通過模糊操作對圖像進(jìn)行噪聲抑制處理
    一般來說嫂侍,常見的均值儿捧、高斯冷离、中值模糊圖像噪聲的抑制已經(jīng)比較有效
    但是在霍夫圓檢測中有時(shí)候還會(huì)用到邊緣保留濾波抑制平坦區(qū)域噪聲纯命,
    以便在進(jìn)行梯度計(jì)算的時(shí)候能夠更好地得到候選區(qū)域西剥。

霍夫圓檢測的API:

  • HoughCircles(Mat image, Mat circles, int method, double dp, double minDist, double param1, double param2, int minRadius, int maxRadius)
    image:8位單通道的灰度圖像。
    circles:輸出的三個(gè)向量的數(shù)組亿汞,圓心與半徑(x瞭空,y,r)疗我。
    method:唯一支持的方法就是基于梯度霍夫變換——HOUGH_GRADIENT咆畏。
    dp:圖像分辨率,注意dp越大吴裤,圖像就會(huì)相應(yīng)減小分辨率旧找;當(dāng)dp等于1時(shí),其跟原圖的大小一致麦牺;當(dāng)dp=2時(shí)钮蛛,其為原圖的一半。
    minDist:表示區(qū)分兩個(gè)圓的圓心之間最小的距離剖膳,如果兩個(gè)圓之間的距離小于給定的minDist魏颓,則認(rèn)為是同一個(gè)圓,這個(gè)參數(shù)對霍夫圓檢測來說非常有用吱晒,可以幫助降低噪聲影響甸饱。
    param1:邊緣檢測Canny算法中使用的高閾值。
    param2:累加器閾值仑濒,值越大叹话,說明越有可能是圓。
    minRadius:檢測的最小圓半徑墩瞳,單位為像素驼壶。
    maxRadius:檢測的最大圓半徑,單位為像素矗烛。

使用API實(shí)現(xiàn)灰度圖像圓檢測:

private void houghCircleDemo(Mat src, Mat dst) {
  Mat gray = new Mat();
  Imgproc.pyrMeanShiftFiltering(src, gray, 15, 80);
  Imgproc.cvtColor(gray, gray, Imgproc.COLOR_BGR2GRAY);
  Imgproc.GaussianBlur(gray, gray, new Size(3, 3), 0);
  // detect circles
  Mat circles = new Mat();
  dst.create(src.size(), src.type());
  Imgproc.HoughCircles(gray, circles, Imgproc.HOUGH_GRADIENT, 1, 20, 100, 30, 10, 200);
  for(int i=0; i<circles.cols(); i++) {
    float[] info = new float[3];
    circles.get(0, i, info);
    Imgproc.circle(dst, new Point((int)info[0], (int)info[1]), (int)info[2],
        new Scalar(0, 255, 0), 2, 8, 0);
  }
  circles.release();
  gray.release();
}

運(yùn)行結(jié)果如下圖辅柴,左側(cè)為原圖,右側(cè)是霍夫圓檢測運(yùn)行結(jié)果:
  • 霍夫圓檢測相比霍夫直線檢測瞭吃,計(jì)算量大,輸出參數(shù)多涣旨,
    因此一般都通過指定半徑范圍歪架,指定邊緣閾值累積器閾值減少計(jì)算量
    否則速度就會(huì)很慢霹陡,這個(gè)也是在使用的時(shí)候需要特別注意的和蚪。
上述三個(gè)指定參數(shù)如何影響霍夫圓檢測的計(jì)算量
  1. 指定半徑范圍:
    minRadius:檢測的最小圓半徑止状,單位為像素。
    maxRadius:檢測的最大圓半徑攒霹,單位為像素怯疤。
    即函數(shù)只檢測半徑處于minRadius和maxRadius之間的圓,所以指定半徑范圍自然能夠影響計(jì)算量了催束。
  2. 指定邊緣閾值
    霍夫圓檢測的基于內(nèi)部邊緣檢測的結(jié)果集峦;
    而邊緣閾值影響邊緣檢測最終留下的邊緣像素,即影響內(nèi)部邊緣檢測的結(jié)果抠刺,
    因而影響霍夫圓檢測的計(jì)算量塔淤;
  3. 累積器閾值
    此閾值的高低便是提取圓的要求的高低,高閾值高要求高計(jì)算量速妖,反之亦然高蜂。
  • 此外廣義霍夫變換通過拓展,可以實(shí)現(xiàn)任意形狀的檢測罕容,可以查閱其他相關(guān)的資料了解备恤,這里便不多說了。

參考材料
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末锦秒,一起剝皮案震驚了整個(gè)濱河市烘跺,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌脂崔,老刑警劉巖滤淳,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異砌左,居然都是意外死亡脖咐,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進(jìn)店門汇歹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來屁擅,“玉大人,你說我怎么就攤上這事产弹∨筛瑁” “怎么了?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵痰哨,是天一觀的道長胶果。 經(jīng)常有香客問我,道長斤斧,這世上最難降的妖魔是什么早抠? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮撬讽,結(jié)果婚禮上蕊连,老公的妹妹穿的比我還像新娘悬垃。我一直安慰自己,他們只是感情好甘苍,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布尝蠕。 她就那樣靜靜地躺著,像睡著了一般载庭。 火紅的嫁衣襯著肌膚如雪看彼。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天昧捷,我揣著相機(jī)與錄音闲昭,去河邊找鬼。 笑死靡挥,一個(gè)胖子當(dāng)著我的面吹牛序矩,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播跋破,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼簸淀,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了毒返?” 一聲冷哼從身側(cè)響起租幕,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎拧簸,沒想到半個(gè)月后劲绪,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡盆赤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年贾富,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片牺六。...
    茶點(diǎn)故事閱讀 39,926評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡颤枪,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出淑际,到底是詐尸還是另有隱情畏纲,我是刑警寧澤,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布春缕,位于F島的核電站盗胀,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏淡溯。R本人自食惡果不足惜读整,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望咱娶。 院中可真熱鬧米间,春花似錦、人聲如沸膘侮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽琼了。三九已至逻锐,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間雕薪,已是汗流浹背昧诱。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留所袁,地道東北人盏档。 一個(gè)月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像燥爷,于是被迫代替她去往敵國和親蜈亩。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評論 2 354

推薦閱讀更多精彩內(nèi)容