6

私はハフ変換のコードを書きましたが、それはうまく機能します。また、顔の目の位置をトリミングすることもできます。ここで、ハフ変換(cvHoughCircle)を適用して、作物画像の虹彩を検出したいと思います。しかし、この手順を試してみると、システムは画像上に円を見つけることができません。

たぶん、その理由は、画像にノイズがあるからですが、それが理由ではないと思います。では、どうすれば虹彩を検出できますか?私はバイナリしきい値のコードを持っていますが、それを使用できるかもしれませんが、方法がわかりませんか?

誰かが助けてくれたら本当に感謝しています。どうも :)

4

3 に答える 3

1

バイナリしきい値を使用すると、真っ白なアイリスが得られるとあなたは言います。それはあなたが望んでいるものではありません。虹彩の端だけを取得するには、cvCannyのようなものを使用します。

于 2010-05-23T11:58:45.030 に答える
0

エッジを正しく検出していますか?
バイナリイメージを表示して、虹彩をはっきりと見ることができますか?

円形ハフ変換には通常、半径ウィンドウがあります(そうでない場合は、3Dソリューションスペースを検索しています)。ウィンドウを適切な値に設定していますか?

于 2010-05-21T20:18:54.213 に答える
-2
void houghcircle()
{
    //cvSmooth( graybin,graybin, CV_GAUSSIAN, 5,5 );
    CvMemStorage* storage = cvCreateMemStorage(0);

    // smooth it, otherwise a lot of false circles may be detected
    CvSeq* circles = cvHoughCircles( edge, storage, CV_HOUGH_GRADIENT, 5, edge->height/4,1,1,2,50, 70 );
    int i;
    for( i = 0; i < circles->total; i++ )
    {
        float* p = (float*)cvGetSeqElem( circles, i);
        cvCircle( img, cvPoint(cvRound(p[0]),cvRound(p[1])), 2, CV_RGB(0,255,0), -1, 2, 0 );
        cvCircle( img, cvPoint(cvRound(p[0]),cvRound(p[1])), cvRound(p[2]), CV_RGB(255,0,0), 1, 2, 0 );
        cvNamedWindow( "circles", 1 );
        cvShowImage( "circles", img );
        cvWaitKey();
    }
}
于 2010-08-03T10:30:12.857 に答える