【圖像識別】基于直方圖實(shí)現(xiàn)人臉識別matlab源碼
一、直方圖
首先看一個例子:

上面是原始圖像,下面是圖像的直方圖。
什么意思呢?

舉例:

最后繪制的直方圖如下:
? ? ? ? ? ? ? ? ? ??

不過,大家一般看到的是這種:
? ? ? ? ? ? ? ? ? ??

再比如,左邊這三張圖,得到的對應(yīng)的直方圖如右所示:

二、歸一化直方圖

舉例:

三、繪制直方圖的參數(shù)
3.1 dims?
dims表示使用參數(shù)的數(shù)量。dims = 1表示繪制直方圖的時候,只考慮灰度級的情況。dims一般就等于1。

3.2 bins
參數(shù)子集的數(shù)目
有時候需要把鄰近的像素值合并一下。比如下面的圖,應(yīng)該有5個像素值。但是想合并成3個,那就bins = 3。

再比如,lena圖像想分成16個組

最后得到的灰度直方圖如下:

3.3?Range
統(tǒng)計直方圖的范圍。

?
function varargout = FR_Processed_histogram(varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name', ? ? ? mfilename, ...
? ?'gui_Singleton', ?gui_Singleton, ...
? ?'gui_OpeningFcn', @FR_Processed_histogram_OpeningFcn, ...
? ?'gui_OutputFcn', ?@FR_Processed_histogram_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
function FR_Processed_histogram_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
guidata(hObject, handles);
global total_sub train_img sub_img max_hist_level bin_num form_bin_num;
total_sub = 40;
train_img = 200;
sub_img = 10;
max_hist_level = 256;
bin_num = 9;
form_bin_num = 29;
function varargout = FR_Processed_histogram_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;


?