• 直方图均衡化算法


    直方图均衡化是一种图像处理算法,通过调整图像的灰度级分布,增强图像的对比度和细节。下面是直方图均衡化算法的基本步骤:

    1. 统计原始图像的灰度直方图:遍历整个图像,计算每个灰度级出现的频次。

    2. 计算累积直方图:对灰度直方图进行累加,得到每个灰度级及其之前所有灰度级的累积频次。

    3. 计算映射函数:将累积直方图归一化到期望的灰度范围(通常是0到255),得到一个映射函数。

    4. 应用映射函数:遍历原始图像,根据映射函数将每个像素的灰度值转换为新的灰度值。

    5. 生成均衡化后的图像:用转换后的灰度值替换原始图像中的相应像素值。

    通过直方图均衡化,图像的灰度级分布会更加平坦,从而增加图像的对比度。这个过程可以使得图像细节更加清晰,使得暗部和亮部的细节都更容易观察到。需要注意的是,直方图均衡化可能会改变图像的整体色调,因此在应用之前,需要根据具体需求进行调整和评估。

    以下是一个简单的直方图均衡化算法的例程,以Python语言为例:

    1. import cv2
    2. import numpy as np
    3. def histogram_equalization(image):
    4. # 统计原始图像的灰度直方图
    5. hist, bins = np.histogram(image.flatten(), 256, [0,256])
    6. # 计算累积直方图
    7. cdf = hist.cumsum()
    8. cdf_normalized = cdf * hist.max() / cdf.max()
    9. # 计算映射函数
    10. mapping = np.interp(image.flatten(), bins[:-1], cdf_normalized)
    11. # 应用映射函数,生成均衡化后的图像
    12. equalized_image = mapping.reshape(image.shape).astype(np.uint8)
    13. return equalized_image
    14. # 读取原始图像
    15. image = cv2.imread('input.jpg', 0) # 灰度图像读取
    16. # 执行直方图均衡化
    17. equalized_image = histogram_equalization(image)
    18. # 显示原始图像和均衡化后的图像
    19. cv2.imshow('Original Image', image)
    20. cv2.imshow('Equalized Image', equalized_image)
    21. cv2.waitKey(0)
    22. cv2.destroyAllWindows()

  • 相关阅读:
    Ubuntu20.04 从头到尾完整版安装anaconda、cuda、cudnn、pytorch、paddle2.3成功记录
    GBASE 8s事务配置参数
    【JAVA数据结构系列】11_集合框架+复杂度
    Django学习日志06
    Onein Lab | 万应低代码实践指南,从0到1构建新能源汽车电商平台
    K8s Runtime从Docker修改为Containerd实践
    【代码随想录】链表刷题
    string 模拟与用法
    nginx $uri导致的CRLF注入漏洞
    docker删除日志
  • 原文地址:https://blog.csdn.net/wangjiaweiwei/article/details/131924181