6

I (einen Teil eines Flächenabschnittes aus einem Bild) vorzugsweise in MATLAB einen elliptischen Bereich aus einem Bild extrahieren:Beschneiden eine Ellipse von einer Bild

enter image description here

Zum Beispiel in diesem Bild, Ich möchte die Region innerhalb der roten Grenze extrahieren.
Kann mir jemand dabei helfen?

+0

Bitte erläutern Sie, geben Sie Beispiele, zeigen Sie Bild, etc ... –

+0

Möchten Sie das Gesicht manuell oder automatisch finden? –

+0

Wie ist die Ellipse angegeben? Wird mit 'imellipse' eingefügt? Würdest du die Geometrie davon kennen (Ort + Haupt- und Nebenachse)? Sie können die 'createMask' Methode für das resultierende' imellipse' Objekt verwenden. –

Antwort

11

Zuschneiden ist einfach, Sie müssen nur eine geeignete Maske auftragen. Der Trick besteht darin, eine solche Maske zu erstellen.

A Angenommen, Ihr Bild, versuchen Sie dies:

%# Create an ellipse shaped mask 
c = fix(size(A)/2); %# Ellipse center point (y, x) 
r_sq = [76, 100] .^ 2; %# Ellipse radii squared (y-axis, x-axis) 
[X, Y] = meshgrid(1:size(A, 2), 1:size(A, 1)); 
ellipse_mask = (r_sq(2) * (X - c(2)) .^ 2 + ... 
    r_sq(1) * (Y - c(1)) .^ 2 <= prod(r_sq)); 

%# Apply the mask to the image 
A_cropped = bsxfun(@times, A, uint8(ellipse_mask)); 

Das beschnittene Bild wird in A_cropped gespeichert werden. Spielen Sie mit den Koordinaten des Mittelpunkts und den Werten der Radien, bis Sie das gewünschte Ergebnis erhalten.

EDIT: Ich erweiterte die Lösung für RGB-Bilder (wenn Matrix A ist 3-D).

+0

Ich habe deinen Code ausprobiert. Es gibt einen Fehler mit der letzten Zeile: A_cropped (ellipse_mask) = A; ??? In einer Zuweisung A (:) = B muss die Anzahl der Elemente in A und B gleich sein. – user671805

+0

Sie haben Recht. Ich habe es repariert. –

+0

Ihr Code funktioniert jetzt. Aber jetzt bekomme ich nur eine völlig undurchsichtige rote Ellipse mit einem schwarzen Hintergrund. – user671805

2

Dies ist die Methode, mit der ich Flächen in Ellipsenform zuschneide. Es macht den Hintergrund transparent.