Matlab版本的特征提取实验过程

本文介绍了在Matlab中进行的人脸特征提取实验,通过标准化和基于眼睛定位来切割人脸区域,接着使用Gabor小波进行特征提取。实验中涉及到了两个辅助函数:main.m和spatialGabor.m。为了降低维度,文章应用了PCA和DCT两种方法。
摘要由CSDN通过智能技术生成

首先把人脸库中的图片进行标准化,根据两个眼睛来切割出人脸区域,形如下图所示:

matlab程序如下

%函数介绍:  人脸的大小归一化 手工点击自动切割图片为规定大小

function  Unitery(Height,Width,M)  %Wdith为切割后图像的宽度。Height为切割后图像的长度。M为图像的个数。  
    clear;close all;
    Height=490;%set Image size
    Width=640;
    M=12;%set numbers of Image
    %set path of Image
    mydir = 'H:\CMU表情库\cohn-kanade\cohn-kanade\cohn-kanade\S010\001\';
    %set suffix
    DIRS = dir([mydir,'*.png']);
  for i=1:M
       str=[mydir,DIRS(i).name];   
       eval('OriImg=imread(str);');  %执行字符串每次循环读入img  %读入图像
       figure,imshow(OriImg),[x,y]=ginput(2); %手工获取人眼E1,E2坐标
       d=x(2,1)-x(1,1);  %计算两眼之间的宽度d
       Ox=sum(x)/2;
       Oy=sum(y)/2;  %求E1,E2的中心O(Ox,Oy)
       I1=imcrop(OriImg,[Ox-0.9*d Oy-0.5*d 1.8*d 2*d]); %切割人脸
       str=strcat('H:\CMU表情库\cohn-kanade\cohn-kanade\cohn-kanade\S010\001\Standard\',int2str(i),'.bmp');                       
       eval('imwrite(I1,str);'); %执行字符串 每次循环读入img  %读入图像  %保存归一化后的人脸图像
       close all;
   end

 

标准化之后的任务就是上下分块,平均分割开。

形如:

matlab程序如下:

function ShangXiaFenKuai

    mydir = 'C:\Users\user\Desktop\Database\CMU\test_test\';
    DIRS = dir([mydir,'*bmp']);
    for i=1:18
    if ~DIRS(i).isdir
        filename = [mydir,DIRS(i).name];
        disp(filename)
        I = imread(filename);
        ImageUp = I(1:50,:);
        ImageDown = I(51:100,:);
        savefileUp = [mydir,'Up\',DIRS(i).name];
        imwrite(ImageUp,savefileUp);
        savefileDown = [mydir,'Down\',DIRS(i).name];
        imwrite(ImageDown,savefileDown);
    end
    i = i 
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值