7

私はopenCVの初心者ですが、虹彩認識プログラムを作成したいと思っています。ウェブカメラを備えたシステムは目を検出できますが、円形の虹彩を検出することはできません。私はハフサークル変換を使用しています。しかし、画像内の虹彩が十分に円形でない場合、システムはそれを検出できません。それに対する解決策はありますか?

使用されるアルゴリズムはハフサークル変換です。

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 );
4

1 に答える 1

6

cvCanny()との間cvSmooth()に呼び出しを追加しますcvHoughCircles()。これにより、エッジ検出アルゴリズムが実行され、より良い入力画像が提供されcvHoughCircles()、おそらく結果が改善されます。

Stackoverflowにも同様の質問がたくさんあります。検索ボックスを使用することをお勧めします。

于 2012-09-25T13:53:36.147 に答える