彩色直方图均衡化实现可均衡各个通道动态范围内的所有阶特征以每个通道下累计分布函数变换为基础,实现RGB颜色空间下的图像细节增强。彩色直方图均衡步骤只需要讲RGB颜色空间分类成单个通道,软后在每个通道上面进行相应的直方图均衡,最后将每个通道直方图均衡化结果进行合并。彩色直方图均衡常用语图像增强,自动白平衡及伪彩色图像处理等领域。
代码如下:
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/opencv.hpp"
#include "opencv2/core/core.hpp"
#include <stdio.h>
#include <string>
using namespace std;
using namespace cv;
int main()
{
cv::Mat srcImage = cv::imread("C:\\Users\\LP\\Desktop\\C++\\ConsoleApplication4\\ConsoleApplication4\\RGBFlower4.jpg");
if (srcImage.empty())
{
return -1;
}
cv::imshow("原图像", srcImage);
//存储彩色直方图及图像通道数量
cv::Mat colorHeqImage;
std::vector<cv::Mat> BGR_plane;
//对RGB通道进行分离
cv::split(srcImage, BGR_plane);
//分别对BGR进行直方图均衡化
for (int i = 0; i < BGR_plane.size(); i++)
{
cv::equalizeHist(BGR_plane[i], BGR_plane[i]);
}
//合并对应的各个通道
cv::merge(BGR_plane, colorHeqImage);
cv::imshow("colorHeqImage", colorHeqImage);
cv::waitKey(0);
return 0;
}