Frage

Ich schrieb den Code für Hough-Transformation und es funktioniert gut. Auch kann ich die Augenposition eines Gesichts beschneiden. Jetzt möchte ich mit der Anwendung der Hough-Transformation (cvHoughCircle), um die Iris des Erntebild zu erfassen. Jedoch, wenn ich dieses Verfahren versuchen, das System ist nicht in der Lage jeden Kreis auf dem Bild zu finden.

Vielleicht ist der Grund ist, gibt es Geräusche im Bild, aber ich glaube nicht, es ist der Grund. Also, wie kann ich erkennen, die Iris? Ich habe den Code von binärer Schwellwertbildung vielleicht ich es verwenden kann, aber Ich weiß nicht, wie zu tun?

Wenn jemand hilft mir wirklich zu schätzen. thx:)

War es hilfreich?

Lösung

Sie sagen, dass mit binären Schwelle Sie eine Iris erhalten, die reines Weiß ist: Das ist nicht das, was Sie haben wollen. Verwenden Sie so etwas wie cvCanny, um nur den Rand der Iris zu erhalten.

Andere Tipps

Erfassen Sie die Kanten richtig?
Können Sie das binäre Bild anzuzeigen und die Iris deutlich sehen?

Kreis Hough-Transformation normalerweise einen Radius Fenster hat (sonst Sie einen 3D-Lösung Raum suchen) werden Sie das Fenster auf einen vernünftigen Wert einstellen?

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();
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top