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).
Bitte erläutern Sie, geben Sie Beispiele, zeigen Sie Bild, etc ... –
Möchten Sie das Gesicht manuell oder automatisch finden? –
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. –