专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > 图形/图像

人脸定位程序,有写地方看不懂,求指点!解决方案

发布时间:2011-06-27 20:37:20 文章来源:www.iduyao.cn 采编人员:星星草
人脸定位程序,有写地方看不懂,求指点!
这是一个用matlab写的人脸定位的程序,经过测试,当背景颜色暗而且单一,人脸较亮时,定位结果还可以。

上面的一些注释是我自己写的,不知道对不对。

剩下没有写注释的地方我就看不懂,有没有高手帮忙指点一下撒,多谢了!

C/C++ code
I=imread('face12.jpg');
if ndims(I)>2
    I=rgb2gray(I);%彩色图像灰度化
end;
%I=histeq(I);
%imshow(I);
BW=im2bw(I);%二值化
imshow(BW);%显示二值化后的图片
[n1 n2]=size(BW);%图片长和宽
%把图片分成100块
r=floor(n1/10);%每一小块长度(floor:向下取整)
c=floor(n2/10);%每一小块宽度
x1=1;x2=r;
s=r*c;%每一小块面积
%去边缘
for i=1:10
    y1=1;y2=c;
    for j=1:10
        %if (y2<=c | y2>9*c) | (x1==1 | x2==r*10)
        if x1==1|x2==10*r|y1==1|y2==10*c
            loc=find(BW(x1:x2, y1:y2)==0);
            [o p]=size(loc);%区域长和宽
            pr=o*100/s;
            if pr<=100
                BW(x1:x2, y1:y2)=0;%把这一小块填充成黑色
                r1=x1;r2=x2;s1=y1;s2=y2;%?????
                pr1=0;%?????
            end
        end
            y1=y1+c;
            y2=y2+c;
    end
 x1=x1+r;
 x2=x2+r;
end
figure,imshow(BW)%显示去边缘后的图片
L=bwlabel(BW,8);%8连通区
BB=regionprops(L, 'BoundingBox');%用来测量标注矩阵L中每一个标注区域的一系列属性
%BoundingBox:包含最小区域的矩形
BB1=struct2cell(BB);%把结构体数组转化为元胞数组
BB2=cell2mat(BB1);%把元胞数组转化为单个矩阵
[s1 s2]=size(BB2);
mx=0;
%??????这个循环是?
for k=3:4:s2-1
    p=BB2(1,k)*BB2(1,k+1);
    if p>mx & (BB2(1,k)/BB2(1,k+1))<1.8
        mx=p;
        j=k;
    end
end
figure,imshow(I);
hold on;
rectangle('Position',[BB2(1,j-2),BB2(1,j-1),BB2(1,j),BB2(1,j+1)],'EdgeColor','r' )


------解决方案--------------------
不懂matlab 但是顶!
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: