chap 6 cvEqualize( color_img )
#include<opencv2/opencv.hpp>
// chap 6 均衡化
void main()
{
// src 找 暗一点或亮一点的图片做输入图片
IplImage* src=cvLoadImage("D:\\lxlx\\2.bmp");
cvNamedWindow("src");
cvShowImage("src",src); // 显示原图
IplImage* img1=cvCreateImage(cvGetSize(src),8,1);
IplImage* img2=cvCreateImage(cvGetSize(src),8,1);
IplImage* img3=cvCreateImage(cvGetSize(src),8,1);
IplImage* dst=cvCreateImage(cvGetSize(src),8,3);
cvSplit(src,img1,img2,img3,0);// 拆分3通道,分别均衡化
cvEqualizeHist(img1,img1);
cvEqualizeHist(img2,img2);
cvEqualizeHist(img3,img3);
cvMerge(img1,img2,img3,0,dst); // 合并3通道
cvNamedWindow("EqualizeHist");
cvShowImage("EqualizeHist",dst);
cvWaitKey(0);
}
彩色图片进行直方图均衡化,思路:将输入图像分通道进行均衡化,结果合并后作为彩色图片均衡化处理的输出。
当输入图片较暗或较亮是,均衡化后,对比度变强。如果原始图片光照等比较均衡,运行结果不明显。