Cắt dễ dàng, tất cả những gì bạn phải làm là áp dụng mặt nạ thích hợp. Bí quyết là tạo ra một mặt nạ như vậy.
Giả sử A
là hình ảnh của bạn, hãy thử này:
%# 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));
Ảnh bị cắt sẽ được lưu trữ trong A_cropped
. Chơi với các tọa độ của trung tâm và các giá trị của bán kính cho đến khi bạn nhận được kết quả mong muốn.
EDIT: Tôi đã mở rộng giải pháp cho hình ảnh RGB (nếu ma trận A
là 3-D).
Nguồn
2012-06-18 11:18:21
Vui lòng xây dựng, đưa ra ví dụ, hiển thị hình ảnh, v.v ... –
Bạn có muốn tìm khuôn mặt thủ công hoặc tự động không? –
Hình elip được đưa ra như thế nào? Được chèn vào bằng cách sử dụng 'imellipse'? Bạn có biết hình học của nó (vị trí + trục chính và trục phụ) không? Bạn có thể sử dụng phương thức 'createMask' trên đối tượng' imellipse' kết quả. –