Real Time face region of interested like Eyes nose and Mouth keypoints
1 次查看(过去 30 天)
显示 更早的评论
Hi,
using matlab R2013a live video processing detect face region of interest eyes , nose and mouth morphology segmented process , after that lip segmentation key points like upper , lower and centroid points . up to code i have tried to implement , now i need to convert gray2ind to skin color image , and extract lip key points . please let me know how i can achieve correct eyes detection's (Viola Jones Algorith Left and Right) and Lip Key Points?
faceImage = imcrop(I, [xb yb wb hb]);
bbox(i,:) =bbox(1,:);
[hue,s,v]=rgb2hsv(faceImage);
cb = 0.148* faceImage(:,:,1) - 0.291* faceImage(:,:,2) + 0.439 * faceImage(:,:,3) + 128;
cr = 0.439 * faceImage(:,:,1) - 0.368 * faceImage(:,:,2) -0.071 * faceImage(:,:,3) + 128;
[w h]=size(faceImage(:,:,1));
for i=1:w
for j=1:h
if 140<=cr(i,j) & cr(i,j)<=165 & 140<=cb(i,j) & cb(i,j)<=195 & 0.01<=hue(i,j) & hue(i,j)<=0.1
segment(i,j)=1;
else
segment(i,j)=0;
end
end
end
se = strel('disk',1);
se2 = strel('disk',1);
% se2 = strel('disk',3);
er = imerode(segment,se2);
cl = imclose(er,se);
dil = imdilate(cl,se); % morphologic dilation
dil = imdilate(dil,se);
cl2 = imclose(dil,se);
d2 = imfill(cl2, 'holes'); % morphologic fill
skelImg = bwmorph(d2,'skel',Inf);
BW = edge(skelImg,'canny');
BW1 = bwareaopen(BW,40);
[X, MAP] = gray2ind(d2,64);
% RGB = ind2rgb(X,map);
% face(:,:,1) = double(faceImage(:,:,1)).*d2;
% face(:,:,2) = double(faceImage(:,:,2)).*d2;
% face(:,:,3) = double(faceImage(:,:,3)).*d2;
% face_a = uint8(face);
end
end
l_Eye = step(leftEye , faceImage);
x1 = l_Eye(1); y1 = l_Eye(2); w1 = l_Eye(3); h1 = l_Eye(4);
mboxPolygon =[x1, y1, x1+w1, y1,x1+w1,y1+h1, x1, y1+h1];
% l_Eye = [x1-1, y1-1, l_Eye(3), 2* (l_Eye(4))];
% for m = 1:size(l_Eye ,1)
leye = imcrop( faceImage ,[x1 y1 w1 h1]);
% end
R_Eye = step(rightEye,faceImage);
x2 = R_Eye(1); y2 = R_Eye(2); w2 = R_Eye(3); h2 = R_Eye(4);
% R_Eye = [x2-1, y2-1, R_Eye(3), 2* (R_Eye(4))];
% for m = 1:size(R_Eye ,1)
reye = imcrop( faceImage , [x2 y2 w2 h2]);
% end
BB=step(NoseDetect,faceImage);
x = BB(1,1); y = BB(1,2); w = BB(1,3); h = BB(1,4);
for i = 1:size(BB,1)
nose = imcrop(faceImage ,[x y w h]);
BB(i,:) =BB(1,:);
end
mregcrop = imcrop(faceImage, [1 floor(2*bbox(4)/3) bbox(3) floor(bbox(4))]);
mbox = step(mouthDetector, mregcrop);
x3 = mbox(1,1); y3 = mbox(1,2); w3 = mbox(1,3); h3 = mbox(1,4);
mouthcrop = imcrop(mregcrop ,[x3 y3 w3 h3]);
0 个评论
回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!