📄 detect.m
字号:
% Given the original color image and the segmented image, displays a new image
% with rectangles indicating the face regions found.
function [imsource] = detect(imagecolor, imagesegmented)
clear
% Coordinates of possible faces are empty.
FaceCoord = [];
% ******** Read the template face image *********
frontalmodel = imread('frontal.tif');
% ********* Read the Source Images ************
% Read the source image in grayscale
imsource = imread(imagecolor);
% Get the skin color segmented image (black and white)
skincolor = imread(imagesegmented);
BW = im2bw(skincolor);
% **********************************
% Change the original image to gray scale.
imsourcegray = rgb2gray(imsource);
imshow(imsourcegray);
% Get the number of regions in the color skin segmented image
[L,numobj] = bwlabel(BW,8);
map = [0 0 0; jet(numobj)];
figure;
imshow(L+1, map,'notruesize');
% Iterate through the number of objects (or regions) found in the
% image.
for i=1:numobj,
% Compute the coordinates for this region.
[x,y] = find(bwlabel(BW) == i);
% Get an image that only has this region, the rest is black
bwsegment = bwselect(BW,y,x,8);
% Compute the number of segments inside this region
[L,numobjs] = bwlabel(bwsegment,4);
% Get the number of holes.
numfeatures = bweuler(bwsegment,4);
numholes = 1 - numfeatures;
% For now, a possible face needs to have more than one hole.
% otherwise, it is discarded.
if (numholes >= 1)
% Get the rectangle coordinates if it is a region tha indicatesa
% a face.
[RectCoord,imsourcegray] = processregion(imsourcegray,bwsegment,numholes,frontalmodel);
% if the region is a facem add to a vector of face coordinates
if (RectCoord ~= -1)
FaceCoord = [FaceCoord; RectCoord];
end;
end;
end % for
% ********************************************
% Final Output
% ********************************************
% Display the original image with the region that is a face
figure;
imshow(imsource);
% display the rectangle(s) if we found face(s) in the image
[numfaces x] = size(FaceCoord);
for i=1:numfaces,
hd = rectangle('Position',FaceCoord(i,:));
set(hd, 'edgecolor', 'w');
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -