0016-在OpenCV环境下进行图像的直方图均衡化

对于一些过度曝光的图像,实质上是图像的亮度值分布集中在某一个区域,导致图像的对比度过低。为了解决这个问题,引出了直方图均衡化这个技术,将亮度值分布很集中的直方图的亮度范围拉大至整一个亮度区域(如8位灰度图就是到0-255)。
OpenCV提供了equalizeHist这个函数来进行灰度图像的直方图均衡化,使用方法很简单,这里就不专门介绍这个函数了,直接上源代码吧,至于实现的原理,大家可以参考相关文献。
代码中用到的图像下载链接:http://pan.baidu.com/s/1nuZsmbZ 密码:npom

图像处理开发资料、图像处理开发需求、图像处理接私活挣零花钱,可以搜索公众号"qxsf321",并关注!

//opencv版本:OpenCV3.0
//VS版本:VS2013
//Author:qxsf321.net

#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>    
#include <opencv2/imgproc/types_c.h>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/highgui/highgui_c.h>

#include <iostream>

using namespace cv;
using namespace std;

int main()  
{  
    Mat srcImage = imread("20.jpg");  
    imshow("【原图】", srcImage);  

    Mat grayImage;  
    cvtColor(srcImage, grayImage, CV_BGR2GRAY);  
    imshow("【灰度图】", grayImage);  

    Mat dstImage;  
    //直方图均衡化  
    equalizeHist(grayImage, dstImage);  
    imshow("【均衡化后的灰度图】", dstImage);  


    waitKey(0);  

    return 0;  
}


代码非常简单,这里就不多做赘述了!
运行结果截图如下


 

猜你喜欢

转载自blog.csdn.net/lehuoziyuan/article/details/84065865