【图像识别】基于ksvd字典学习之人脸表情识别matlab源码

 

  1. %
    %
    % Main Program of KSVD-NN based facial expression recognition.
    
    clear
    datadim='37x30';
    %datadim='50x40';
    %datadim='gabor_all';
    testmethod='unfamiliar';
     
     
    % prepare image data
    [data,label] = PrepareData(datadim,testmethod,9);
     
    % direct nearest neighbor classification
    testresult = nearestNeighbor( data.train , label.train , data.test );
    rate = length( find( ( testresult - label.test ) == 0 ) ) / length(label.test);
    clear testresult;
    fprintf('\n Direct nearest neighbot on pixel values: rec rate: %f \n',rate);
     
     
    % training process using KSVD
    param.L = 12;
    param.K = 90;
    param.numIteration = 20;
    param.errorFlag = 0;
    param.preserveDCAtom = 0;
    param.InitializationMethod = 'DataElements';
    param.displayProgress = 1;
    disp('Starting to  train the dictionary');
    tt=cputime;
    [Dictionary,KSVDout]  = KSVD(data.train,param);
    fprintf('\ntime of K-SVD: %f\n\n' , cputime - tt);
    %I=showdict(Dictionary,[37,30],10,8,'lines') ;
    %imshow(I);
    %KSVDout.CoefMatrix = full( KSVDout.CoefMatrix );
    tt=cputime;
    % Using OMP to find the sparse coefficients for test samples
    coeftest = OMP(Dictionary,data.test,param.L);
    %coeftest = full( coeftest );
     
    % nearest neighbor classification
    testresult = nearestNeighbor( KSVDout.CoefMatrix , label.train , coeftest );
    fprintf('\ntime of testing: %f\n\n' , cputime - tt);
    rate = length( find( ( testresult - label.test ) == 0 ) ) / length(label.test);
     
    fprintf('\n The result when image dimension: %s    test-method: %s \n' , datadim, testmethod );
    fprintf(' L(sparsity of coef) = %d, K(number of atoms) = %d : recognition rate: %f \n\n\n',param.L , param.K , rate);
     
    % direct pixal values
    testresult = nearestNeighbor( data.train , label.train , data.test );
    rate = length( find( ( testresult - label.test ) == 0 ) ) / length(label.test);

     

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Matlab科研辅导帮

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

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

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

打赏作者

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

抵扣说明:

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

余额充值