Обнаружение OpenCV Apriltag обнаруживает только несколько маркеровPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Обнаружение OpenCV Apriltag обнаруживает только несколько маркеров

Сообщение Anonymous »

Я использую модуль OpenCV Aruco на Python для обнаружения моей калибровочной платы AprilTag. Проблема в том, что обнаруживается лишь очень небольшое количество маркеров, несмотря на довольно хорошее входное изображение. Из всего, что я пробовал, кажется, что реализация AprilTag очень чувствительна и требует для работы почти идеального изображения. Если это действительно так, детектор AprilTag OpenCV будет практически непригоден для использования.
Я использую:
  • Windows
  • Python 3.10.5
  • opencv-contrib-python 4.7.0.72
Прежде всего, минимальный пример кода (согласно документации модуля OpenCV Aruco):

Код: Выделить всё

import cv2

img = cv2.imread("april_board_drawing.png", cv2.IMREAD_COLOR)

aruco_dict = cv2.aruco.getPredefinedDictionary(cv2.aruco.DICT_APRILTAG_36h11)
arucoParams = cv2.aruco.DetectorParameters()
arucoParams.markerBorderBits = 2

(corners, ids, rejected) = cv2.aruco.detectMarkers(img, aruco_dict, parameters=arucoParams)

cv2.aruco.drawDetectedMarkers(img, corners, ids)

cv2.imshow('img', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
Я начал с «идеального» изображения, чтобы проверить, правильно ли распознаются теги и нет ли несоответствия между моей калибровочной платой и словарем AprilTag. Это сработало, все маркеры были обнаружены.
ideal image.png
Затем я приступил к записи с камеры. И тут возникла проблема. Было обнаружено лишь очень небольшое количество маркеров (15/49). Для этого я выбрал одно из лучших изображений, которые я сделал. Не все маркеры идеальны, есть блики, но многие имеют неплохую контрастность и до сих пор не распознаются. Я поигрался с параметрами обнаружения, но безуспешно.
real image.png
Может быть, я подумал, что искажение слишком сильное. Поэтому я исправил изображение, тем самым убрав искажения, и попробовал еще раз. Это дало мне несколько дополнительных обнаружений (20/49), но многие из них до сих пор не обнаружены.
реальное изображение исправлено.png
Затем у меня было посмотрите на отклоненные маркеры. Кажется, они отвергнуты правильно. Никаких проблем. Хотя странно, что несколько маркеров почти верны. Не уверен, что там происходит. Я указал правильный размер границы.
rejections.png
Другие вещи, которые я пробовал:
  • изменение размера, обрезка и переворачивание входного изображения
  • ввод оттенков серого и цвета
  • настройка всех aruco.DetectorParameters
Я не хочу поэкспериментировать с адаптивным повышением контрастности, так как я ожидаю, что алгоритм будет работать с таким уровнем качества изображения. Не слишком ли высоки мои ожидания?
Геометрия калибровочной доски не кажется проблемой, поскольку на идеальном чертеже маркеры распознаются правильно, не так ли? Я предпочитаю использовать этот тип доски из-за ее высокой плотности маркеров и возможности субпиксельной обработки углов.
Есть идеи, что здесь не так? Мы очень ценим любую помощь!
Вот все изображения, которые я использовал:
april_board_drawing.png
april_board_real.png
april_board_real_rectified.png

Подробнее здесь: https://stackoverflow.com/questions/758 ... ew-markers
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»