2011-01-10 2 views
8

Ich muss einen Kreis in MATLAB zuschneiden.MATLAB: Wie erstelle ich einen Kreis aus einem Bild

Ich muss Iris Segmentierung durchführen, und ich habe den Mittelpunkt und den Radius der Iris identifiziert, und ich muss es aus dem Bild schneiden.

Ich habe einen Vektor ci, dass ci (1) ist X-Koordinate ci (2) ist Y-Koordinate und ci (3) ist der Radius des Kreises.

Antwort

10

Eine Möglichkeit besteht darin, eine Binärmaske mit Einsen innerhalb des Kreises und Nullen außerhalb zu erstellen. Sie können dieses Array dann verwenden, um entweder alles außerhalb des Kreises mit NaNs zu maskieren oder um die Pixelwerte des Bildes innerhalb der Maske zu lesen.

Um einen Kreis Maske, eine einfache Möglichkeit, Arrays zu erstellen zu erstellen, ist auf der Iris und Schwellen den Abstand, wie diese zentrierte Koordinate:

[xx,yy] = ndgrid((1:imageSize(1))-ci(1),(1:imageSize(2))-ci(2)); 
mask = (xx.^2 + yy.^2)<ci(3)^2; 
+0

Es geht meine Antwort ... =) Sehr schön. +1. Um das Bild zu segmentieren, multiplizieren Sie es einfach mit der Maske. Lass es außen Nullen geben. – Marnix

+0

@Marnix: Entschuldigung :). Wie auch immer, ich schlage vor, NaNs wie 'image (~ mask) = NaN;' zu setzen, damit die Autoscale in 'imshow (image, [])' nicht von allen Nullen im Bild verworfen wird. – Jonas

+0

Ich habe diesen Fehler: ??? Nicht definierte Funktion oder Methode 'sqrt' für Eingabeargumente vom Typ 'logisch'. in dieser Zeile Maske = sqrt ((xx.^2 + yy.^2)