一、直方图

首先看一个例子:

【图像识别】基于直方图实现人脸识别matlab源码_matlab

上面是原始图像,下面是图像的直方图。

什么意思呢?

【图像识别】基于直方图实现人脸识别matlab源码_matlab_02

举例:

【图像识别】基于直方图实现人脸识别matlab源码_matlab_03

最后绘制的直方图如下:

                    【图像识别】基于直方图实现人脸识别matlab源码_matlab_04

不过,大家一般看到的是这种:

                    【图像识别】基于直方图实现人脸识别matlab源码_matlab_05

再比如,左边这三张图,得到的对应的直方图如右所示:

【图像识别】基于直方图实现人脸识别matlab源码_matlab_06

二、归一化直方图

【图像识别】基于直方图实现人脸识别matlab源码_matlab_07

举例:

【图像识别】基于直方图实现人脸识别matlab源码_matlab_08

三、绘制直方图的参数

3.1 dims 

dims表示使用参数的数量。dims = 1表示绘制直方图的时候,只考虑灰度级的情况。dims一般就等于1。

【图像识别】基于直方图实现人脸识别matlab源码_matlab_09

3.2 bins

参数子集的数目

有时候需要把邻近的像素值合并一下。比如下面的图,应该有5个像素值。但是想合并成3个,那就bins = 3。

【图像识别】基于直方图实现人脸识别matlab源码_matlab_10

再比如,lena图像想分成16个组

【图像识别】基于直方图实现人脸识别matlab源码_matlab_11

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

【图像识别】基于直方图实现人脸识别matlab源码_matlab_12

3.3 Range

统计直方图的范围。

【图像识别】基于直方图实现人脸识别matlab源码_matlab_13

  • 1.
  1.  
    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;
    • 1.
    • 2.
    • 3.
    • 4.
    • 5.
    • 6.
    • 7.
    • 8.
    • 9.
    • 10.
    • 11.
    • 12.
    • 13.
    • 14.
    • 15.
    • 16.
    • 17.
    • 18.
    • 19.
    • 20.
    • 21.
    • 22.
    • 23.
    • 24.
    • 25.
    • 26.
    • 27.
    • 28.
    • 29.
    • 30.
    • 31.
    • 32.