OpenCV2.4.4中利用直方图均衡化增强图像对比度(Mat结构实现)
2013-05-20 19:44
351 查看
直方图就是对数据进行统计,将统计值组织到一系列事先定义好的bin(直方图中的柱子)中。bin中的数值是从数据中计算出的特征的统计量,这些数据可以是诸如梯度、方向、色彩或任何其他特征。无论如何,直方图获得的是数据分布的统计图。
灰度图像的直方图的性质:
(1) 直方图是一幅图像中各像素灰度出现频次的统计结果,它只反映图像中不同灰度值出现的次数,而没反映某一灰度所在的位置。也就是说,它只包含了该图像的某一灰度像素出现的概率,而丢失了其所在的位置信息。
(2) 任一幅图像,都有惟一确定一幅与它对应的直方图,但不同的图像可能有相同的直方图。即图像与直方图之间是多对一的映射关系。
(3) 由于直方图是对具有相同灰度值的像素统计得到的,因此,一幅图像各子区的直方图之和就等于该图像全图的直方图。
通过直方图均衡化进行图像增强
直方图均衡化是灰度变换的一个重要应用,广泛应用在图像增强处理中,它是以累计分布函数变换为基础的直方图修正法,可以产生一幅灰度级分布具有均匀概率密度的图像,扩展了像素的取值动态范围。许多图像的灰度值是非均匀分布的,其中灰度值集中在一个小区间内的图像是很常见的,直方图均衡化是一种通过重新均匀地分布各灰度值来增强图像对比度的方法,经过直方图均衡化的图像对二值化阈值选取十分有利。一般来说,直方图修正能提高图像的主观质量,因此在处理艺术图像时非常有用。直方图均衡化处理的中心思想是把原始图像的灰度直方图从比较集中的某个灰度区间变成在全部灰度范围内的均匀分布。
OpenCV2.4.4中提供了现成的直方图均衡化函数:
void equalizeHist(InputArray src, OutputArraydst );
实现代码如下:
结果:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201305/20/4f2ec81f05c3f1a14791e281d8d1f929)
原图
![](https://oscdn.geek-share.com/Uploads/Images/Content/201305/20/45aad36126766212318343dae3c825e1)
处理后
IplImage结构实现见下面这篇文章:
图像处理中的直方图应用(通过直方图均衡化增强图像对比度)
灰度图像的直方图的性质:
(1) 直方图是一幅图像中各像素灰度出现频次的统计结果,它只反映图像中不同灰度值出现的次数,而没反映某一灰度所在的位置。也就是说,它只包含了该图像的某一灰度像素出现的概率,而丢失了其所在的位置信息。
(2) 任一幅图像,都有惟一确定一幅与它对应的直方图,但不同的图像可能有相同的直方图。即图像与直方图之间是多对一的映射关系。
(3) 由于直方图是对具有相同灰度值的像素统计得到的,因此,一幅图像各子区的直方图之和就等于该图像全图的直方图。
通过直方图均衡化进行图像增强
直方图均衡化是灰度变换的一个重要应用,广泛应用在图像增强处理中,它是以累计分布函数变换为基础的直方图修正法,可以产生一幅灰度级分布具有均匀概率密度的图像,扩展了像素的取值动态范围。许多图像的灰度值是非均匀分布的,其中灰度值集中在一个小区间内的图像是很常见的,直方图均衡化是一种通过重新均匀地分布各灰度值来增强图像对比度的方法,经过直方图均衡化的图像对二值化阈值选取十分有利。一般来说,直方图修正能提高图像的主观质量,因此在处理艺术图像时非常有用。直方图均衡化处理的中心思想是把原始图像的灰度直方图从比较集中的某个灰度区间变成在全部灰度范围内的均匀分布。
OpenCV2.4.4中提供了现成的直方图均衡化函数:
void equalizeHist(InputArray src, OutputArraydst );
实现代码如下:
//读入图像 Mat mat = imread("长虹大厦20120810.jpg"); Mat mergeImg;//合并后的图像 //用来存储各通道图片的向量 vector<Mat> splitBGR(mat.channels()); //分割通道,存储到splitBGR中 split(mat,splitBGR); //对各个通道分别进行直方图均衡化 for(int i=0; i<mat.channels(); i++) equalizeHist(splitBGR[i],splitBGR[i]); //合并通道 merge(splitBGR,mergeImg);
结果:
原图
处理后
IplImage结构实现见下面这篇文章:
图像处理中的直方图应用(通过直方图均衡化增强图像对比度)
相关文章推荐
- OpenCV2.4.4中利用直方图均衡化增强图像对比度(Mat结构实现)
- OpenCV图像增强算法实现(直方图均衡化、拉普拉斯、Log、Gamma)
- OpenCV图像增强算法实现(直方图均衡化、拉普拉斯、Log、Gamma)
- OpenCV图像增强算法实现(直方图均衡化、拉普拉斯、Log、Gamma)
- 利用SIFT和RANSAC算法(openCV框架)实现物体的检测与定位,并求出变换矩阵(findFundamentalMat和findHomography的比较)
- OpenCV图像增强算法实现(直方图均衡化、拉普拉斯、Log、Gamma)
- OpenCv学习之:利用vs2008的IDE工具对IplImage、Mat、CvMat结构进行解析解析
- 利用vs2008的IDE工具对IplImage、Mat、CvMat结构进行解析(opencv)
- OpenCV图像增强算法实现(直方图均衡化、拉普拉斯、Log、Gamma)
- OpenCV图像增强算法实现(直方图均衡化、拉普拉斯、Log、Gamma)
- 利用SIFT和RANSAC算法(openCV框架)实现物体的检测与定位,并求出变换矩阵(findFundamentalMat和findHomography的比较)
- opencv Mat 数据结构与使用技巧
- 利用线性表的顺序结构求集合的并、交、差、补(C语言实现)
- Linux利用list_head结构实现双向链表
- 利用opencv的hog+svm实现细胞识别分类器
- 图像处理中,SIFT,FAST,MSER,STAR等特征提取算法的比较与分析(利用openCV实现)
- 利用opencv读取图片将其作为opengl的纹理图片的实现方法
- 【OPENCV】图像增强效果评价及实现
- 利用栈结构实现二叉树的非递归遍历,求二叉树深度、叶子节点数、两个结点的最近公共祖先及二叉树结点的最大距离
- 利用OpenCV实现图像的阈值分割