最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

【圖像識別】基于模板匹配算法識別人臉matlab源碼含GUI

2021-08-26 00:07 作者:Matlab工程師  | 我要投稿

一、簡介

應(yīng)用統(tǒng)計方法解決模式識別問題時,一再碰到的問題之一就是維數(shù)問題。在低維空間里解析上或計算上行得通的方法,在高維空間里往往行不通。因此,降低維數(shù)有時就會成為處理實(shí)際問題的關(guān)鍵。

1 問題描述:如何根據(jù)實(shí)際情況找到一條最好的、最易于分類的投影線,這就是Fisher判別方法所要解決的基本問題。
考慮把d維空間的樣本投影到一條直線上,形成一維空間,即把維數(shù)壓縮到一維。然而,即使樣本在d維空間里形成若干緊湊的互相分得開的集群,當(dāng)把它們投影到一條直線上時,也可能會是幾類樣本混在一起而變得無法識別。但是,在一般情況下,總可以找到某個方向,使在這個方向的直線上,樣本的投影能分得開。下圖可能會更加直觀一點(diǎn):

在這里插入圖片描述


在這里插入圖片描述


類效果。因此,上述尋找最佳投影方向的問題,在數(shù)學(xué)上就是尋找最好的變換向量w*的問題。

2 Fisher準(zhǔn)則函數(shù)的定義
幾個必要的基本參量:
2.1在d維X空間
(1)各類樣本的均值向量mi

在這里插入圖片描述


(2)樣本類內(nèi)離散度矩陣Si和總樣本類內(nèi)離散度矩陣Sw

在這里插入圖片描述


其中Sw是對稱半正定矩陣,而且當(dāng)N>d時通常是非奇異的。(半正定矩陣:特征值都不小于零的實(shí)對稱矩陣;非奇異矩陣:矩陣的行列式不為零)
(3)樣本類間離散度矩陣Sb

在這里插入圖片描述


Sb是對稱半正定矩陣。
3.2 在一維Y空間
(1)各類樣本的均值

在這里插入圖片描述


(2)樣本類內(nèi)離散度 和總樣本類內(nèi)離散度

在這里插入圖片描述


我們希望投影后,在一維Y空間中各類樣本盡可能分得開些,即希望兩類均值之差越大越好,同時希望各類樣本內(nèi)部盡量密集,即希望類內(nèi)離散度越小越好。
Fisher準(zhǔn)則函數(shù)定義

在這里插入圖片描述


在這里插入圖片描述


因此,

在這里插入圖片描述


將上述各式代入JF(w),可得:

在這里插入圖片描述


其中Sb為樣本類間離散度矩陣,Sw為總樣本類內(nèi)離散度矩陣。

4 最佳變換向量w*的求取

在這里插入圖片描述


在這里插入圖片描述

二、源代碼

function varargout = faceCore(varargin) % FACECORE M-file for faceCore.fig % ? ? ?FACECORE, by itself, creates a new FACECORE or raises the existing % ? ? ?singleton*. % % ? ? ?H = FACECORE returns the handle to a new FACECORE or the handle to % ? ? ?the existing singleton*. % % ? ? ?FACECORE('CALLBACK',hObject,eventData,handles,...) calls the local % ? ? ?function named CALLBACK in FACECORE.M with the given input arguments. % % ? ? ?FACECORE('Property','Value',...) creates a new FACECORE or raises the % ? ? ?existing singleton*. ?Starting from the left, property value pairs are % ? ? ?applied to the GUI before faceCore_OpeningFunction gets called. ?An % ? ? ?unrecognized property name or invalid value makes property application % ? ? ?stop. ?All inputs are passed to faceCore_OpeningFcn via varargin. % % ? ? ?*See GUI Options on GUIDE's Tools menu. ?Choose "GUI allows only one % ? ? ?instance to run (singleton)". % % See also: GUIDE, GUIDATA, GUIHANDLES % Copyright 2002-2003 The MathWorks, Inc. % Edit the above text to modify the response to help faceCore % Last Modified by GUIDE v2.5 28-May-2009 10:21:26 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', ? ? ? mfilename, ... ? ? ? ? ? ? ? ? ? 'gui_Singleton', ?gui_Singleton, ... ? ? ? ? ? ? ? ? ? 'gui_OpeningFcn', @faceCore_OpeningFcn, ... ? ? ? ? ? ? ? ? ? 'gui_OutputFcn', ?@faceCore_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 % --- Executes just before faceCore is made visible. function faceCore_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject ? ?handle to figure % eventdata ?reserved - to be defined in a future version of MATLAB % handles ? ?structure with handles and user data (see GUIDATA) % varargin ? command line arguments to faceCore (see VARARGIN) % Choose default command line output for faceCore handles.output = hObject; % Update handles structure guidata(hObject, handles); % UIWAIT makes faceCore wait for user response (see UIRESUME) % uiwait(handles.figure1); % --- Outputs from this function are returned to the command line. function varargout = faceCore_OutputFcn(hObject, eventdata, handles) % varargout ?cell array for returning output args (see VARARGOUT); % hObject ? ?handle to figure % eventdata ?reserved - to be defined in a future version of MATLAB % handles ? ?structure with handles and user data (see GUIDATA) % Get default command line output from handles structure varargout{1} = handles.output; % --- Executes on button press in pushbutton1. function pushbutton1_Callback(hObject, eventdata, handles) % hObject ? ?handle to pushbutton1 (see GCBO) % eventdata ?reserved - to be defined in a future version of MATLAB % handles ? ?structure with handles and user data (see GUIDATA) global TrainDatabasePath ; TrainDatabasePath = uigetdir(strcat(matlabroot,'\work'), '訓(xùn)練庫路徑選擇...' ); % --- Executes on button press in pushbutton2. function pushbutton2_Callback(hObject, eventdata, handles) % hObject ? ?handle to pushbutton2 (see GCBO) % eventdata ?reserved - to be defined in a future version of MATLAB % handles ? ?structure with handles and user data (see GUIDATA) global TestDatabasePath; TestDatabasePath = uigetdir(strcat(matlabroot,'\work'), '測試庫路徑選擇...'); % --- Executes on button press in pushbutton3. %function pushbutton3_Callback(hObject, eventdata, handles) % hObject ? ?handle to pushbutton3 (see GCBO) % eventdata ?reserved - to be defined in a future version of MATLAB % handles ? ?structure with handles and user data (see GUIDATA) %[filename,pathname]=uigetfile({'*.jpg';'*.bmp'},''); %str=[pathname ?filename]; %im=imread(str); %axes(handles.axes1); %imshow(im); % --- Executes on button press in pushbutton4. function pushbutton4_Callback(hObject, eventdata, handles) % hObject ? ?handle to pushbutton4 (see GCBO) % eventdata ?reserved - to be defined in a future version of MATLAB % handles ? ?structure with handles and user data (see GUIDATA) global TrainDatabasePath ; global TestDatabasePath; global T; T = CreateDatabase(TrainDatabasePath); %[m V_PCA V_Fisher ProjectedImages_Fisher] = FisherfaceCore(T); % --- Executes on button press in pushbutton5. function pushbutton9_Callback(hObject, eventdata, handles) % hObject ? ?handle to pushbutton5 (see GCBO) % eventdata ?reserved - to be defined in a future version of MATLAB % handles ? ?structure with handles and user data (see GUIDATA) global im; [filename,pathname]=uigetfile({'*.jpg';'*.bmp'},'選擇測試圖片...'); str=[pathname ?filename]; im=imread(str); axes(handles.axes1); imshow(im); function OutputName = Recognition(TestImage, m_database, V_PCA, V_Fisher, ProjectedImages_Fisher) % Recognizing step.... % % Description: This function compares two faces by projecting the images into facespace and % measuring the Euclidean distance between them. % % Argument: ? ? ?TestImage ? ? ? ? ? ? ?- Path of the input test image % % ? ? ? ? ? ? ? ?m_database ? ? ? ? ? ? - (M*Nx1) Mean of the training database % ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? database, which is output of 'EigenfaceCore' function. % % ? ? ? ? ? ? ? ?V_PCA ? ? ? ? ? ? ? ? ?- (M*Nx(P-1)) Eigen vectors of the covariance matrix of % ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? the training database % ? ? ? ? ? ? ? ?V_Fisher ? ? ? ? ? ? ? - ((P-1)x(C-1)) Largest (C-1) eigen vectors of matrix J = inv(Sw) * Sb % ? ? ? ? ? ? ? ?ProjectedImages_Fisher - ((C-1)xP) Training images, which % ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? are projected onto Fisher linear space % % Returns: ? ? ? OutputName ? ? ? ? ? ? - Name of the recognized image in the training database. % % See also: RESHAPE, STRCAT % Original version by Amir Hossein Omidvarnia, October 2007 % ? ? ? ? ? ? ? ? ? ? Email: aomidvar@ece.ut.ac.ir ? ? ? ? ? ? ? ? ? Train_Number = size(ProjectedImages_Fisher,2); %%%%%%%%%%%%%%%%%%%%%%%% Extracting the FLD features from test image %InputImage = imread(TestImage); temp=TestImage(:,:,1); %temp = InputImage(:,:,1); [irow icol] = size(temp); InImage = reshape(temp',irow*icol,1); Difference = double(InImage)-m_database; % Centered test image ProjectedTestImage = V_Fisher' * V_PCA' * Difference; % Test image feature vector

三、運(yùn)行結(jié)果

在這里插入圖片描述


在這里插入圖片描述

?


【圖像識別】基于模板匹配算法識別人臉matlab源碼含GUI的評論 (共 條)

分享到微博請遵守國家法律
靖西县| 丹棱县| 玛沁县| 舟曲县| 军事| 平原县| 昌乐县| 达日县| 盱眙县| 芷江| 玛多县| 宁国市| 怀安县| 子洲县| 昌江| 澎湖县| 广灵县| 石屏县| 青海省| 格尔木市| 通州区| 临桂县| 东城区| 鄂州市| 阿克| 中超| 文登市| 南澳县| 东乌| 井陉县| 太原市| 开封市| 林周县| 双桥区| 永泰县| 南充市| 平潭县| 庄河市| 高青县| 城口县| 平阳县|