直方图等化(Histogram Equalizaon)为一种使用统计方法的影像处理程序设计,它的功能为将
统计直方图的色彩分布平均的打散在直方图里,也就是说,让一张图的直方图分布均匀化,同
样的也是使用到 LUT(Look-up Table)的方法
而在设计直方图等化不可或缺的就是需要先知道统计学的机率密度函数 (Probability Density
Funcon,PDF)以及累积分配函数(Cumlave Distribuon Funcon,CDF)相关的基本概念,在这边
会简单的说明机率密度函数及累积分配函数的概念还有直方图等化的程序设计实作,而
OpenCV 也提供了直接使用直方图等化的函式,cvEqualizeHist(),下面就简单的制作直方图等化
的程序设计
RGB 结构直方图等化
#include <cv.h>
#include <highgui.h>
#include <stdio.h>
int main()
{
IplImage *Image1;
IplImage *Image2;
IplImage *RedImage;
IplImage *GreenImage;
IplImage *BlueImage;
Image1=cvLoadImage("DarkClouds.jpg",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,BlueImage,GreenImage,RedImage,0);
cvEqualizeHist(BlueImage,BlueImage);
cvEqualizeHist(GreenImage,GreenImage);
cvEqualizeHist(RedImage,RedImage);
cvMerge(BlueImage,GreenImage,RedImage,0,Image2);
cvNamedWindow("DarkClouds",1);
cvShowImage("DarkClouds",Image1);
cvNamedWindow("Equalize DarkClouds",1);
cvShowImage("Equalize DarkClouds",Image2);
cvWaitKey(0);