Recortar es fácil, todo lo que tiene que hacer es aplicar una máscara adecuada. El truco es crear esa máscara.
Suponiendo A
es su imagen, intente esto:
%# 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));
La imagen recortada se almacena en A_cropped
. Juega con las coordenadas del centro y los valores de los radios hasta obtener el resultado deseado.
EDIT: amplié la solución para imágenes RGB (si la matriz A
es 3-D).
favor elaborar, dar ejemplos, demostración de la imagen, etc ... –
¿Quieres encontrar la cara de forma manual o automática? –
¿Cómo se administra la elipse? ¿Se inserta usando 'imellipse'? ¿Sabrías la geometría del mismo (ubicación + eje mayor y eje menor)? Podría usar el método 'createMask' en el objeto' imellipse' resultante. –