✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

⛄ 内容介绍

Gabor变换因其良好的时频局部化特性,能够提供最为实质的人脸特征,削弱噪声的干扰,减少计算量,因此将Gabor变换应用于人脸识别与检测具有良好的发展前景

基于Matlab的高斯滤波器和频谱分析_html

基于Matlab的高斯滤波器和频谱分析_html_02

基于Matlab的高斯滤波器和频谱分析_人脸识别_03

基于Matlab的高斯滤波器和频谱分析_html_04

⛄ 部分代码

function varargout = GaussFilter(varargin)

%GaussFilter shows different digital Gaussian filters:

%1 Floating numbers, the values are taken directly from bell curve

%2 Integer numbers, corner value=1, the values are taken directly from bell curve

%3 Integer numbers, corner value=4, the values are taken directly from bell curve

%4 Integer numbers, corner value=1 or 4, Sum of filter = 2^n

%5 Floating numbers, the values are taken by the underlying 3D bell shape volume

%6 Compare 1 and 5

% Begin initialization code - DO NOT EDIT

gui_Singleton = 1;

gui_State = struct('gui_Name',       mfilename, ...

  'gui_Singleton',  gui_Singleton, ...

  'gui_OpeningFcn', @GaussFilter_OpeningFcn, ...

  'gui_OutputFcn',  @GaussFilter_OutputFcn, ...

  'gui_LayoutFcn',  [] , ...

  'gui_Callback',   []);

if nargin && ischar(varargin{1})

  gui_State.gui_Callback = str2func(varargin{1});

end

if nargout

  [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});

else

  gui_mainfcn(gui_State, varargin{:});

end

% End initialization code - DO NOT EDIT

function GaussFilter_OutputFcn(~, ~,~)%unused

% --- Executes just before GaussFilter is made visible.

function GaussFilter_OpeningFcn(hObject, eventdata, handles, varargin)

%Warning icon:

imWarning=handles.axWarning.UserData;

axes(handles.axWarning);

handles.Warning=imshow(imWarning);%for some reason it deletes tag and userdata of axWarning

set(handles.axWarning,'Tag','axWarning','UserData',imWarning);%Restore values

set(handles.Warning,'Visible','off');

handles.pbCopy.String=['<html><b>Copy</b><br>Vector to clipboard<br>'...

  'Filter to workspace</html>'];

handles.output = hObject;

%Create polar axes:

axes(handles.axPolar);

hPolarLine=polarplot(1,1);

handles.axPolar=hPolarLine.Parent;

addlistener(handles.sldSigma,'ContinuousValueChange',...

  @(hObject, event) dispSigma(hObject,handles));%Diplay sigma on slider movement

addlistener(handles.sldFrq,'ContinuousValueChange',...

  @(hObject, event) dispFrq(hObject,handles));%Diplay sigma on slider movement

dcm_obj = datacursormode(hObject);

set(dcm_obj,'Enable','on','UpdateFcn',{@DataTipUpdate,handles})

guidata(hObject, handles);% Update handles structure

IniSliderFrq(handles)

popR_Callback(hObject, eventdata, handles)

% --- Executes on selection change in 'Filter size'.

function popR_Callback(~, ~, handles)

%Filter size

IniSliderSigma(1,handles)

R=get(handles.popR,'Value');%R=filter radius

Limit=round(0.036*R+0.014,2);

handles.txtSlimit.String=[num2str(Limit) '<' char(963) '<1000'];

setOptButtons(handles);%Set buttons for optimal filter

pbRun_Callback(0, 0, handles)

set(handles.sldSigma,'Enable','on');

function edSigma_Callback(hObject, ~, handles)

%Sigma edit box

S=str2num(hObject.String);

R=get(handles.popR,'Value');

if isempty(S) || S<round(0.036*R+0.014,2)

  handles.txtInfo.String=['ERROR:' char(10) 'Please enter a number > '...

    num2str(round(0.036*R+0.014,2))];

  return

end

[~, index] = min(abs(handles.edSigma.UserData(:,2)-S));

handles.sldSigma.Value=index;

if handles.bgPlot.UserData==4

  S=handles.edSigma.UserData(index,2);

  set(handles.edSigma,'String',num2str(S,5));

end

if S>99

  handles.txtInfo.String=['Warning:' char(10) ...

    'High ' char(963) ' may take several minutes to process!'...

    char(10) 'click "RUN" to continue.' ];

else

  handles.txtInfo.String='';

  pbRun_Callback(0, 0, handles)

  set(handles.sldSigma,'Enable','on');

end

% --- Executes on slider movement.

function sldSigma_Callback(~, ~, handles)

%Sigma slider

set(handles.sldSigma,'Enable','off');

Sv=round(get(handles.sldSigma,'Value'));

set(handles.edSigma,'String',num2str(handles.edSigma.UserData(Sv,2),5));

drawnow

set(handles.sldSigma,'Enable','off');

pbRun_Callback(0, 0, handles)

set(handles.sldSigma,'Enable','on');

⛄ 运行结果

基于Matlab的高斯滤波器和频谱分析_人脸识别_05

⛄ 参考文献

[1]QJS, 曲金帅. 基于高斯滤波器的人脸识别方法[J]. 云南民族大学学报:自然科学版, 23(S).

⛄ 完整代码

❤️部分理论引用网络文献,若有侵权联系博主删除
❤️ 关注我领取海量matlab电子书和数学建模资料