91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

基于ycbcr空間的MATLAB人臉檢測代碼,非常簡單,注釋和代碼都寫得很好,新手也可以很容易看懂。

資源截圖

代碼片段和文件信息

clear?all
close?all
clc
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%?讀入待檢測圖像
RGB=?imread(‘renlian2.jpg‘);
subplot(221)imshow(RGB);title(‘原圖‘);

I=rgb2ycbcr(RGB);????????%顏色空間轉(zhuǎn)換?
[abc]=size(I);?%得到圖像的像素點個數(shù)
cb=double(I(::2));
cr=double(I(::3));

%膚色模型
for?i=1:a
????for?j=1:b
????????w=[cb(ij)cr(ij)];
????????m=[117.4316?148.5599];
????????n=[260.1301?12.1430;12.1430?150.4574];
????????p(ij)=exp((-0.5)*(w-m)*inv(n)*(w-m)‘);%算某象素點的概率
????????if?(p(ij)<0.5)?
????????????p(ij)=0;
????????else?
????????????p(ij)=1;
????????end
????end
end?

%去噪
SE?=?strel(‘square‘8);?
imf=imopen(pSE);?????????%開運算(即先腐蝕再膨脹),消除雜散點?
subplot(222)imshow(imf);title(‘膚色模型分割效果圖‘);

%%%%%%%%%%%%%%%%%%%%%%%根據(jù)填充率去除手腳、胳膊等非人臉區(qū)域%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
[Lnum]=bwlabel(imf8);?????%連通區(qū)域標記?
B=zeros(size(imf));
for?i=1:num
????Area(i)=bwarea(L==i);%計算每個皮膚區(qū)域的面積
end
for?i=1:num
????[rc]?=?find(L==i)?;
????left(i)=min(c);
????right(i)=max(c);
????up(i)=min(r);
????down(i)=max(r);
end

%計算各矩形區(qū)域面積
for?i=1:num?
????Rect_Area(i)=(down(i)-up(i))*(right(i)-left(i));
end

%計算各區(qū)域的填充率
Ratio=Area./Rect_Area;
for?i=1:num?
???if?Ratio(i)>=0.5%若相應區(qū)域的填充率大于0.5則保留該區(qū)域
???????[xy]=find(L==i);%第i塊區(qū)域的坐標值
???????B=B+bwselect(imfyx8);%把填充率大于0.5皮膚區(qū)域疊加起來???
???end??????
end
%%%%%%%%%%%%%%%%%%%%%%%%%%根據(jù)面積比來進一步除去一些較小的非人臉區(qū)域%%%%%%%%%%%%%%%%%%%%%%%%%%
[L1num1]=bwlabel(B8);?????%連通區(qū)域標記
B1=zeros(size(B));
for?i=1:num1
????Area(i)=bwarea(L1==i);%計算每個皮膚區(qū)域的面積
end
maxarea=max(Area);%取最大值
q=Area/maxarea;%每塊區(qū)域的面積與最大區(qū)域面積的比值???
for?i=1:num1?
???if?q(i)>=0.3%若相應區(qū)域的面積比值大于0.3則保留該區(qū)域
???????[xy]=find(L1==i);%第i塊區(qū)域的坐標值
???????B1=B1+bwselect(Byx8);%把面積比值大于0.3皮膚區(qū)域疊加起來???
???end??????
end
%%%%%%%%%%%%%%%%%%%%%%%%%%根據(jù)膚色區(qū)域的長寬比來除去一些非人臉區(qū)域%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
[L2num2]=bwlabel(B18);?????%連通區(qū)域標記?
B2=zeros(size(B1));
for?i=1:num2
????[rc]?=?find(L2==i);??
????left(i)=min(c);
????right(i)=max(c);
????up(i)=min(r);
????down(i)=max(r);
end
for?i=1:num2
????if?((down(i)-up(i))/(right(i)-left(i)))>0.8&((down(i)-up(i))/(right(i)-left(i)))<2
????????[xy]=find(L2==i);
????????B2=B2+bwselect(B1yx8);%%%把滿足長寬比在0.8到2的區(qū)域留下
????end
end
subplot(223)imshow(RGB);title(‘人臉定位‘);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%把人臉框出來%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
[L3?num3]=bwlabel(B28);?????%連通區(qū)域標記
for?i=1:num3
????[rc]?=?find(L3==i);??
????left(i)=min(c);
????right(i)=max(c);
????up(i)=min(r);
????down(i)=max(r);
end

hold?on;
for?i=1:num3
????if(down(i)>(up(i)+(right(i)-left(i))*1.2))?????%人臉長寬比限制
???????down(i)=up(i)+(right(i)-left(i))*1.2;
????end
????x=[left(i);left(i);right(i);right(i);left(i)];
????y=[up(i);down(i);down(i);up(i);up(i)];
????plot(xy);??????%畫框
end
hold?off;

a?=?min(x);b?=?min(y);
w?=?max(x)?-?min(x);
h?=?max(y)?-?min(y);
rect??=?[a?b?w?h];
img_cut?=?imcrop(RGBrect);
subplot(224)imshow(img_cut);title(‘人臉‘);

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????3234??2019-05-24?12:44??fusemoxing.m

評論

共有 條評論