当前位置: 首页 > article >正文

直方图均衡化算法

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

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

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

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

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

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

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

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

import cv2
import numpy as np

def histogram_equalization(image):
    # 统计原始图像的灰度直方图
    hist, bins = np.histogram(image.flatten(), 256, [0,256])
    
    # 计算累积直方图
    cdf = hist.cumsum()
    cdf_normalized = cdf * hist.max() / cdf.max()
    
    # 计算映射函数
    mapping = np.interp(image.flatten(), bins[:-1], cdf_normalized)
    
    # 应用映射函数,生成均衡化后的图像
    equalized_image = mapping.reshape(image.shape).astype(np.uint8)
    
    return equalized_image

# 读取原始图像
image = cv2.imread('input.jpg', 0)  # 灰度图像读取

# 执行直方图均衡化
equalized_image = histogram_equalization(image)

# 显示原始图像和均衡化后的图像
cv2.imshow('Original Image', image)
cv2.imshow('Equalized Image', equalized_image)
cv2.waitKey(0)
cv2.destroyAllWindows()


http://www.kler.cn/a/107006.html

相关文章:

  • 成都睿明智科技有限公司解锁抖音电商新玩法
  • PostgreSQL分区表:基础语法与运维实践
  • 建筑施工特种作业人员安全生产知识试题
  • 使用Docker快速部署FastAPI Web应用
  • 数据库SQL——连接表达式(JOIN)图解
  • JAVA题目笔记(十五)经典算法题
  • 最长公共子序列(LCS)与最长上升子序列(LIS)问题的相互转换
  • uni-app集成uni-simple-router,报错:Uncaught ReferenceError: ROUTES is not defined
  • element-plus form表单的二次封装
  • C++工程使用curl 静态库
  • 3DCAT+东风日产:共建线上个性化订车实时云渲染方案
  • k8s客户端配置
  • 2.22每日一题(含绝对值的定积分+极值+凹凸区间+单调区间)
  • 汽车托运如何获得赔偿
  • Flask 上传文件,requests通过接口上传文件
  • 考虑温度影响的vumat子程序在木材受火后强度分析中的应用
  • 2023了,是时候使用pnpm了!
  • Java实现SQL分页
  • 项目经验分享|openGauss 陈贤文:受益于开源,回馈于开源
  • 77 全排列
  • iOS开发-CoreNFC实现NFC标签Tag读取功能
  • HAproxy负载均衡集群
  • 无人监测站相关配置
  • PyTorch入门学习(七):卷积操作
  • ch3_6多线程举例
  • fastadmin分类下拉(多级分类)使用教程