Как устранить препятствия на полосе движения для автономного транспортного средства? - PullRequest
1 голос
/ 01 мая 2019

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

(Предположим, что в середине нет белой линии, все, что я вижу, если асфальт)

enter image description here

Процесс выполняется в режиме реального времени (на Raspberry Pi), и кадры снимаются с помощью камеры.

Для этой проблемы я предложил конвейер следующим образом (OpenCV 4.0 с C ++):

  • Denoise -> BGR2HSV -> HSV Filter -> Обнаружение Canny Edge -> Crop to ROI -> Hough Line Detection -> Технологические линии

Этот трубопровод четко показывает мне, как должна двигаться машина, чтобы оставаться в середине полосы с односторонним движением. Я могу фильтровать асфальтовую секцию с помощью HSV. Проблема в том, что на полосе есть препятствия. Там могут быть коробки, размещенные на стороне или в середине переулка. В этом случае фильтр HSV создает большой черный ящик на полосе движения. Несмотря на то, что обнаружение линий преобразует края поля в ложные линии дорожек. В конечном итоге это приводит к неправильному прогнозированию рулевого управления. На самом деле, я разработал алгоритм для решения этой проблемы, наблюдая наклоны неровных линий, однако он не всегда стабилен.

(красная коробка на боковой полосе движения)

enter image description here

Моя точка зрения: не могли бы вы предложить какие-либо улучшения в этом процессе, чтобы устранить возможные препятствия при фильтрации изображений? Препятствия на полосе движения приводят к появлению фальшивых линий и влияют на выбор руля. Я думал, что улучшение заключается в том, что обнаружение индексов максимального количества белых пикселей слева и справа от изображения (в области интереса), а затем установка каждого пикселя между белыми. Это сметает препятствия, которые находятся в середине дороги (транспортное средство может попасть в препятствие), но в любом случае оставляет их в стороне от полосы движения. Но если дорога изгибается, это не будет практично, потому что улучшение приведет к потере данных об изгибе на изображении.

(источник изображения: https://www.masterbuilder.co.in/wp-content/uploads/2018/03/Rs-46000-cr-initiative-taken-for-new-express-highways-elevated-roads-Govt.png)

EDIT:

Когда я использую ConvexHull , как в документации OpenCV , я получаю следующий неожиданный результат.

enter image description here

1 Ответ

0 голосов
/ 01 мая 2019

Когда вы применили HSV-фильтр, вы можете использовать findContours, за которым следует convxHull . Это устраняет «пробелы» в обнаруженном контуре.

Пример:
enter image description here

Код:

import cv2
import numpy as np
# load image in grayscale
img = cv2.imread('hull.png',0)
# load image in color
img_color = cv2.imread('hull.png')
# find contours
contours, hier = cv2.findContours(img,cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# get and draw convexhull
for cnt in contours:
    hull = cv2.convexHull(cnt)
    cv2.drawContours(img_color,[hull],0,(0,0,255),3)
# show images
cv2.imshow('Image', img)
cv2.imshow('Result', img_color)
cv2.waitKey(0)
cv2.destroyAllWindows()

Для более реалистичного примера, проверьте этот ответ . Описанный процесс применяется там: enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...