【SVM+Gabor人脸识别】基于SVM+Gabor特征提取的人脸识别matlab仿真

1.软件版本

MATLAB2013b

2.本算法理论知识

人脸识别是人脸识别与匹配领域的一项重要技术。为了获得理想的识别效果,必须在具有良好的类内聚力和类间差异的特征。现有的方法包括一种基于不同颜色模型和颜色空间中人脸肤色模型的人脸识别方法。一种基于颜色直方图模型的人脸识别方法,该方法是由皮肤区域校准图像的大量颜色建立的。提出了一种基于人脸光照补偿和非线性颜色变换的人脸识别方法。

Gabor特征提取

Gabor核函数具有与人脑皮层细胞相同的二维反射区域特征,Gabor核函数能够捕捉到相应的空间频率、空间尺度和方向选择性,在计算机视觉和图像分析领域有着广泛的应用[04,05]。Gabor滤波器常用于描述和表示纹理,尤其是在人脸图像识别中,它能很好地反映人脸信息。这主要是由于Gabor滤波器的频率和方向接近人类视觉系统。图1显示了脊椎动物视觉皮层中感受野反应和Gabor滤波器的比较,第一排图是脊椎动物感受野的视觉皮层,第二排图是Gabor滤波器,第三排图是残差。在图1中,我们可以看到Gabor滤波器更适合人类视觉,它适合应用于图像处理领域。

SVM

      SVM支持向量机是Vapnik等人提出的一种新的机器学习方法。SVM的基本思想是在线性情况下,从两种样本中找到最佳分类原始空间平面。在线性不可分情况下,加入松弛变量分析,将数据从低维空间映射到高维空间,使非线性情况变成线性情况,找到最优分类原始空间平面。支持向量机利用结构风险最小化原理在属性空间中构造最优分类超平面,使支持向量机分类器得到全局最优结果。SVM是从线性可分情况的最优分类曲面发展而来的,其基本思想如图所示:

 

 3.部分核心代码

function FaceCell = func_FaceCell_Update(images,net,FaceCell,FaceRange,levels);

while(1==1)
    [i,j] = find(FaceCell.state==1,1);
    if isempty(i)
       break;
    end
    
    %人脸区域
    face_areas           = images(i-FaceRange:i+FaceRange,j-FaceRange:j+FaceRange);
    FaceCell.state(i,j)  =-1;
    
    %预测
    FaceCell.net(i,j)    = sim(net,func_image_feature(face_areas));   
    
    if FaceCell.net(i,j) < -0.95
       for i2=i-3:i+3
           for j2=j-3:j+3
               try 
                  FaceCell.state(i2,j2)=-1;
               end
           end
       end 
       continue;    
     elseif FaceCell.net(i,j) < -1*levels continue;
     elseif FaceCell.net(i,j) > 0.95
            for i2=i-FaceRange:i+FaceRange
                for j2=j-FaceRange:j+FaceRange
                    try 
                       FaceCell.state(i2,j2)=-1;
                    end
                end
            end
    elseif FaceCell.net(i,j) > levels
    elseif FaceCell.net(i,j) < levels     
    end   
    
    for i4=-1:1
        for j4=-1:1
            i3 = i+i4;                    
            j3 = j+j4;            
            if (FaceCell.state(i3,j3) == -1 || FaceCell.net(i3,j3)~=-1)
                continue;
            end          
            face_areas          = images(i3-FaceRange:i3+FaceRange,j3-FaceRange:j3+FaceRange);
            FaceCell.net(i3,j3) = sim(net,func_image_feature(face_areas));
            
            if FaceCell.net(i3,j3) > 0.95
               for i2=i3-FaceRange:i3+FaceRange
                   for j2=j3-FaceRange:j3+FaceRange
                       try
                          FaceCell.state(i2,j2)=-1;
                       end
                   end
               end
               continue;
            end           
            if FaceCell.net(i3,j3) > levels
               FaceCell.state(i3,j3) = 1;
            else
               FaceCell.state(i3,j3) =-1;
            end  
        end
    end
    
end
function FacePic = func_face_results(images,FaceCell,FaceRange,levels,rr,cc);

[Face_reigon,fnum] = bwlabeln(imdilate(imregionalmax(FaceCell.net > levels),strel('disk',2,4)),4);
Face_Matrix        = regionprops(Face_reigon,'centroid');
Face_Area          = zeros(rr,cc);

for i = 1:fnum
    xpos = fix(Face_Matrix(i).Centroid(2));
    ypos = fix(Face_Matrix(i).Centroid(1));
    Face_Area(xpos,ypos) = 1;
end

Face_Area      = func_recs(Face_Area,[19 19],FaceRange);
FacePic(:,:,1) = images;
FacePic(:,:,2) = images;
FacePic(:,:,3) = images;

for i = 1:rr
    for j=1:cc
        if Face_Area(i,j) == 1
           FacePic(i,j,1) = 255;
           FacePic(i,j,2) = 255;
           FacePic(i,j,3) = 0;       
        end
    end
end

4.操作步骤与仿真结论

5.参考文献

[01]Terrillon J C, Shirazi M N, Fukamachi H, et al. Comparative performance of different skin chrominance models and chrominance spaces for the automatic detection of human faces in color images[C]//Proceedings. Fourth IEEE International Conference on Automatic Face and Gesture Recognition, 2000: 54-61.

[02]Jones M J, Rehg J M. Statistical color models with application to skin detection[J]. International Journal of Computer Vision, 2002, 46(1): 81-96.A10-40

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fpga和matlab

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值