opencv学习笔记

目录

一:直方图计算

API

代码:

 二:直方图比较

卡方计算:

十字计算:

 巴士距离计算

 API

代码:


 

一:直方图计算

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

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

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

 - range 表示值得范围,灰度值范围为[0~255]之间

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

)

代码:

opencv学习笔记_第1张图片

 二:直方图比较

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

-Correlation 相关性比较
-Chi-Square 卡方比较
-Intersection 十字交叉性
-Bhattacharyya distance 巴氏距离
opencv学习笔记_第2张图片

opencv学习笔记_第3张图片 

其中N是直方图的BIN个数,H是均值

卡方计算:

opencv学习笔记_第4张图片 

H1,H2分别表示两个图像的直方图数据

十字计算:

opencv学习笔记_第5张图片 

 巴士距离计算

opencv学习笔记_第6张图片

 API

首先把图像从RGB色彩空间转换到HSV色彩空间cvtColor

计算图像的直方图,然后归一化到[0~1]之间calcHist和normalize;

使用上述四种比较方法之一进行比较compareHist

compareHist(InputArray h1, // 直方图数据,下同

InputArray H2,

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

代码:

opencv学习笔记_第7张图片

opencv学习笔记_第8张图片 

 

 

 

 

你可能感兴趣的:(opencv,c++,c#)