Обнаружение линии в облаке 2D точек - PullRequest
2 голосов
/ 16 января 2020

Я занимаюсь разработкой более крупной системы навигации и позиционирования автомобилей с автоматическим управлением и столкнулся с проблемой. При разработке карты важной частью является поиск стен. Навигация осуществляется с использованием блока LiDAR.

Пример "изображения", которое видит датчик, выглядит следующим образом: enter image description here

И требуемый результат - это нечто как это: enter image description here

Я много смотрел на преобразование Хафа и алгоритм RANSA C, но преобразование Хафа, как я знаю, используется на изображениях, которые не являются оптимальными для моего случая RANSA C не подходит для поиска нескольких стен в разреженных данных.

Данные, использованные в этом конкретном c примере, можно найти по этой ссылке: https://drive.google.com/file/d/1EnSOr2FYjIdqG1RdFgTkgsoEhVcG7Tl_/view?usp=sharing Где два массива в файле представляют координаты x и y, где элементы соответствуют индексу.

Я работаю в python, но у меня нет проблем, чтобы написать алгоритм самостоятельно, если кто-нибудь знает подходящий. это не доступно в пакете или около того.

Заранее спасибо, Якоб

1 Ответ

0 голосов
/ 17 января 2020

Вы можете попробовать математическую морфологию, такую ​​как эрозия / дилатация https://docs.opencv.org/trunk/d9/d61/tutorial_py_morphological_ops.html

Я попробовал ваше изображение, и оно начинает смотреть на комнату:

source image eroded/dilated image threshold-ed

Вот пример реализации в python с использованием opencv:

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

...