OpenCV直方图的计算以及直方图的均衡化

1.直方图均衡化

(1)什么是直方图

图像直方图,是指对整个图像在灰度范围内的像素值(0~255)统计出现频率次数,据此生成的直方图,称为图像直方图-直方图。直方图反映了图像灰度的分布情况。是图像的统计学特征。

(2)直方图均衡化

是一种提高图像对比度的方法,拉伸图像灰度值范围

(3)API说明(cv::equalizeHist)

equalizeHist(inputArray           src,//输入图像,必须是8-bit的单通道图像

                    outputarray          dest,//输出结果)

2.直方图的计算

(1)直方图概念

直方图概念是基于图像像素值,其实对图像梯度、每个像素的角度、等一切图像的属性值,我们都可以建立直方图。这个才是直方图的概念真正意义,不过是基于图像像素灰度直方图是最常见的。

(2)直方图最常见的几个属性:

Dims:表示维度,对灰度图像来说只有一个通道值dims=1

Bins:表示在维度中子区域大小划分,bins=256,划分为256个级别

Range:表示值的范围,灰度值范围为[0~255]之间

(3)API学习

Split(//把多通道图像分为多个单通道图像

          Const        Mat &      src,//输入图像

          Mat *        mvbegin)//输出的通道图像数组

calcHist(const           Mat*        images,//输入图像指针

              int               images,//图像数目

              const          int*  channels,//通道数

              inputArray  mask,//输入mask,可选,不用

              outputarray hist,//输出的直方图数据

              int               dims,//维数

              const          int  *      histsize,//直方图级数

              const         float *       ranges,//值域范围

              bool           uniform,//true       by     default

              bool           accumulate//false   by     defaut)

 

3.直方图比较

(1)直方图比较方法——概述

对输入的俩张图像计算得到直方图H1与H2,归一化到相同的尺度空间,然后可以通过计算H1和H2的之间距离得到俩个直方图的相似程度进而比较图像本身的相似程度。Opencv提供的比较方法有四种:

——Correlation相关性比较

——Chi-Square卡方比较

——Intersection十字交叉性

——Bhattacharyya distance巴氏距离

(2)相关API

  1. 首先把图像从RGB色彩空间转换到HSV色彩空间cvtcolor
  2. 计算图像的直方图,然后归一化到[0~1]之间calchist和normalize
  3. 使用上述四种比较方法之一进行比较compareHist

Cv:;compareHist(inputArray        h1,//直方图数据,下同

                                 inputArray        h2,

                                 int                     method//比较方法,上述四种方法之一)

4.直方图反向投影(back         Projection)

(1)反向投影

反向投影是反映直方图模型在目标图像中的分布情况

简单来说就是用直方图模型去目标图像中寻找是否有相似的对象。通常用HSV色彩空间的HS俩个通道直方图模型

(2)实现步骤与相关API

  1. 建立直方图模型
  2. 计算待测图像直方图并映射到模型中
  3. 从模型反向计算生成图像

 

  1. 加载图片IMread
  2. 将图像从RGB色彩空间转换到HSV色彩空间cvtcolor
  3. 计算直方图和归一化calcHist与normalize
  4. Mat与MatND其中Mat表示二维数组,MatND表示三维或者多维数据,此处均用Mat表示
  5. 计算反向投影图像——calcBackProject

你可能感兴趣的:(OpenCV基础学习,opencv,c++)