2013-02-25 63 views
1

我们正在处理我们主项目中的一个问题,我们希望您能帮助我们解决问题。我们的项目是便携式人脸识别系统。我们需要从选定的边界切出一张脸。如何从matlab中的图像中剪切选定的部分?

这是我们的代码:

img=imread('10.jpg'); 
for i = 1:size(img,1) 
    for j = 1:size(img,2) 
     R = img(i,j,1); 
     G = img(i,j,2); 
     B = img(i,j,3); 
     if(R > 92 && G > 40 && B > 20) 
      v = [R,G,B]; 
      if(abs(R-G) > 15 && R > G && R > B) 
        final_image(i,j) = 1; 
      end 
     end 
    end 
end 
imshow(final_image) 
rgbInputImage=img; 
%Grayscale To Binary. 
binaryImage=im2bw(final_image,0.6); 
%Filling The Holes. 
binaryImage = imfill(binaryImage, 'holes'); 
binaryImage = bwareaopen(binaryImage,1890); 
figure,imshow(binaryImage); 
labeledImage = bwlabel(binaryImage, 8); 
+0

这是迄今为止我们所做的代码... img = imread('10 .jpg');对于i = 1:size(img,1) 对于j = 1: R = img(i,j,1) G = img(i,j,2); B = img(i,j,3); (R> 92 && G> 40 && B> 20) v = [R,G,B];如果(abs(R-G)> 15 && R> G && R> B) final_image(i,j)= 1; 端 端 端 端 imshow(final_image) rgbInputImage = IMG; %灰度到二进制。 binaryImage = im2bw(final_image,0.6); %填充孔。二进制图像= imfill(binaryImage,'holes'); binaryImage = bwareaopen(binaryImage,1890); figure,imshow(binaryImage); labeledImage = bwlabel(binaryImage,8); – user2106151 2013-02-25 05:50:53

+0

blobMeasurements = regionprops(labeledImage,final_image,'all'); numberOfPeople = size(blobMeasurements,1) %numberOfPeople = 1; imagesc(rgbInputImage); title('Outlines,from bwboundaries()'); %轴平方; 坚持; boundaries = bwboundaries(binaryImage); for k = 1:numberOfPeople thisBoundary = boundaries {k}; (thisBoundary(:,2),thisBoundary(:,1),'g','LineWidth',2); 结束 拖延; imagesc(rgbInputImage); 坚持; 标题('Original with bounding boxes'); %fprintf(1,'Blob#x1 x2 y1 y2 \ n'); – user2106151 2013-02-25 05:53:31

+0

for k = 1:numberOfPeople x1 = thisBlobsBox(1); y1 = thisBlobsBox(2); x2 = x1 + thisBlobsBox(3); y2 = y1 + thisBlobsBox(4); x = [x1 x2 x2 x1 x1]; y = [y1 y1 y2 y2 y1]; y = [y1 y1 y2 y2 y1] (x,y,'LineWidth',2); 结束 figure,imshow(标示为图像); B = bwboundaries(binaryImage); (B);对于k = 1:长度(B) boundary = B {k};对于k = 1,长度为(B) 保持为 。 plot(boundary(:,2),boundary(:,1),'g','LineWidth',0.2) end – user2106151 2013-02-25 05:53:50

回答

1

您可以检查MATLAB内置功能roipoly。它将采用边界的坐标并构建一个多边形蒙板。这个二进制掩码可以与你的图像相乘来提取面部。

0

你可以在MATLAB中使用imcrop函数。有关更多信息,请在命令窗口中键入help imcrop。

相关问题