Как распознать шар на изображении, а затем смоделировать его в 3D (HawkEye System) - PullRequest
2 голосов
/ 20 апреля 2011


Мы пытаемся разработать систему HawkEye, которая используется в крикете для нашего проекта в колледже.Процесс, используемый в системе HawkEye, выглядит следующим образом: необходимы

  1. изображения мяча в разные моменты времени (в разных точках) от руки боулера до игрока с битой (во время всего полета мяча)
  2. определение (x, y) координат шара в разные моменты времени в течение всего полета мяча
  3. преобразование (x, y) координат в соответствующие трехмерные координаты (x,y, z)
  4. моделирование траектории мяча в течение всего полета мяча вместе с окружающей средой мяча, которая включает в себя поле, поле, калитки, стадион
  5. , расширяющий траекториюмяч, чтобы увидеть, ударил ли бы шар по калиткам или нет

Пока это то, что мы планировали выполнить в этом проекте:

мы будем снимать видеоигрок с битой из положения ноги судьи, а затем воспроизвести это видео в замедленном режиме в VLC Player и одновременно сделать несколько снимков экранаПолет мяча, я думаю, это позаботится о шаге 1.

, но сейчас мы застряли на шаге 2, проблема, с которой мы сейчас сталкиваемся, заключается в том, как распознать и найти (х, у) координаты шара в конкретном случае (с изображением шара, взятой из стороны ноги), если мы сможем найти (х, у) шара и, если расстояние от камеры от некоторой точки отсчета известнозатем мы можем найти глубину изображения, то есть координату z, следовательно, мы можем найти соответствующие (x, y, z) координаты, а затем мы можем моделировать его в 3D, используя OpenGL

, который мы пытаемсядля его реализации в C ++

любая помощь приветствуется:)

Быстрое редактирование:
Я узнал, что в реальной системе HawkEye System 6 камеры настраиваются по окружности поля для крикета,все камеры разделены под углом 60 градусов, HawkEye может отлично работать, используя только 4 камеры, но для большей точности используются 2 дополнительные камеры.так как у нас не так много камер, я думаю, что мы будем использовать 3 камеры, расположенные по окружности поля, разделенного на 120 градусов, и чтобы уменьшить сложность, мы выберем небольшое поле, которое может быть одним с радиусом = 5 м, номы не уверены, где разместить камеры, чтобы получить более точные результаты, возможно, это могут быть позиции: одна на ноге, одна на стороне и третья прямо впереди, но я все еще не уверен, какие позициивыберите

этот подход называется Multi Camera Calibration, и для распознавания мяча я думаю, что мы должны выбрать OpenCV вместо MATLAB из-за более быстрой обработки изображений, выполняемой OpenCV

Что вы все должны сказать?

Ответы [ 4 ]

3 голосов
/ 20 апреля 2011

Что касается шага 2, извлечения местоположения мяча, существует множество возможных подходов и источников литературы. Я настоятельно рекомендую ознакомиться с работой по футболу роботов (Robocup), в которой содержится много примеров подобных проблем.

В идеальном мире (скажем, черный диск на белом фоне), отправной точкой, вероятно, будет использование чего-то вроде Преобразования Хафа , или контурной трассировки, и извлечение позиции с использованием статистических моментов результирующий контур.

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

Возможно, более надежный способ сформулировать эту проблему, приводящий к следующим разделам, заключается в том, что если у вас есть представление о том, где был мяч, ранее, то вы можете сделать разумную оценку того, где должен находиться мяч после некоторого небольшого количества времени. Это поле оптимальной оценки, и Kalman Filters . Хорошим вводным текстом, хотя и из совершенно другого проблемного пространства, является Вероятностная робототехника , автор Thrun et al.

2 голосов
/ 25 апреля 2011

Придайте мячу необычный цвет, который вы вряд ли найдете в другом месте изображения, а затем найдите пиксели этого цвета на каждом изображении.Это самый простой вариант.Учитывая скорость, с которой мяч может двигаться в крикет, и вы используете только 30 кадров в секунду, большинство других вариантов гораздо сложнее.Просто найти белый шар довольно сложно (как вы, вероятно, нашли), поэтому лучше всего было бы использовать информацию о движении шара в предыдущих кадрах, чтобы помочь найти его в новых кадрах.Тем не менее, низкая частота кадров и высокая скорость мяча означают, что ваш мяч будет перемещаться между кадрами немного.При скорости 142 км / ч для высокоскоростной чаши вы наблюдаете более одного метра движения между кадрами, что приводит к довольно большому промежутку между изображениями шара между последующими кадрами, что затрудняет использование временной информации.

В качестве альтернативы странному цвету вы можете также нарисовать свой шар слоем, который является высоко отражающим в ИК-области, и использовать ИК-свет (который люди не видят) и чувствительную к ИК-камере камеру (вы могли быснимите ИК-фильтр с камеры, которая у вас есть для этого).

0 голосов
/ 20 апреля 2011

Одной камеры достаточно, если у вас есть матрица проекции / просмотра для перемещения из пространства изображений в мировое пространство (существует множество документов для калибровки камеры / преобразования координат). Это даст вам вектор, который указывает от камеры через мяч. Затем размер шара можно использовать для определения расстояния до камеры.

Угадай, самый простой способ найти шар - это ввести порог, который «отсекает» шар от остальной части изображения. Или используйте обнаружение движения, чтобы извлечь мяч и / или объединить оба подхода.

0 голосов
/ 20 апреля 2011

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

...