Info

This question is closed. Reopen it to edit or answer.

hello i have a matlab code for face detection and i want to convert my code into simulink blocks.please help me. mail me as early as possible pleaseee its urgent, my mail id: karishmako​usar0101@g​mail.com

1 view (last 30 days)
I=imread('C:\Users\a\Videos\images.jpg'); close all; % No faces at the beginning Faces=[]; numFaceFound=0; I=double(I); H=size(I,1); W=size(I,2); R=I(:,:,1); G=I(:,:,2); B=I(:,:,3); % LIGHTING COMPENSATION YCbCr=rgb2ycbcr(I); Y=YCbCr(:,:,1); %normalize Y minY=min(min(Y)); maxY=max(max(Y)); Y=255.0*(Y-minY)./(maxY-minY); YEye=Y; Yavg=sum(sum(Y))/(W*H); T=1; if (Yavg<64) T=1.4; elseif (Yavg>192) T=0.6; end if (T~=1) RI=R.^T; GI=G.^T; else RI=R; GI=G; end C=zeros(H,W,3); C(:,:,1)=RI; C(:,:,2)=GI; C(:,:,3)=B; figure,imshow(C/255); title('Lighting compensation'); %EXTRACT SKIN YCbCr=rgb2ycbcr(C); Cr=YCbCr(:,:,3); S=zeros(H,W); [SkinIndexRow,SkinIndexCol] =find(10<Cr & Cr<45); for i=1:length(SkinIndexRow) S(SkinIndexRow(i),SkinIndexCol(i))=1; end figure,imshow(S); title('skin'); %REMOVE NOISE SN=zeros(H,W); for i=1:H-5 for j=1:W-5 localSum=sum(sum(S(i:i+4, j:j+4))); SN(i:i+5, j:j+5)=(localSum>12); end end figure,imshow(SN); title('skin with noise removal'); %FIND SKIN COLOR BLOCKS L = bwlabel(SN,8); BB = regionprops(L, 'BoundingBox'); bboxes= cat(1, BB.BoundingBox); widths=bboxes(:,3); heights=bboxes(:,4); hByW=heights./widths; lenRegions=size(bboxes,1); foundFaces=zeros(1,lenRegions); rgb=label2rgb(L); %figure,imshow(rgb); %title('face candidates'); %CHECK FACE CRITERIONS for i=1:lenRegions end if (hByW(i)>1.75 hByW(i)<0.75) end if (heights(i)<10 && widths(i)<10) end CurBB=bboxes(i,:); XStart=CurBB(1); YStart=CurBB(2); WCur=CurBB(3); HCur=CurBB(4); rangeY=int32(YStart):int32(YStart+HCur-1); rangeX= int32(XStart):int32(XStart+WCur-1); RIC=RI(rangeY, rangeX); GIC=GI(rangeY, rangeX); BC=B(rangeY, rangeX); figure, imshow(RIC/255); title('Possible face R channel'); % 2nd criteria: existance & localisation of mouth M=zeros(HCur, WCur); theta=acos( 0.5.*(2.*RIC-GIC-BC) ./ sqrt( (RIC-GIC).*(RIC-GIC) + (RIC-BC).*(GIC-BC) ) ); theta(isnan(theta))=0; thetaMean=mean2(theta); [MouthIndexRow,MouthIndexCol] =find(theta<thetaMean/4); for j=1:length(MouthIndexRow) M(MouthIndexRow(j),MouthIndexCol(j))=1; end % now compute vertical mouth histogram Hist=zeros(1, HCur); for j=1:HCur Hist(j)=length(find(M(j,:)==1)); end wMax=find(Hist==max(Hist)); wMax=wMax(1); % just take one of them. if (wMax < WCur/6) %reject due to not existing mouth end figure, imshow(M); title('Mouth map'); % 3rd criteria: existance & localisation of eyes eyeH=HCur-wMax; eyeW=WCur; YC=YEye(YStart:YStart+eyeH-1, XStart:XStart+eyeW-1); E=zeros(eyeH,eyeW); [EyeIndexRow,EyeIndexCol] =find(65<YC & YC<80); for j=1:length(EyeIndexRow) E(EyeIndexRow(j),EyeIndexCol(j))=1; end % check if eyes are acceptable. EyeExist=find(Hist>0.3*wMax); if (~(~isempty(EyeExist))) end foundFaces(i)=1; numFaceFound=numFaceFound+1; disp('Number of faces found'); numFaceFound; if (numFaceFound>0) disp('Indices of faces found: '); ind=find(foundFaces==1); CurBB=bboxes(ind,:); CurBB; else close all; end

Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!