直方图均衡化是一种把原来在一定灰度级范围变换的图片转换成在所有灰度级变化的图片的一种处理手段,通过该手段可以增强图片的对比度。在openCv中提供了函数cvEqualizeHist来实现。闲话少说,直接上程序。
#include "stdafx.h"
#include <cv.h>
#include <highgui.h>
#include <stdio.h>
int _tmain(int argc, _TCHAR* argv[])
{
IplImage *Image1;
IplImage *Image2;
IplImage *RedImage;
IplImage *GreenImage;
IplImage *BlueImage;
const char *filename = "F:\\openCV\\EqualizationPicture\\EqualizationPicture\\second.jpg" ;
Image1 = cvLoadImage(filename, 1);
Image2 = cvCreateImage(cvGetSize(Image1), IPL_DEPTH_8U, 3);
RedImage = cvCreateImage(cvGetSize(Image1), IPL_DEPTH_8U, 1);
GreenImage = cvCreateImage(cvGetSize(Image1), IPL_DEPTH_8U, 1);
BlueImage = cvCreateImage(cvGetSize(Image1), IPL_DEPTH_8U, 1);
cvSplit(Image1, RedImage, GreenImage, BlueImage, 0);
cvEqualizeHist(RedImage, RedImage);
cvEqualizeHist(GreenImage, GreenImage);
cvEqualizeHist(BlueImage, BlueImage);
cvMerge(BlueImage,GreenImage,RedImage,0,Image2);
cvNamedWindow("原始图", 1);
cvShowImage("原始图", Image1);
cvNamedWindow("处理图", 1);
cvShowImage("处理图", Image2);
cvWaitKey(0);
return 0;
}