C++ 图像对比度增强:直方图均衡化与自适应直方图均衡化
以下是使用 C++ 编写的两段代码,实现图像颜色对比度增强:
- 直方图均衡化(Histogram Equalization):
#include <opencv2/opencv.hpp>
int main() {
// 读取图像
cv::Mat image = cv::imread('image.jpg', cv::IMREAD_COLOR);
// 将图像转换为灰度图像
cv::Mat gray_image;
cv::cvtColor(image, gray_image, cv::COLOR_BGR2GRAY);
// 对灰度图像进行直方图均衡化
cv::Mat equalized_image;
cv::equalizeHist(gray_image, equalized_image);
// 将均衡化后的图像转换回彩色图像
cv::Mat color_equalized_image;
cv::cvtColor(equalized_image, color_equalized_image, cv::COLOR_GRAY2BGR);
// 显示原始图像和均衡化后的图像
cv::imshow('Original Image', image);
cv::imshow('Equalized Image', color_equalized_image);
cv::waitKey(0);
cv::destroyAllWindows();
return 0;
}
- 自适应直方图均衡化(Adaptive Histogram Equalization):
#include <opencv2/opencv.hpp>
int main() {
// 读取图像
cv::Mat image = cv::imread('image.jpg', cv::IMREAD_COLOR);
// 将图像转换为灰度图像
cv::Mat gray_image;
cv::cvtColor(image, gray_image, cv::COLOR_BGR2GRAY);
// 对灰度图像进行自适应直方图均衡化
cv::Ptr<cv::CLAHE> clahe = cv::createCLAHE();
clahe->setClipLimit(2.0);
clahe->setTilesGridSize(cv::Size(8, 8));
cv::Mat equalized_image;
clahe->apply(gray_image, equalized_image);
// 将均衡化后的图像转换回彩色图像
cv::Mat color_equalized_image;
cv::cvtColor(equalized_image, color_equalized_image, cv::COLOR_GRAY2BGR);
// 显示原始图像和均衡化后的图像
cv::imshow('Original Image', image);
cv::imshow('Equalized Image', color_equalized_image);
cv::waitKey(0);
cv::destroyAllWindows();
return 0;
}
请确保已将图像路径正确指定为'image.jpg'或替换为你自己的图像路径。这些代码使用了OpenCV库,因此需要确保已正确安装和配置OpenCV。
原文地址: https://www.cveoy.top/t/topic/mKQ 著作权归作者所有。请勿转载和采集!