Я пытаюсь найти надежный метод расчета угловых точек контейнера. Из идеи этой угловой точки является вычисление центральной точки контейнера для локализации робота, это означает, что вычисленная центральная точка будет местом назначения робота, чтобы выбрать контейнер. Для этого я ищу любые предложения по вычислению угловых точек или может быть, если есть возможность непосредственно вычислить точку центра. До этого момента для обработки 3D-данных используется библиотека PCL C/C++. Изображение ниже - снимок экрана контейнера.
заранее.Расчет центральной точки для локализации робота в 3D-данных
ответ
Я предполагаю, что колеса поддерживают тележку известным смещением от пола, и вы можете определить пол.Отфильтруйте все точки, которые находятся слишком близко к полу (это приведет к удалению колес и всего, кроме тележки, что поможет ограничить данные и упростить последующие шаги.
Если вы изолируете тележку, вы можете применить простую среднюю точку (центроид) , поочередно, если это неточно, вы можете попробовать найти bounding box изолированной тележки (min max в основных направлениях), а затем взять центр тяжести этого ограничивающего прямоугольника (это должно быть более точным, но все равно потребуется небольшое вертикальное смещение из-за верхних ручек).
Если вы не можете изолировать корзину или другие методы не работают, вы можете попробовать использовать PCL sample consensus именно SACMODEL_LINE. Это будет задействованная стратегия, но даст очень солидные результаты, основополагающие пройдите и найдите каждую строку и вычтите ее элементы из облака, чтобы найти следующую лучшую строку. После того, как у вас есть 4 первичные линии корзины, используйте их параметры, чтобы найти ваш центр тяжести. * это также было бы надежным против случайных предметов, находящихся в или на тележке, а также тележек разного размера (при условии, что они всегда имели линейные перпендикулярные стены)
Отличные предложения. Что вы говорите относительно (1) идентификации пола и (2) отфильтровываете точки, которые находятся слишком близко к полу, чтобы удалить колеса и сохранить только корзину, поэтому впоследствии я мог использовать ограничительную рамку (3). ? –
Это довольно четкие объяснения ... насколько реально реализовать его, слишком много объяснять. Это супер хорошо документировано с помощью учебников и веб-документации классов. Вот хорошее место для начала: http://pointclouds.org/documentation/tutorials/ Я предлагаю попробовать учебные пособия, как они есть, а затем модифицировать их в соответствии с вашими потребностями. –
На самом деле я изучал учебники PCL и использовал RANSAC для плоской установки и т. Д. Не могли бы вы упомянуть какой-нибудь конкретный пример, в котором возможно обнаружение и удаление плоскости, как-то было бы легче отфильтровать колесо после и найти прямоугольную призму ограничивающая коробка на тележке? –
Я сделал следующие вещи:
- Я бинаризуется изображение (черные пикселей = 0, зеленый пикселей = 1),
- инвертируется изображение (черные пиксели = 1, зеленый пикселей = 0),
- размыл изображение с ядром 3x3 N-раз и расширил его одним и тем же ядром М-раз.
Слева: N = 2, М = 1; Справа: N = 6, М = 6
После этого:
- Я вычислен контуры всех не -zero area и
- удалил контур, который окружал все изображение.
Это такие контуры, которые остались:
Я не знаю, как «типичный» входное изображение выглядит как в вашем случае. Поскольку у меня только есть доступ к одному образцу, я предпочел бы не спекулировать о «общем решении», которое вам подходит. Но решить этот частный случай, вы могли бы проанализировать каждый контур следующим образом:
- вычислить rotatated прямоугольника, который подходит лучше всего вокруг контура (вам нужно что-то похожее на minAreaRect from OpenCV)
- вычислительной области прямоугольника и контур интерьера
- Если разница между площадью контура и площадью поворотного ограничивающего прямоугольника мала, контур имеет приблизительно прямоугольную форму
- найти контур, который является прямоугольным и удовлетворяет некоторым другим условиям (например: типичная площадь контейнера). Предположим, что это принадлежит контейнеру и вычислить его центр.
Я не утверждаю, что это решение, которое будет хорошо работать в реальных сценариях. Это также не быстро. Вы должны просмотреть его как «эскиз», который показывает, как извлечь полезную информацию.
Картинка, которую я опубликовал выше, представляет собой скриншот данных pointcloud. Это означает буквально, что обработка не должна быть на этом изображении, но данные глубины. но спасибо, кажется, хорошо, если это 2D-изображение. не так ли? –
- 1. Вращение точки вокруг центральной точки
- 2. Поиск центральной точки города
- 3. Перемещение центральной точки UIImageViews
- 4. Масштабирование векторов из центральной точки?
- 5. Вращайте тела вокруг центральной точки
- 6. Вращение вида вокруг центральной точки
- 7. Резервирование без центральной контрольной точки?
- 8. Объект орбиты вокруг центральной точки
- 9. MapView - изменить координаты центральной точки
- 10. Перемещение координат от центральной точки
- 11. Изменение центральной точки увеличения/выхода
- 12. Вращение CGPoint вокруг центральной точки
- 13. Распределение фигур из центральной точки
- 14. pygame вращение вокруг центральной точки
- 15. Нахождение угла от центральной точки на окружности
- 16. Представление карты для локализации
- 17. Изменение центральной точки радиального градиента в CSS
- 18. Поворот содержимого вокруг центральной точки в html5
- 19. Поверните квадрат вокруг центральной точки в OpenGL
- 20. Расчет центральной близости с помощью Jung
- 21. Динамическое изменение центральной точки 3D в FlashCS4
- 22. Вращение вокруг центральной точки в Unity C#
- 23. Изменение центральной точки группы в JavaFX для RotateTransition
- 24. Tween Универсальный масштаб от центральной точки
- 25. Javascript - вычислить точки геокоординирования четырех углов вокруг центральной точки
- 26. Использование преобразования и масштабирования из центральной точки
- 27. iOS: Как повернуть UIImageView вокруг центральной точки?
- 28. Тригонометрия: 3D вращение вокруг центральной точки
- 29. Концентрические круги с использованием случайной центральной точки
- 30. Изменение центральной точки UIImageView на прокрутке UIScrollView
Вы пытаетесь найти центр этого прямоугольника? –
На самом деле я не думал о том, что поиск центра прямоугольника может также решить проблему. Это означает, что если мой абитуриент должен найти углы и вычислить центр, у которого в конце есть несколько шагов. Как вы упомянули, поиск центра может быть лучшим решением. Поиск центра и добавление смещения. вы предлагаете какие-либо возможности для его вычисления непосредственно в PCL? –
Есть ли у вас данные глубины? Я не вижу никаких внутренних поверхностей этого контейнера ... (я понимаю, что это 3D-данные, но может ли ваш датчик разрешить только переднюю поверхность тележки?) –