matlab - 从图像中裁剪椭圆

标签 matlab image-processing computer-vision face-detection matlab-cvst

我想从图像中提取椭圆区域(图像中面部的一部分),最好是在 MATLAB 中:

enter image description here

例如,在这张图片中,我想提取红色边界内的区域。
谁能帮我解决这个问题?

最佳答案

裁剪很容易,你所要做的就是涂上合适的面具。诀窍是创建这样的掩码。

假设 A 是您的图像,试试这个:

%# 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));

裁剪后的图像将存储在 A_cropped 中。 调整中心坐标和半径值,直到获得所需的结果。

编辑:我扩展了 RGB 图像的解决方案(如果矩阵 A 是 3-D)。

关于matlab - 从图像中裁剪椭圆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11079781/

相关文章:

python - 在 python 中读取卫星图像文件时优化性能

python - 在保留颜色的同时将 3 channel 16 位图像转换为 8 位

opencv - cv2 霍夫线的霍夫空间

opencv - 如何从不同水平和垂直位置的校正图像重建 3D 点?

matlab - 验证属性是 MATLAB 中抽象类的子类

Matlab 可变精度

matlab - 如何在 matlab 中不使用循环的情况下将 2d 信号与 1D 内核进行卷积?

python - OpenCV 轮廓搜索和边界矩形创建算法

arrays - isnan 索引

matlab - 在 Matlab 中创建稀疏 block 对角矩阵