2016-04-26 9 views
1

OpenCV identifizieren Mit dem Irisbereich + Pupillenbereich (Außengrauzone + Innen schwarzer Kreis) zu identifizieren, wie in this imageKönnen den Irisbereich in menschlichem Auge Bildern

folgenden Ansätze Versuchten gesehen, aber nicht in der Lage das extrahieren Irisregion 100%.

Ansatz 1 Iris Bereich Detektion von Farbcodes des Pixels unter Verwendung von Detektion in dem Bild

import cv2 
from PIL import Image 
#import cv2.cv as cv 

img = cv2.imread('i1.jpg') 
im = Image.open('i1.jpg') 
pix = im.load() 
#cv2.imshow('detected Edge',img) 

height, width = img.shape[:2] 

print height,width 
height=height-1 
width=width-1 
count=0 
print pix[width,height] 
print pix[0,0] 
for eh in range(height): 
    for ew in range(width): 
     r,g,b=pix[ew,eh] 
     if r<=30 and g<=30 and b<=30: 
      print eh,ew 
      cv2.circle(img,(ew,eh),1,(0,255,0),1) 
print height,width 
cv2.imshow('detected Edge',img) 
cv2.waitKey(0) 
cv2.destroyAllWindows() 

Click here to view output des obigen Codes.

Ansatz 2 Iris-Bereich-Erfassungsverfahren unter Verwendung von Hough Kreise

import cv2 
#import cv2.cv as cv 
img1 = cv2.imread('i.jpg') 
img = cv2.imread('i.jpg',0) 
ret, thresh = cv2.threshold(img, 50, 255, cv2.THRESH_BINARY) 

edges = cv2.Canny(thresh, 100, 200) 
#cv2.imshow('detected ',edges) 


cimg=cv2.cvtColor(img, cv2.COLOR_GRAY2BGR) 

circles = cv2.HoughCircles(edges, cv2.HOUGH_GRADIENT, 1, 10000, param1 = 50, param2 = 30, minRadius = 0, maxRadius = 0) 
#circles = cv2.HoughCircles(img,cv2.HOUGH_GRADIENT,1,20, 
#       param1=50,param2=30,minRadius=0,maxRadius=0) 
print circles 
for i in circles[0,:]: 
    i[2]=i[2]+4 
    cv2.circle(img1,(i[0],i[1]),i[2],(0,255,0),1) 

#Code to close Window 
cv2.imshow('detected Edge',img1) 
cv2.waitKey(0) 
cv2.destroyAllWindows() 
for i in range (1,5): 
    cv2.waitKey(1) 

Click here to view the output des Codes.

Bitte führen Sie uns, wie wir automatisch den kreisförmigen schwarzen Bereich in Bildern des menschlichen Auges extrahieren können.

+1

, die nicht die Hornhaut extrahieren verwenden können, ist. das ist der Schüler ... werden solche Dinge nicht mehr in Schulen unterrichtet? :(und was ist los mit dem hough output image? was willst du erreichen, wenn dieses ergebnis nicht gut genug ist und was gut genug ist? – Piglet

+0

Um genau zu sein wollen wir die iris region (äußerer kreis grauer bereich) und die Pupillenbereich (innerer schwarzer Kreis), wie in diesem Bild zu sehen ist. Hough Ausgabebilder sind nicht konsistent. In einigen Augen Bilder, die nicht genau die Iris-Region identifizieren – Vikram

+0

Sie können keine guten Ergebnisse erwarten, wenn Sie keinen Min- und Max-Radius für Hough Transformation einstellen ... – Piglet

Antwort

1

Ich habe die folgende Referenz verwendet. http://www.cvip.uofl.edu/wwwcvip/education/ECE523/Iris%20Biometrics.pdf

Um Irisbereich in menschliche Auge Bilder zu identifizieren, können Sie die folgenden Schritte verwenden: -

1) Identifizierung der Pupillenbereich: - Als Pupillenbereich Intensität würde sehr nahe bei Null sein, können Sie Verwenden Sie den Binärschwellenwert, um die Pupillenregion zu finden. Sie können die Beschriftung für verbundene Komponenten verwenden, um Regionen mit gleicher Intensität zu erhalten, und dann den Bereich mit Exzentrizität nahe Null auswählen, um als Pupillenkreis identifiziert zu werden. Der Schwerpunkt dieser verbundenen Region wäre der Mittelpunkt des Kreises der Radius durch die Abmessungen der verbundenen Komponenten Box.

2) Identifizierung der Region Iris: - Nachdem Sie nun Ihren Pupillenbereich haben, können Sie Hough Kreis-Methode verwenden, Iris Canny-Algorithmus zu erhalten region.Use die Mitte der Iris Kreis zu bekommen Rand map.Take in einer Box um Pupillenmitte und Radius der Iris mehr als Pupillenradius und weniger als ein fester Betrag.Machen Sie mehrere Kreise mit variierendem Zentrum und variierendem Radius wie oben angegeben und zählen Sie die Anzahl der Kantenkarte Punkte auf solchen Kreisen.Der Kreis mit die maximale Anzahl der Kantenpunkte, die darauf liegen, wäre ein Iriskreis.

Hinweis: - Nach meiner Erfahrung hatte ich herausgefunden, dass die Iriskreisel sehr kostspielig war, da man mehrere Kreise mit variierendem Zentrum und Radius erstellen musste. Eine Lösung bestand darin, den Kreismittelpunkt als Pupillenmitte und nur variierenden Radius zu fixieren als Iris-Kreis wäre sehr nah an Pupillenmitte. Es ergab jedoch ein falsches Ergebnis, da die Wimperkantenabbildung oben und unten falsche Kantenkartenpunkte ergab. Um das zu lösen, habe ich einen Jugaad gemacht.Ich hielt die Irismitte als Pupillenmitte fest und fand den Irisradius nur für den linken Teil des Bildes von der Pupillenmitte. In ähnlicher Weise fand ich den Irisradius für die rechte Seite des Bildes von der Pupillenmitte. Ich benutzte den Durchschnitt von Radius und Zentrum als Pupillenmitte, um eine Irisgrenze zu erhalten. Es hat für mich funktioniert.

+0

Wir versuchten Durchschnitt der Iris Mitte nach links sid e Grenze und irist Mitte zur rechten Seitengrenze. Aber die Ausgaben sind inkonsistent, wäre toll, wenn Sie den Quellcode für das obige Problem teilen können. – Vikram

+0

Der Quellcode ist momentan nicht verfügbar, da ich auf Reisen bin. Also, lassen Sie uns Ihr Problem identifizieren. Werden Pupillenmitte und Radius richtig eingestellt? Wenn ja, versuchen Sie den Radius der Iris und den Kreis mit variierendem Radius und variierender Mitte. Sie sollten die richtige Lösung erhalten. Wenn nicht, dann gibt es ein Problem mit Ihrem Code. Versuchen Sie Bild-Rauschunterdrückung mit Median-Filtern. Beginne von Anfang an und lass mich wissen, wo du feststeckst. Holen Sie sich Jugaad am Ende, nachdem Sie angefangen haben, korrekte Ergebnisse zu bekommen. – dpurbey

+1

Ich habe die folgende Referenz verwendet. Probieren Sie es http://www.cvip.uofl.edu/wwwcvip/education/ECE523/Iris%20Biometrics.pdf – dpurbey

0

Um falsche Ergebnisse zu vermeiden und die Leistung zu verbessern, sollten Sie immer die richtigen Grenzen für HoughCircles verwenden. Iris- und Pupillenradien liegen in einem bestimmten Bereich.

Ich würde nach einem schwarzen Fleck von angemessener Größe im Bild suchen, um die Pupille zu lokalisieren. Sobald Sie wissen, wo der Schüler ist, wissen Sie, wo Sie nach der Iris suchen sollen. Extrahieren Sie eine Region von Interesse, die die Iris enthält (verwenden Sie die Pupillengröße, um die Irisgröße zu schätzen), aber nicht viel mehr. Führen Sie dann zwei Hough-Transformationen durch, um Iris und Pupillenposition und -radius zu erhalten. Danach können Sie die Genauigkeit weiter verbessern, indem Sie einen Kreis/eine Ellipse mit dem Wissen aus Ihrer Hough-Transformation anpassen, falls erforderlich.

+0

Versucht, aber konnte nicht das gewünschte Ergebnis erhalten. Wäre toll, wenn Sie zeigen können zu einigen Beispielcode – Vikram

+0

was war Ihr Ergebnis? Es gibt unzählige Houghcircles Beispiele online.verstehen Sie bitte, wenn ich nicht ein weiteres Duplikat hinzufügen. Welche Radien haben Sie verwendet? – Piglet

1

Mit Ansatz 2 können Sie in der Mitte der Pupille beginnen und dann in derselben Reihe (links oder rechts von der Pupillenmitte) nach außen wandern, bis Sie die Sklera des Auges treffen. Verwenden Sie dies als Radius für den Kreis, der die Iris enthält.

radius_iris = abs(first_column_of_sclera - column_of_pupil_center) 
#this is the yellow line in the attatched image 

die Sclera zu finden: einen kleinen Pixelbereich wie ein 3x3-Block nehmen (oder ähnliches, das ist die grüne Box im Bild) und

  1. Die Varianz des r für zwei Kriterien überprüfen , g, b Kanäle ist klein. Weiß (oder Graustufen) haben R = G = B, dh Weiß hätte eine geringe Varianz
  2. Sie müssen auch überprüfen, ob der rgb-Wert über einem bestimmten Schwellenwert liegt. Jemand mit grauen oder schwarzen Augen treffen Kriterien 1, aber es sei denn, die Pixel sehr leicht sind (in der Nähe von Weiß) haben wir nicht die Sklera

Eine Irismaske durch die Schaffung eines Kreises zentriert an der Pupille mit radius_iris erreicht, wenn Sie möchten, können Sie auch den Schüler Maske nur die Iris

enter image description here

+0

Versucht dieser Ansatz, Bilder können hier gesehen werden https: // Laufwerk. google.com/file/d/0Bxed_8T6OPe4cWNlVWR6VU1KYUk/view https://drive.google.com/file/d/0Bxed_8T6OPe4Z2Y2N2w2NUxIS1U/view Die Schwierigkeit besteht darin, den genauen Mittelpunkt der Irisregion zu identifizieren (der auch der Mittelpunkt der Pupille sein sollte) Bereich). Wie erkenne ich den Mittelpunkt der Irisregion? – Vikram

+0

@Vikram Das Zentrum der Iris wird aus 'cv2.houghcircle' im Code erhalten. Der Mittelpunkt der Iris ist' (i [0], i [1]) 'mit Radius' i [2] 'Dieses Ergebnis wird erhalten in ** Ansatz 2 ** Wenn die Ergebnisse von Houghcircle nicht einheitlich die Iris finden, dann addiere ein Minimum und ein Maximum, wie andere vorgeschlagen haben. Wenn Sie die von Ihnen geposteten Bilder betrachten, können Sie 'maxRadius = 75' verwenden. – andrew

+0

Ihre Lösung hat uns teilweise bei der Lösung des Problems geholfen. Vielen Dank. – Vikram

Verwandte Themen