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

【传统图像增强算法1】-直方图均衡化

一、直方图均衡化1.1 直方图简介在数字图像处理领域直方图作为一种可视化统计工具被广泛应用于图像分析的各个环节其中灰度直方图是针对单通道图像的核心统计表征。灰度直方图定量地刻画了图像内部的灰度级分布规律它能够直观地反映出整幅图像中不同明暗程度灰度级的像素占比情况。从数学定义上看灰度直方图是灰度级$ r$ 的离散函数h(r)h(r)h(r)其核心含义是统计图像中对应灰度级 r 的像素数量。在可视化表达中通常以灰度级作为横坐标以该灰度级出现的频数或频率作为纵坐标以此构建图像的灰度密度分布曲线。1.2 直方图的性质直方图是图像灰度统计分布的核心表征它定量反映了图像中不同灰度级出现的频数。该统计量仅关注像素的灰度值分布完全不包含像素的空间坐标信息因此具备旋转不变性与平移不变性是一种鲁棒性较强的图像全局特征。从唯一性来看特定图像与其直方图呈一一对应关系反之不成立即不同图像可能拥有相同的灰度直方图。1.3 直方图的应用1.4 直方图均衡化直方图均衡化Histogram Equalization是一种通过数学变换调整图像灰度分布的图像处理技术。其核心原理是将原图像的直方图通过变换函数映射为均匀分布的形式使图像的灰度级覆盖整个动态范围。通过这一过程原本过暗或过亮的细节被拉伸开了显著增强图像的整体对比度图像的视觉效果就变好了细节更清晰。要把图像的亮度范围拉开、增强对比度我们需要一个灰度映射规则它必须满足两个核心要求不打乱明暗顺序原来亮的像素映射后依然是亮的原来暗的像素映射后依然是暗的保证图像结构不变不超出灰度范围比如 8 位图像映射后的像素值必须还在 0~255 之间不能溢出。本质上这是一种利用CDF-累积分布函数进行灰度映射的算法旨在使直方图趋于平坦实现图像增强的效果。1.5 直方图均衡化核心公式推导核心约束累加直方图直方图均衡化要求输入与输出的累加直方图守恒对输入灰度p∈[0,255]p∈[0,255]p∈[0,255]存在输出灰度q∈[0,255]q∈[0,255]q∈[0,255]满足∑k0phistinput(k)∑k0qhistout(k)\sum_{k0}^{p} hist_{input}(k) \sum_{k0}^{q} hist_{out}(k)k0∑p​histinput​(k)k0∑q​histout​(k)均衡化假设设图像尺寸为 H×W总像素数 NH×W均衡化后每个灰度级像素数近似均匀histout(k)≈H⋅W256, k∈[0,255]hist_{out}(k) \approx \frac{H \cdot W}{256}, \ k \in [0, 255]histout​(k)≈256H⋅W​,k∈[0,255]公式推导将均匀分布代入累加守恒公式∑k0phistinput(k)≈(q1)⋅H⋅W256\sum_{k0}^{p} hist_{input}(k) \approx (q 1) \cdot \frac{H \cdot W}{256}k0∑p​histinput​(k)≈(q1)⋅256H⋅W​​整理求解 q得到最终映射公式q≈(∑k0phistinput(k)H⋅W)×256−1q \approx \left( \sum_{k0}^{p} \frac{hist_{input}(k)}{H \cdot W} \right) \times 256 - 1q≈(k0∑p​H⋅Whistinput​(k)​)×256−1公式说明∑k0phistinput(k)\sum_{k0}^{p} hist_{input}(k)∑k0p​histinput​(k)输入图像的累加直方图CDFhistinput(k)H⋅W\frac{hist_{input}(k)}{H \cdot W}H⋅Whistinput​(k)​​灰度级 k 的出现概率最终公式实现了从原始灰度ppp到均衡化后灰度qqq的映射1.6 示例其完整实现流程如下遍历原始灰度图像的所有像素统计得到灰度直方图 H即各灰度级的像素数量分布基于灰度直方图计算累积分布函数CDF也就是累加直方图利用累积直方图与均衡化原理推导输入灰度到输出灰度的映射关系依据该映射关系dst(x,y)H′(src(x,y))dst(x,y)H′(src(x,y))dst(x,y)H′(src(x,y))对原图像进行逐像素变换最终得到均衡化后的图像。

相关文章:

【传统图像增强算法1】-直方图均衡化

一、直方图均衡化 1.1 直方图简介 在数字图像处理领域,直方图作为一种可视化统计工具,被广泛应用于图像分析的各个环节,其中灰度直方图是针对单通道图像的核心统计表征。 灰度直方图定量地刻画了图像内部的灰度级分布规律,它能够直…...

拉孚Larfe机场人流联动照明系统节能数据成果展示发布​

春运期间对比测试验证长期节能效益显著 2026年4月7日 —— 拉孚Larfe自主研发的“机场人流联动照明系统”在完成阶段性调试后,于今年春运期间开展了一次对比测试。为配合机场春运前的验收安排,系统于春节前暂时关闭,恢复为传统手动控制模式&…...

6G八大核心关键技术汇总

6G的关键技术围绕 “极致速率、全域覆盖、智能原生、通感算智融合” 四大目标展开,是5G技术的全面革新与颠覆。以下是当前业界公认、研发最集中的八大核心技术。一、太赫兹(THz)通信 —— 超高速“高速公路”核心作用:解决5G带宽瓶…...

【独家首发】.NET 9 AOT编译边缘优化白皮书:静态链接、无GC堆、零依赖二进制生成全流程

第一章:.NET 9 AOT编译边缘优化全景概览.NET 9 将 AOT(Ahead-of-Time)编译能力推向生产级边缘场景,显著降低冷启动延迟、内存占用与部署包体积,尤其适用于 IoT 设备、Serverless 函数、嵌入式容器及轻量 WebAssembly 应…...

AI 编程的“三重境界”:从会用工具到驾驭智能,你在哪一层?

文章目录一、为什么需要理解 AI 编程的层次?1.1 一个常见的困惑1.2 三重境界概述二、第一层:工具使用者2.1 这一层的典型表现2.2 第一层的痛点2.3 如何突破到第二层?三、第二层:协作伙伴3.1 这一层的典型表现3.2 第二层的核心能力…...

Python 3.14 JIT编译器调优实战:从默认0.8x到2.4x加速,7步完成生产环境级配置(附官方未公开env变量清单)

第一章:Python 3.14 JIT编译器性能调优配置详解Python 3.14 引入了实验性内置 JIT 编译器(基于 GraalPython 兼容层与自研 Pyston-style 动态优化后端),默认处于禁用状态,需通过环境变量与运行时参数显式启用并精细调优…...

C# 13主构造函数终极性能对照表:对比传统构造、静态工厂、Source Generator,第4种方案让Startup时间缩短412ms——你还在用第1种?

第一章:C# 13 主构造函数的演进背景与核心定位C# 13 引入的主构造函数(Primary Constructor)并非凭空诞生,而是对 C# 长期以来对象初始化冗余问题的系统性回应。自 C# 6 的自动属性初始化、C# 9 的记录类型(record&…...

电商运营自动化:OpenClaw+Phi-3-vision实现竞品图文分析

电商运营自动化:OpenClawPhi-3-vision实现竞品图文分析 1. 为什么需要自动化竞品分析 作为个人电商卖家,我每天要花大量时间手动收集竞品信息:截图商品页面、记录价格变化、对比卖点描述。这种重复劳动不仅效率低下,还容易遗漏关…...

mysql如何审计误删除数据操作_mysql binlog逆向分析追踪

需用mysqlbinlog解析ROW格式binlog,查找DELETE_ROWS_EVENT及邻近GTID/QUERY事件中的用户、时间、线程信息,结合时间窗口与应用日志交叉定位误删操作。怎么从 binlog 找到谁删了哪条记录MySQL 本身不记录“谁在什么时间删了 id123 的数据”,但…...

SAP MM模块预留功能实战:从创建到发料的完整流程解析

SAP MM模块预留功能实战:从创建到发料的完整流程解析 在制造业和供应链管理领域,物料预留是确保生产计划顺利执行的关键环节。SAP MM模块中的预留功能,就像一位经验丰富的仓库管理员,能够提前为未来需求锁定必要的物料资源。想象一…...

为 Go 语言中的 sync.WaitGroup 添加超时等待机制

go 标准库的 waitgroup.wait() 不支持原生超时,本文介绍一种简洁、安全、符合 go 惯用法的超时封装方案:通过 goroutine channel time.after 实现带超时的等待,并提供可复用的工具函数及关键注意事项。 go 标准库的 waitgroup.wait() …...

别再单机跑ETL了!手把手教你用Kettle 9.2.0搭建跨平台(Win+Linux)集群,处理海量数据

别再单机跑ETL了!手把手教你用Kettle 9.2.0搭建跨平台(WinLinux)集群,处理海量数据 当你的ETL任务开始频繁出现超时告警,当数据量增长到单机处理需要通宵运行,当业务部门抱怨报表延迟越来越严重——是时候…...

集成显卡救星:手把手教你在云服务器上跑通3D Gaussian Splatting(含CUDA 11.8配置)

集成显卡救星:云端实战3D高斯点渲染全流程指南 当我在宿舍里盯着那台只有集成显卡的旧笔记本时,突然意识到——或许云端才是解锁3D重建技术的钥匙。去年参加计算机图形学研讨会时,看到那些令人惊艳的3D高斯点渲染(3D Gaussian Spl…...

DIY电源设计避坑指南:为什么你的滤波电路总达不到理想效果?

DIY电源设计避坑指南:为什么你的滤波电路总达不到理想效果? 在创客工作坊或学生电子竞赛中,一个稳定可靠的电源往往是项目成功的基础。但许多爱好者都会遇到这样的困扰:明明按照教科书设计了滤波电路,示波器上的纹波却…...

Obsidian 零基础入门教程

Obsidian 零基础入门教程 目录 前言:为什么选择 Obsidian核心概念与基础操作 笔记即数据库双向链接创建你的第一个笔记库Markdown 基础语法内部链接与反向链接 核心功能实践指南 图谱视图标签的使用安装与配置核心插件 工作流示例:管理读书笔记后续学习…...

你的JS代码总在半夜崩溃?TypeScript来“上保险”了

你有没有经历过:凌晨三点,线上报“Cannot read property ‘name’ of undefined”,你爬起来一看,原来是后端返回的数据少了一层。如果JS有“类型检查”,这种悲剧根本不会发生。今天我们就来认识TypeScript——给JavaSc…...

DejaVuSansMono嵌入式位图字体库深度解析

1. 项目概述DejaVuSansMono 是一款专为嵌入式图形界面(尤其是 Cariad 显示框架)深度优化的开源位图字体库。它并非通用型矢量字体渲染引擎,而是将 DejaVu Sans Mono 字体家族经专业栅格化、字形精修与内存布局重构后生成的静态字模数据集合。…...

OpenClaw学习助手:Phi-3-mini-128k-instruct自动生成技术问答集

OpenClaw学习助手:Phi-3-mini-128k-instruct自动生成技术问答集 1. 为什么需要自动化学习助手 作为一名技术文档的深度用户,我经常面临一个困境:阅读大量文档后,如何快速检验自己的理解是否正确?传统做法是手动整理问…...

嵌入式轻量级时间解耦引擎:逻辑Tick与物理循环分离

1. 项目概述bluemicro_engine是一个面向嵌入式实时系统的轻量级时间解耦引擎,其核心设计目标是在硬件资源受限的微控制器(如 Cortex-M0/M3/M4)上,构建一个与用户输入响应、CPU主频波动及外设时序无关的确定性执行循环。它并非通用…...

告别路由器!用ESP32-NOW和Arduino IDE打造你的第一个无线传感器网络(附完整代码)

用ESP32-NOW构建去中心化传感器网络的实战指南 去年夏天,我在一个没有Wi-Fi覆盖的农场部署环境监测系统时,第一次深刻体会到ESP32-NOW的价值。传统方案需要架设路由器和中继器,而使用ESP32-NOW,仅用五块开发板就实现了半径300米范…...

数据库安全与运维管控(一):MySQL、PG与Oracle原生审计机制对比

在满足等保2.0、SOC2 或金融合规审查时,“开启数据库审计”是硬性指标。合规要求企业必须记录“谁、在什么时间、执行了什么SQL、结果如何”。面对这个需求,开发和运维通常首先想到的是利用数据库引擎自带的原生审计功能。但在海量并发(高 QP…...

Lixie数码管驱动库深度解析:WS2812B嵌入式显示控制实践

1. Lixie 数码管驱动库技术解析:面向嵌入式工程师的深度实践指南Lixie 是一款专为驱动“Lixie 边缘导光数码管”(Edge-Lit Digit Display)设计的 Arduino 兼容库。它并非传统真空管或七段 LED,而是一种融合光学设计与现代 LED 控制…...

算法复杂度的视觉化表达与教学研究的技术

引言算法复杂度作为计算机科学核心概念,其抽象性常导致学习障碍。视觉化表达与教学研究旨在通过直观手段提升理解效率。本大纲从理论基础、视觉化工具、教学方法、案例分析和未来方向展开。理论基础算法复杂度定义与分类(时间/空间复杂度) 大…...

2026年阿里国际站数字人直播服务商评测

2026 阿里国际站数字人直播服务商选型参考:基于五大维度的评测分析 开篇 随着跨境电商行业的竞争加剧,阿里国际站商家对高效获客工具的需求日益迫切,AI 数字人直播凭借 24 小时不间断开播、降本增效的核心优势,已经成为跨境商家突破时区限制、提升询盘转化的核心抓手。 …...

OpenClaw+千问3.5-35B-A3B-FP8:自媒体图文内容自动化生产

OpenClaw千问3.5-35B-A3B-FP8:自媒体图文内容自动化生产 1. 为什么选择自动化内容生产 作为一个长期运营技术自媒体的创作者,我每天需要花费大量时间在内容生产上:从选题策划、素材收集、文案撰写到排版发布,整个过程往往需要4-…...

**基于Python的基因序列分析工具链:从原始数据到功能注释全流程实战**

基于Python的基因序列分析工具链:从原始数据到功能注释全流程实战 在生物信息学领域,基因分析已成为理解生命本质的核心手段之一。无论是疾病机制探索、药物靶点筛选还是群体遗传研究,高效的基因序列处理能力都至关重要。本文将带你构建一套完…...

告别迷茫!ESP-IDF下LVGL驱动ST7789/ILI9341屏幕的引脚配置与Menuconfig选项全解析

告别迷茫!ESP-IDF下LVGL驱动ST7789/ILI9341屏幕的引脚配置与Menuconfig选项全解析 第一次在ESP32上尝试LVGL时,面对密密麻麻的Menuconfig选项和复杂的引脚配置,相信不少开发者都会感到无从下手。本文将带你深入理解ESP-IDF框架下LVGL显示驱动…...

mac下OpenClaw开发环境搭建:调试千问3.5-27B技能插件

mac下OpenClaw开发环境搭建:调试千问3.5-27B技能插件 1. 为什么需要本地开发环境 去年第一次接触OpenClaw时,我天真地以为所有技能开发都能在云端完成。直到尝试修改一个飞书会议纪要插件时,才发现每次测试都要经历"改代码→打包→上传…...

JavaScript this 关键字详解

JavaScript this 关键字详解 引言 在JavaScript中,this 是一个非常重要的关键字,它用来指代当前执行上下文中的对象。理解 this 的行为和作用域对于编写高效、可维护的JavaScript代码至关重要。本文将深入探讨 this 的概念、用法以及在不同场景下的表现。 什么是 this? …...

基于Python的IT行业岗位数据分析与可视化

摘要本文设计并实现了一个基于Python的IT行业岗位数据分析与可视化。随着信息技术的快速发展,数据分析和可视化技术在各个领域得到了广泛应用。本研究以IT行业招聘数据为研究对象,采用Python等技术,构建了一个功能完善的数据分析与可视化系统…...