簡體   English   中英

使用 Hough 變換在 MATLAB 中標記二值圖像

[英]Binary image labeling in MATLAB with Hough transform

我有這個二進制圖像:

我想標記位於同一行的像素,如下所示:

我試過霍夫變換。 但是,如您所見,它未能找到所有行。 有誰有想法嗎?

Hough 應該適合這個應用程序。 正如 Falimond 和 gfkri 所建議的,對標准 Hough 技術進行一些參數調整會有所幫助。

一些想法:

  1. 不是計算霍夫選票,而是確定線密度。 找到許多候選線后,確定每條線在圖像中占據的最大像素數。 (通過中心的線比通過靠近角落的點的線長。)將 bin 計數 [投票] 除以最大可能的線長度以產生線密度。 然后按線密度過濾。 當您采用這種技術時,您通常需要為密度和最小長度設置閾值——您不想找到恰好是直的但與它們所屬的線稍微成角度的 8 像素段。
  2. 先放大圖像; 從它的外觀來看,你可以擴張很多。 當白色像素塊被擴大時,沿着霍夫擬合線會有更高密度的點。 膨脹后,您還可以對圖像進行下采樣(例如從 640x480 到 160x120)以減少您必須處理的點數。 [您也可以應用高斯模糊來生成灰度圖像。 這將原始邊緣點保持為最強的峰值。 然后,您將在 Hough 累加器中使用加權強度值。]
  3. 作為 (2) 膨脹的替代方法,對於圖像中的每個 (x,y) 白色像素,也將投票添加到您的所有相鄰像素的累加器箱中:(x-1,y-1), (x, y- 1)、。 . . (x+1,y+1)。 這可能會更快地更改您的代碼。
  4. 降低角分辨率。 也就是說,如果您的 Hough 累加器使用 1 度角增量,請嘗試 2​​ 度角增量。
  5. 獲取您的 (R,theta) 累加器圖 - 您可以將其視為一種 2D 強度圖像 - 並在識別峰值之前將其平滑。 如果您傾向於得到兩條幾乎重疊的線,您可能只需要平滑,因為沿着您認為應該是一條線的點分散在雙峰團塊中。

長話短說:正如 gfkri 建議的那樣,通過降低有效分辨率使任務更簡單。 考慮擬合一條 N 像素厚的霍夫線段而不是 1 像素的霍夫線。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM