OpenCV: использование преобразования Hough Circle для обнаружения радужной оболочки

Я новичок в openCV, но я хочу создать программу распознавания радужной оболочки. Хотя система с веб-камерой может обнаруживать глаза, она не может обнаружить круглую радужную оболочку. Я использую трансформацию Hough Circle. Но если радужная оболочка на изображении недостаточно круглая, система не может обнаружить ее. Любое решение для этого?

Используемый алгоритм — Hough Circle Transformation.

IplImage *capturedImg = cvLoadImage("circle.jpg",1);
IplImage *grayscaleImg = cvCreateImage(cvGetSize(capturedImg), 8, 1);

cvCvtColor(capturedImg, grayscaleImg, CV_BGR2GRAY);

// Gaussian filter for less noise
cvSmooth(grayscaleImg, grayscaleImg, CV_GAUSSIAN,9, 9 );

//Detect the circles in the image
CvSeq* circles = cvHoughCircles(grayscaleImg,
storage,
CV_HOUGH_GRADIENT,
2,
grayscaleImg->height/4,
200,
100 );

for (i = 0; i < circles->total; i++)
{
float* p = (float*)cvGetSeqElem( circles, i );
cvCircle( capturedImg, cvPoint(cvRound(p[0]),cvRound(p[1])),
3, CV_RGB(0,255,0), -1, 8, 0 );
cvCircle( capturedImg, cvPoint(cvRound(p[0]),cvRound(p[1])),
cvRound(p[2]), CV_RGB(0,0,255), 3, 8, 0 );
}
// cvCircle( img,cvPoint( r->x, r->y ),67, CV_RGB(255,0,0), 3, 8, 0 );
cvNamedWindow( "circles", 1 );
cvShowImage( "circles", capturedImg );

7

Решение

Добавить звонок в cvCanny() между cvSmooth() а также cvHoughCircles(), Это выполнит алгоритм обнаружения края, который обеспечит лучшее входное изображение для cvHoughCircles() и, вероятно, улучшит ваши результаты.

Там много аналогичный вопросы по Stackoverflow, я предлагаю вам используйте окно поиска.

6

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]