1. 程式人生 > >0016-在OpenCV環境下進行影象的直方圖均衡化

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;  
}


程式碼非常簡單,這裡就不多做贅述了!
執行結果截圖如下