[英]Line detection in 2D point cloud
我正在開發一個更大的系統,用於自動導引車的導航和定位,並偶然發現了一個問題。 在開發地圖時,重要的部分是找到牆壁。 導航是使用 LiDAR 裝置完成的。
我已經看了很多 Hough 變換和 RANSAC 算法,但是據我所知,Hough 變換用於圖像,這對我的情況不是最佳的,並且 RANSAC 不太適合在稀疏數據中找到多個牆。
在此特定示例中使用的數據可以在此鏈接中找到: https : //drive.google.com/file/d/1EnSOr2FYjIdqG1RdFgTkgsoEhVcG7Tl_/view?usp= sharing 文件中的兩個數組表示 x 和 y 坐標,其中元素按索引對應。
我在 python 中開發,但如果有人知道一個合適的一個包中沒有的算法,我自己編寫算法沒有問題。
提前致謝,雅各布
最初的問題可能有點晚了,但我相信更多的人會想要解決同樣的問題。
霍夫變換可以在點雲上很好地完成,但是我不知道現成的庫實現。
這是一個帶有完整解釋和源代碼的優秀示例:使用霍夫變換處理 LIDAR 數據
如果您了解霍夫變換的工作原理並查看代碼,您將看到它如何遍歷點並在特征空間中創建二維直方圖。 實現這樣的事情非常簡單。
您可以嘗試數學形態學,例如侵蝕/膨脹https://docs.opencv.org/trunk/d9/d61/tutorial_py_morphological_ops.html
我試過你的形象,它開始尋找一個房間:
下面是一個使用 opencv 在 python 中實現的例子:
import numpy as np
import scipy.stats
import cv2
inputImage = cv2.imread('input.jpg')
skernel = cv2.getStructuringElement(cv2.MORPH_RECT,(3,3))
cv2.imshow("test1",inputImage)
openImg =cv2.morphologyEx(inputImage, cv2.MORPH_OPEN, skernel, iterations =15)
cv2.imshow("test2",openImg)
img_gray = cv2.cvtColor(openImg, cv2.COLOR_BGR2GRAY)
ret,th3 = cv2.threshold(img_gray,200,255,cv2.THRESH_BINARY)
cv2.imshow("test3",th3)
此外,我認為您的問題中缺少關鍵字,因為您正在尋找的是點雲重建算法。 您也可以在這里查看https://hal.inria.fr/hal-01348404v2/document
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.