-1
A
回答
0
霍夫應該對這個應用程序很好。正如Falimond和gfkri所建議的那樣,標準Hough技術的一些參數調整將有所幫助。
幾個想法:
- 相反計數霍夫投票,確定行密度。找到多個候選行後,確定每行在圖像中佔用的最大像素數。 (通過中心的線比通過拐角附近的線的線長)。將容器計數[投票]除以最大可能的線長以產生線密度。然後按線密度過濾。當你遵循這種技術時,你通常需要爲密度和最小長度設置閾值 - 你不想找到8像素段,它們恰好是直的,而是與它們所屬的線略有偏斜。
- 首先擴大圖像;從它的外觀來看,你可以擴張很多。當白色像素塊擴張時,沿着霍夫擬合線的點會有更高的密度。膨脹後,您還可以對圖像進行縮減採樣(例如從640x480到160x120)以減少必須處理的點數。 [您也可以應用高斯模糊來生成灰度圖像。這將原始邊緣點保持爲最強的峯值。然後,您可以在Hough累加器中使用加權強度值。]
- 作爲(2)擴展的替代方法,對於圖像中的每個(x,y)白色像素,也會爲其所有相鄰像素的累加器箱添加投票:(x-1,y-1),(x,y-1),...。 。 。 (X + 1,Y + 1)。這可能是對你的代碼更快的改變。
- 降低角分辨率。也就是說,如果你的Hough累加器使用角度增量爲1度,請嘗試角度增量2度。
- 將您的(R,theta)累加器圖 - 您可以將其視爲一種2D強度圖像 - 並在識別峯之前對其進行平滑處理。如果你傾向於得到兩條几乎重疊的線條,則可能只需要平滑處理,因爲沿着你認爲應該是一條線的點是分散在雙峯叢中的。
長話短說:根據gfkri的建議,通過降低有效分辨率來簡化任務。考慮擬合N像素厚的霍夫線段而不是1像素霍夫線。
相關問題
- 1. Hough變換與MATLAB
- 2. 用Hough變換在Matlab中進行圖像投影
- 3. 應用hough變換後在圖像上繪製圓圈?
- 4. 轉換二進制值位圖圖像
- 5. 行hough變換
- 6. AForge Hough變換
- 7. 二進制圖像
- 8. 轉換爲圖像的二進制WPF;
- 9. Python:二進制圖像轉換
- 10. 將圖像轉換爲二進制
- 11. 二進制圖像的標籤
- 12. Hough變換n OpenCvSharp
- 13. Hough變換問題
- 14. Hough變換公式
- 15. Javascript post jsonObject與圖像二進制
- 16. 如何將座標轉換爲圖像(x,y)從hough變換(rho,theta)?
- 17. 變換圖像爲二進制中迅速
- 18. 閱讀二進制圖像
- 19. VBScript - 圖像到二進制
- 20. 二進制圖像擴展?
- 21. 創建二進制圖像
- 22. 將圖像轉換爲二進制數組和二進制數組轉換爲java中的圖像
- 23. RGB圖像到二進制圖像
- 24. rgb圖像在java中轉換二進制圖像bufferedImage
- 25. 在Matlab中將二進制圖像轉換爲灰度圖像
- 26. 閾值灰度圖像不轉換二進制圖像
- 27. 將圖像(np.array)轉換爲二進制圖像
- 28. C++將二進制(P5)圖像轉換爲ascii(P2)圖像(.pgm)
- 29. 在OpenCV中將灰度圖像轉換爲二進制圖像
- 30. 將圖像轉換爲二進制圖像中的android
可能是你使用的門檻問題吧?那些未被識別的行具有較少的像素投票,因此您會希望Hough變換中的那些行的「投票」強度更小。你有沒有嘗試改變門檻? – Falimond
...或降低hough空間分辨率,因爲您的線條不完美。 – gfkri
感謝您的意見 –