2012-06-11 3 views
10

Я хотел бы обнаружить эллипсы с OpenCV для Android, используя в качестве отправной точки Tutorial 2-Basic, входящий в комплект OpenCV 2.4.1. Обратите внимание, что мой эллипс будет идеальным фотошопом.Обнаружение эллипса с OpenCV

Из того, что я понимаю, использование «HoughCircles» найдет только идеальные (или так) круги, тем самым выйдя из эллипсов.

Любая помощь будет высоко ценится как я в общей сложности новичок в OpenCV

Это то, что я пытался до сих пор

case Sample2NativeCamera.VIEW_MODE_CANNY: (ignore the Canny mode...) 

     capture.retrieve(mGray, Highgui.CV_CAP_ANDROID_GREY_FRAME); 
     Imgproc.HoughCircles(mGray, mCircles, Imgproc.CV_HOUGH_GRADIENT, 1, 20); 
     Log.d("Ellipse Points", " X " + mCircles.get(1,1)[0] + mCircles.get(1, 1)[1]); 

     break; 

Если вы считаете, больше информация может быть полезной, пожалуйста, сообщите я знаю.

+0

Правильно ли этот код обнаружил круги? – rmtheis

+0

С некоторой настройкой, это было – zeroxgames

ответ

5

Функции, используемые в HoughCircles, играют основополагающую роль. HoughCircles обнаружит не только совершенные, но и почти идеальные круги (эллипсы). Я предлагаю вам проверить этот пример:

И this answer имеет приличную коллекцию ссылок.

3

Если у вас уже есть представление о размерах эллипсов, что вы ищете, попробуйте выполнить следующие шаги:

  • Найти Осторожные края в изображении
  • Использование скользящего окна, то размер которого представляет собой максимальную длину основной оси эллипсов, которую вы ищете.
  • Внутри окна собирайте все пиксели края, выбирайте 6 пикселей в случайном порядке и используйте linear least squares, чтобы соответствовать эллипсу в general form.
  • Повторите вышеуказанный шаг в процедуре RANSAC.
  • Если есть достаточное количество линеек, у вас есть эллипс.