Как я могу обнаружить эллипсы в OpenCV/JavaCV?

В настоящее время я работаю над программой для определения координат бильярдных шаров на изображении бильярдного стола, взятого из произвольной точки.

Сначала я рассчитал углы стола и исказил перспективу изображения, чтобы получить вид с высоты птичьего полета. К сожалению, из-за этого сферические шары кажутся слегка эллиптическими, как показано ниже.

введите здесь описание изображения

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

введите здесь описание изображения

Есть ли лучший метод обнаружения шаров на этом изображении? Технически я использую JavaCV, но решения OpenCV должны подойти. Большое спасибо за чтение.


person Matthew    schedule 02.01.2013    source источник


Ответы (1)


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

person Nima    schedule 02.01.2013
comment
Спасибо! Я дам ему попробовать :)) - person Matthew; 05.01.2013