基于NSCT非采样轮廓波变换和CNN网络人脸识别matlab仿真
【摘要】 1.算法运行效果图预览(完整程序运行后无水印)通过CNN训练ORL人脸库: 通过NSCT+CNN方式训练ORL人脸库: 两种方法识别率对比: 2.算法运行软件版本matlab2022a 3.部分核心程序(完整版代码包含详细中文注释和操作步骤视频) %分解层数nlayers = 3; %取值4或者8,当方向个数为4时采用两两合并,当为8时不做任何变化norients...
1.算法运行效果图预览
(完整程序运行后无水印)
通过CNN训练ORL人脸库:
通过NSCT+CNN方式训练ORL人脸库:
两种方法识别率对比:
2.算法运行软件版本
matlab2022a
3.部分核心程序
(完整版代码包含详细中文注释和操作步骤视频)
%分解层数
nlayers = 3;
%取值4或者8,当方向个数为4时采用两两合并,当为8时不做任何变化
norients = 8;
for i = 1:20
i
for j = 1:10
str = ['ORL\',num2str(i),'\','s',num2str(i),'_',num2str(j),'.bmp'];
im = imread(str); %读入图片
[R,C,K] = size(im);
if K == 1
img = im;
else
img = rgb2gray(im);
end
[ri,ci] = size(img);
scales = nlayers;
img = img(1 : 2^(scales+1)*floor(ri/2^(scales+1)),1 : 2^(scales+1)*floor(ci/2^(scales+1)));
y_nsctdec = nsctdec(img,[3,3,3],'dmaxflat7','maxflat');
I = y_nsctdec{1};
name1 = ['ORL_nsct\',num2str(i),'\','s',num2str(i),'_',num2str(j),'.bmp'];
imwrite(uint8(I),name1);
end
end
%显示NSCT效果
y_nsctrec = nsctrec(y_nsctdec,'dmaxflat7','maxflat');
figure;
subplot(131);
imshow(img);
title('原图像');
subplot(132);
imshow(y_nsctdec{1},[]);
title('NSCT变换后图像');
subplot(133);
imshow(y_nsctrec,[]);
title('NSCT逆变换后图像');
10_031m
4.算法理论概述
基于非采样轮廓波变换(Nonsubsampled Contourlet Transform, NSCT)和卷积神经网络(Convolutional Neural Network, CNN)的人脸识别系统是一种结合了传统信号处理方法和深度学习技术的先进方法。这种方法通过NSCT提取图像的多尺度、多方向特征,并利用CNN的强大特征学习能力和分类能力来实现高效的人脸识别。
NSCT是一种多尺度、多方向的图像分解方法,它结合了多分辨率分析和方向滤波器组的优点,可以有效地捕获图像中的纹理和边缘信息。NSCT的主要步骤包括:
多尺度分析:通过级联的拉普拉斯金字塔(Laplacian Pyramid, LP)分解来实现多尺度分析。
多方向分析:使用方向滤波器组对每个尺度的子带进行分解,以获得不同方向的细节。
基于NSCT和CNN的人脸识别系统通过结合传统的信号处理方法和现代深度学习技术,可以有效地提取人脸图像的多尺度、多方向特征,并利用CNN的强大分类能力实现高效的人脸识别。
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)