Python+OpenCV:图像对比度受限自适应直方图均衡化(CLAHE, Contrast Limited Adaptive Histogram Equalization)

82 篇文章 20 订阅
该博客介绍了如何使用Python和OpenCV库进行对比度受限自适应直方图均衡化(CLAHE)处理,以提升图像的对比度。代码示例展示了对多张图片应用CLAHE的过程,并展示处理前后的对比效果。用户还可以选择保存处理后的图像。
摘要由CSDN通过智能技术生成

Python+OpenCV:图像对比度受限自适应直方图均衡化(CLAHE, Contrast Limited Adaptive Histogram Equalization)

####################################################################################################
# 图像对比度受限自适应直方图均衡化(CLAHE, Contrast Limited Adaptive Histogram Equalization)
def lmc_cv_image_clahe():
    """
        函数功能: 图像对比度受限自适应直方图均衡化(CLAHE, Contrast Limited Adaptive Histogram Equalization)。
    """

    stacking_images = []
    # 图像对比度受限自适应直方图均衡化(CLAHE, Contrast Limited Adaptive Histogram Equalization)
    image_file_name = ['D:/99-Research/Python/Image/Photo1.jpg', 'D:/99-Research/Python/Image/Photo2.jpg',
                       'D:/99-Research/Python/Image/Photo3.jpg', 'D:/99-Research/Python/Image/Lena.jpg']
    for i in range(len(image_file_name)):
        # 读取图像
        image = lmc_cv.imread(image_file_name[i])
        image = lmc_cv.cvtColor(image, lmc_cv.COLOR_BGR2GRAY)

        # create a CLAHE object (Arguments are optional).
        clahe = lmc_cv.createCLAHE(clipLimit=2.0, tileGridSize=(8, 8))
        clahe_image = clahe.apply(image)

        # stacking images side-by-side
        stacking_image = np.hstack((image, clahe_image))
        stacking_images.append(stacking_image)

    # 显示图像
    pyplot.figure('CLAHE, Contrast Limited Adaptive Histogram Equalization')
    for i in range(len(stacking_images)):
        pyplot.subplot(2, 2, i + 1)
        pyplot.imshow(stacking_images[i], 'gray')
        pyplot.xticks([])
        pyplot.yticks([])
    pyplot.show()

    # 根据用户输入保存图像
    if ord("q") == (lmc_cv.waitKey(0) & 0xFF):
        # 销毁窗口
        pyplot.close()
    return

OpenCV中的自适应直方图均衡化Adaptive Histogram Equalization, AHE)是一种图像增强技术,它的目的是为了改善局部图像区域的对比度,使得图像的细节更加突出。常规的直方图均衡化会对整个图像进行均匀化的处理,而自适应版本则根据每个像素邻域的亮度信息来进行调整。 在OpenCV中,你可以使用`cv::equalizeHist()`函数进行全局直方图均衡化。但是如果你想要进行自适应处理,你需要利用`createCLAHE()`函数创建一个 Contrast Limited Adaptive Histogram Equalization (CLAHE) 对象。CLAHE会在一个小的邻域(通常称为“tiles”或“blocks”)内计算直方图并应用均衡化,然后对结果进行限制,防止过度强化导致的失真。 以下是一个简单的示例代码: ```cpp #include <opencv2/opencv.hpp> int main() { cv::Mat src; // 假设你已经加载了源图像 if (!src.data) return -1; int tileSize = 8; // 邻域大小,默认值可能适合小图片,但可以根据需求调整 cv::Ptr<cv::CLAHE> clahe = cv::createCLAHE(// 创建CLAHE对象 cv::TermCriteria(), // 使用默认终止条件 cv::Size(tileSize, tileSize), // 定义邻域大小 cv::Rect() // 如果不指定,全图像都将被划分为等大的块 ); cv::Mat dst; clahe->apply(src, dst); // 应用CLAHE到源图像上 // 现在dst就是自适应直方图均衡化的结果 // 可以显示原始图像和增强后的图像进行比较 cv::imshow("Original", src); cv::imshow("CLAHE Enhanced", dst); cv::waitKey(0); return 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值