如何从具有给定角点的图像中裁剪面部分。 MATLAB

时间:2015-05-11 13:37:17

标签: matlab image-processing

我想从图像中裁剪脸部,但脸部图像不是直线/垂直对齐的。我有四个像素点来裁剪它.. 问题是, 如果我将首先变换图像,则此后不能使用像素点来裁剪其中的面部部分。 或者在其他情况下,我没有精确的边界框来直接使用imcrop裁剪图像,因为面部区域有些向左或向右倾斜。 四个像素点位于要裁剪的面部的前额,下巴和耳朵处。

1 个答案:

答案 0 :(得分:2)

你应该看看poly2mask。此函数根据给定的x和y坐标生成遮罩图像:

BW = poly2mask(x,y,m,n);

其中xy是您的坐标,生成的BW图片是m n。然后,您可以使用此BW图像通过执行

来屏蔽原始图像I
I(~BW) = 0;

如果你真的想裁剪,那么你可以得到边界框(通过regionprops函数或下面的代码):

x1 =  round(min(x));
y1 =  round(min(y));
x2 =  round(max(x));
y2 =  round(max(y));

然后在使用BW作为遮罩后裁剪图像。

I2 = I(x1:x2,y1:y2);

希望有所帮助。