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 著作权归作者所有。请勿转载和采集!