图像处理算法系列 第四章 直方图

前言

直方图在图像处理中是个十分有用的概念,在图像处理领域有很大的作用。
我想了想,直方图其实就是个统计学的原理,统计出来图像本身一些特征,例如RGB,灰度 HSV等等一些特征出现的频率。
统计学在任何学科里面都有很高的使用价值,说的高深一点有宏观经济学,投资理财等等,说的通俗点博彩行业。当然这里指的多是外国的博彩bwin之类的赔率。中国的彩票就先忽略了,这种东西大家都懂得,庄家太大。

今天文章写的简单,后面有时间把直方图的均衡化 以及直方图对比写进来。

一概念

opencv里面给的定义是 Histograms are collected  counts  of data organized into a set of predefined  bins

根据多方面的定义加上自己的理解,直方图是一种统计的含义,它统计某一种特征值在给定范围和给定间隔的分布规律。


二算法


这个算法是最简单的,拿灰度直方图来说,给定的范围是0-225,给定的间隔是1.
那么就是统计这个图片从0-255的变化情况,在哪个值最多,哪个值最少。

更多细节查看 http://docs.opencv.org/doc/tutorials/imgproc/histograms/histogram_calculation/histogram_calculation.html#histogram-calculation

三代码


void caclHistMethod(Mat src, Mat &dst, int size, int begin ,int end)
{
	dst.create(1,size,CV_32F);
	float* p; 
	uchar* q;
	p = dst.ptr<float>(0);
	for(int i =0 ; i< size;i++)
	{
		p[i] = 0;
	}
	
	for(int i =0 ; i< src.rows;i++)
	{
		q = src.ptr<uchar>(i);
		for (int j = 0; j<src.cols;j++)
			p[q[j]]+=1;
	}

}

四效果图和数据


测试的图像还是lena.jpg前面文章中的那一张

效率



原始 本文 图像处理算法系列 第四章 直方图_第1张图片 图像处理算法系列 第四章 直方图_第2张图片

你可能感兴趣的:(opencv,图像处理,直方图)