4.5 直方图统计量增强

图像直方图处理与OpenCV实战指南 图像直方图是数字图像处理中的基础分析工具,通过统计像素值分布反映图像的动态范围、对比度和亮度特征。其核心原理是将像素值量化为离散区间并计算频次分布,在OpenCV中可通过calcHist函数实现。直方图分析技术广泛应用于图像增强(如CLAHE算法)、质量评估和计算机视觉任务(如阈值分割),特别是在低光照图像增强和医学影像处理中效果显著。本文结合OpenCV和Matplotlib工具链,详解直方图计算、可视化及均衡化的工程实践,涵盖HSV色彩空间处理、ROI分析等关键技巧,并分享交通监控和医疗影像中的实际应用 阅读详情

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

上一章中,我们讨论了局部直方图均衡化,这对于增强图像的局部细节非常有用,这一节我们将一个效果更好的局部增强方式,直方图统计量增强。直方图统计量增强,是基于直方图的统计量信息(如均值和方差)对图像的灰度和对比度进行调整。直方图统计量不仅用于图像的全局增强,在图像局部增强中更加有效。


1. 原理说明

直方图统计量局部增强的公式如下:
g ( x , y ) = { C f ( x , y ) 条件成立 f ( x , y ) 条件不成立 g(x,y) = \begin{cases} Cf(x,y) & 条件成立\\ f(x,y) & 条件不成立 \\ \end{cases} g(x,y)={Cf(x,y)f(x,y)​条件成立条件不成立​ 条件: ( k 0 ∗ m G < = m R < = k 1 ∗ m G ) a n d ( k 2 ∗ σ G < = σ R < = k 3 ∗ σ G ) 条件:(k_0*m_G <= m_R <= k_1*m_G) and (k_2*\sigma_G <=\sigma_R<=k_3*\sigma_G) 条件:(k0​∗mG​<=mR​<=k1​∗mG​)and(k2​∗σG​<=σR​<=k3​∗σG​) 其中: k 0 , k 1 , k 2 , k 3 , C 是常数 m G , σ G 是全局均值和全局方差 m R , σ R 是局部均值和局部方差 其中:\\ k_0,k_1,k_2,k_3,C是常数 \\ m_G,\sigma_G是全局均值和全局方差 \\ m_R,\sigma_R是局部均值和局部方差 其中:k0​,k1​,k2​,k3​,C是常数mG​,σG​是全局均值和全局方差mR​,σR​是局部均值和局部方差
说明:

  • 遍历图像的像素点,计算像素邻域的局部均值和局部方差,配合参数判断是否需要增强。
  • 局部均值和方差是根据像素邻域特征进行灰度调整的基础。像素邻域的局部均值是平均灰度的测度,局部方差是对比度的测度。使用局部均值和方差可以开发出简单而强大的图像局部增强算法。

2. 案例展示

2.1 代码

import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt


def localHistogramStatisticsEnhancer(img, kernelSize):
    """
    局部直方图统计量增强
    :param img: 输入图像
    :param kernelSize: 邻域的大小
    :return: 输出图像
    """

    dst = np.copy(img)
    # 图像尺寸
    rows, cols = img.shape[:2]

    # 先准备参数,公式的参数,不明白什么意思可以去看书
    k0, k1, k2, k3, C = 0, 0.25, 0, 0.1, 20

    # 填充边界,以避免边界效应
    padSize = kernelSize // 2
    paddedImg = cv.copyMakeBorder(img, padSize, padSize, padSize, padSize, cv.BORDER_REFLECT)

    # 计算全局平均值和全局标准差
    mean_G = np.mean(paddedImg)
    std_G = np.std(paddedImg)

    for row in range(rows):
        for col in range(cols):
            region = paddedImg[row:row + kernelSize, col:col + kernelSize]

            # 计算局部均值和标准差
            mean_R = np.mean(region)
            std_R = np.std(region)

            # 判断是否进行局部增强,下面公式看不懂可以看书去
            if (k0 * mean_G <= mean_R <= k1 * mean_G) and (k2 * std_G <= std_R <= k3 * std_G):
                dst[row][col] = C * img[row][col]
    return dst

if __name__ == '__main__':

    img = cv.imread('Image/Fig0406.tif')
    dst = localHistogramStatisticsEnhancer(img, 15)

    # 显示图像
    plt.rcParams['font.sans-serif'] = ['SimHei']
    plt.figure(figsize=(11, 6))

    plt.subplot(121)
    plt.imshow(cv.cvtColor(img, cv.COLOR_BGR2RGB))
    plt.axis('off')
    plt.title('Original Image')

    plt.subplot(122)
    plt.imshow(cv.cvtColor(dst, cv.COLOR_BGR2RGB))
    plt.axis('off')
    plt.title('直方图统计量增强')

    plt.tight_layout()
    plt.savefig('Image/tmp.png', transparent=True)
    plt.show()

2.2 效果图

在这里插入图片描述
可以看出直方图统计量增强对局部细节的增效果非常好

OpenCV图像处理之直方图 直方图 直方图是对数据进行统计的一种方法,并且将统计值组织到一系列实现定义好的 bin 当中。其中, bin 为直方图中经常用到的一个概念,可以译为 “直条” 或 “组距”,其数值是从数据中计算出的特征统计量,这些数据可以是诸如梯度、方向、色彩或任何其他特征。 图像直方图(Image Histogram)是用以表示数字图像中亮度分布的直方图,标绘了图像中每个亮度值的像素个数。这种直方图中,横坐标的左侧为较暗的区域,而右侧为较亮的区域。因此一张较暗图片的直方图中的数据多集中于左侧和中间部分,而整体明亮、只有少 阅读详情

相关推荐

基于直方图的图像局部增强

基于直方图的图像局部增强算法,已经写成function,下载后可以直接用

直方图统计增强方法

这种方法的目的是改善图像的视觉效果,使得图像中的细节更加清晰可见,从而提高图像在视觉上的识别和分析能力。通过将图像的像素值重新分布,使得图像的动态范围更好地覆盖了整个像素值域,凸显了图像中的细节,增强了图像的信息内容。直方图统计增强是一种基于像素值分布的图像增强技术,通过调整像素值的分布来增强图像的对比度和细节。其原理是根据图像的直方图信息,将原始像素值映射到一个新的像素值域,从而改变图像的亮度和对比度。函数 ( \text{round} ) 将结果四舍五入到最接近的整数,确保结果在合法的像素值范围内。

吃葡萄不吐葡萄皮 1463

直方图统计局部增强

本代码实现了图像局部直方图统计增强,并与全局直方图增强作对比。

关于《数字图像处理》中增强局部图像的两种方法对比及利用C++实现

利用直方图的两种方法实现局部图像增强效果的对比。

Zing的笔记本 2162

ArcGIS图解建模工具与DEM提取山脊、山谷线(水文分析、表面分析)

参考汤国安、杨昕等编著的《地理信息系统空间分析实验教程第二版》 利用水文分析(流量)和表面分析(坡向变率)得到山脊和山谷线 文章目录1、基本概念1.1 正地形1.2 负地形正负地形的影响2、水文分析方法2.1 基本思想原理2.2 技术路线2.3 操作步骤2.3.1 正负地形的提取2.3.2 利用水文分析思想和工具提取研究区域的山脊线2.3.3 利用水文分析思想和工具提取研究区域的山谷线2.3.4 利用水文分析提取山脊线和山谷线结果3、表面分析方法3.1 基本思想原理3.2 技术路线3.3 操作步骤4、图.

fungis 1万+

MemSeg:一种差异和共性来检测图像表面缺陷的半监督方法

本文认为人为创建类内差异和保持类内共性可以帮助模型实现更好的缺陷检测能力,从而更好地区分非正常图像。如图一所示。差异(differences):MemSeg引入人工模拟的异常图像在训练阶段使模型能够区分正常和异常的图像,减轻了半监督学习只能用正常样本进行训练的不足,然后在推理阶段可以直接输入图像无需做任何后处理。共性(commonalities):MemSeg引入了一个记忆池来记录正常样本的通用模式,在训练和推理阶段,比较输入图像和记忆池中的样本之间的差异,为异常区域的定位提供有用的信息。

斯人若彩虹,遇上方知有! 4838

P12直方图统计

(一)知识点: 1.range(等级的概念),bin概念 2.API(calcHist计算直方图数据、normalize归一化) i. calcHist() void calcHist(const Mat* images, int nimages, const int* channels, InputArray mask, OutputArray hist, int dims, const int* histSize, const float** ranges, bool u...

m0_54641001的博客 524

【DeepSeek实战】1、DeepSeek民用级开发全指南:从0到1掌握AI应用开发与模型蒸馏实战

DeepSeek创新性地打破了传统AI开发的技术壁垒,通过双模型架构(DeepSeek-V3和R1)实现普惠化与专业化并重。其核心优势包括:零代码操作、浏览器直接使用、中文提示词控制及低成本(2元/百万token)。用户通过简单三步(注册-配置-使用)即可快速开启AI之旅,平台提供$50免费额度支持2个月高频使用。 四大核心应用场景: 办公自动化:周报撰写、PPT生成、数据分析一键完成 内容创作:提供爆款标题生成、垂直领域写作模板 学习辅助:支持文档解析、错题讲解、知识图谱构建 生活服务:个性化行程规划

2025博客之星Top81。专注AI工程化与架构实战。从分布式思维到模型部署,用工程化视角为你厘清AI落地的真实路径。 1734

matlab数字图像处理之局部增强图像(使用直方图统计量)

定义部分直方图增强函数,参数img为输入图像;k0和k1为非负常数,且k0

XIETINGYUWO的博客 2463

嵌入式AI实战:基于RK3588部署YOLOv11并集成OpenCV实现实时推理(全流程详解)

本文详细介绍了在RK3588芯片上部署YOLOv11目标检测模型的全流程,包括环境搭建、模型转换和实时推理实现。主要内容为:1)通过YOLOv11官方工具将PyTorch模型转为ONNX格式;2)使用RKNN Toolkit2将ONNX模型转换为适配RK3588的RKNN格式;3)在RK3588上结合OpenCV实现实时视频推理功能。教程提供了完整的代码示例和详细步骤说明,帮助开发者快速在边缘设备上部署目标检测模型,实现AI视觉应用的落地。

LXY_LOVE36的博客 212

DO-254标准详解:航空电子硬件设计保证指南全方位解析

RTCA DO-254, 也被称为《机载电子硬件设计保证指南》,是航空电子硬件设计和验证中的关键标准,旨在为确保机载电子硬件的安全性提供设计保证。自2000年首次发布以来,DO-254就成为了民航和军用飞机中电子硬件设计认证的基准文件。随着航空硬件技术的进步和日益复杂化,确保硬件设计的准确性、可靠性和安全性变得至关重要。本标准是由RTCA和EUROCAE共同开发的,适用于涉及机载硬件的航空公司、飞机制造商、供应商和认证机构。

qq_41854911的博客 3682

图像直方图均衡化和局部增强处理

一、基本原理1.1直方图均衡化(一提高图像的对比度,二使像素值几乎成均匀分布的图像0表示黑,1表示白,中心思想是把原始图像的灰度直方图从比较集中的某个灰度区间变成在全部灰度范围内的均匀分布,增加许多图像的局部对比度,亮度可以更好的在直方图上分布。)    灰度级的直方图就是反映一幅图像中的灰度级与出现这种灰度的概率之间的关系的图形。设变量代表图像中的像素灰度级。在图像中,像素的灰度级可作归一化处理...

IMWTJ123的博客 2万+

【unity实战】Cinemachine虚拟相机实战,使用InputSystem+Cinemachine+CharacterController复刻各种主流游戏的相机控制

这里主要是探讨如何使用InputSystem+Cinemachine+CharacterController复刻各种主流游戏的相机控制,我们主要专注Cinemachine实战效果,所以并不会深入讨论Cinemachine和CharacterController比较细节的参数介绍。注意:前面为了测试方便,我还是先用的旧的输入系统代替InputSystem【推荐100个unity插件之10】Unity最全的最详细的Cinemachine(虚拟相机系统)介绍,详细案例讲解,快速上手。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 3746

10.4 直方图

直方图 学习目标 掌握图像的直方图计算和显示 了解掩膜的应用 熟悉直方图均衡化,了解自适应均衡化 1灰度直方图 1.1 原理 直方图是对数据进行统计的一种方法,并且将统计值组织到一系列实现定义好的 bin 当中。其中, bin 为直方图中经常用到的一个概念,可以译为 “直条” 或 “组距”,其数值是从数据中计算出的特征统计量,这些数据可以是诸如梯度、方向、色彩或任何其他特征。   图像直方图(Image Histogram)是用以表示数字图像中亮度分布的直方...

qq_40066957的博客 1811

寻路最终版哦

相信大家用unity3d寻路的时候,一定会碰到多人

yxriyin的专栏 6953

【Unity大规模RTS/攻城战框架】Large Scale Combat System - RTS Sieges深度解析

本文介绍了Unity专业级大规模RTS战斗框架Large Scale Combat System(LSCS)。该系统通过Job System+Burst技术解决了万人级单位的性能问题,提供完整的RTS操作体系、动态阵型系统、战术AI和攻城战功能。其亮点包括可破坏城门、行走城墙、战术AI配置系统,支持URP渲染管线,适用于Total War风格的大规模兵团对战项目。LSCS不仅提供核心战斗系统,还包含UI、小地图等配套模块,是Unity中少有的专业级RTS解决方案,特别适合需要深度战术玩法和大规模战斗的开发者

2403_88403568的博客 1332

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

在数字图像处理领域,直方图作为一种可视化统计工具,被广泛应用于图像分析的各个环节,其中灰度直方图是针对单通道图像的核心统计表征。灰度直方图定量地刻画了图像内部的灰度级分布规律,它能够直观地反映出整幅图像中不同明暗程度(灰度级)的像素占比情况。从数学定义上看,灰度直方图是灰度级$ r$ 的离散函数hrh(r)hr,其核心含义是统计图像中对应灰度级 r 的像素数量。在可视化表达中,通常以灰度级作为横坐标,以该灰度级出现的频数或频率作为纵坐标,以此构建图像的灰度密度分布曲线。

weixin_46200189的博客 641

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

【youcans 的图像处理学习课】6. 灰度变换与直方图处理

本节介绍图像的灰度变化与直方图处理,提供完整例程和运行结果:二值处理,反色变换,线性变换,分段线性变换,对比度拉伸,灰度级分层,非线性变换,直方图处理,直方图均衡化,直方图匹配,局部直方图处理,统计量增强,反向投影。 1. 安装与环境配置 2. 图像读取与显示 3. 图像的创建与修改 4. 图像的叠加与混合 5. 图像的几何变换 6. 灰度变换与直方图处理 7. 空间域图像滤波 8. 频率域图像滤波......

youcans的博客 6772

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

初识直方图均衡化

各位大家好,我是灿视,今天是一篇传统图像处理,直方图均衡~ 直方图均衡化,可以对在不同的光线条件下拍摄不同的图片进行均衡化处理,使得这些图片具有大致相同的光照条件。因此,我们可以用在训练模型之前,对图像进行对预处理。 直方图均衡 1. 直方图与对比度 首先,我们看下面的图像: 左列为原图,我们在观看的时候,感受很差。为什么很差呢?因为前景(关键区域)与背景太相似,无法很好的得到前景的信息。这就是表明,这些图像的对比度小,视觉体验很差。 其中,对比度是由两个相邻区域的亮度差异产生的。 对比度是使一个物体与其

weixin_38646522的博客 2984

数字图像处理:直方图应用

本文介绍了数字图像处理中直方图的核心应用技术,包括直方图均衡化、直方图匹配(规定化)、局部直方图处理(CLAHE)以及基于直方图的图像增强方法。通过Python代码实现演示了如何利用直方图分析图像特性并进行有效增强,重点展示了直方图均衡化如何扩展图像动态范围、改善对比度,以及直方图匹配如何实现特定灰度分布调整。实验结果表明,这些技术能显著提升图像质量,尤其是对低对比度图像效果明显,为后续图像处理任务奠定了重要基础。

qq_879829564的博客 189

Matlab实现图像直方图均衡化(无调用函数)

Matlab实现图像直方图均衡化(无调用函数,新人练手) %画出图像的灰度直方图 %画出均衡化后的直方图 %得到均衡化后的图像 clc;clear; a=imread('girl.jpg'); a=a(:,:,1); subplot(221) imshow(a); title('原图'); b=zeros(1,256); %构造一个统计灰度出现频次的矩阵 %查找矩阵中各元...

qq_45693050的博客 3514

python直方图均衡化方法对图像进行增强_python 对一幅灰度图像进行直方图均衡化...

from PIL import Imagefrom pylab import *from numpy import *def histeq(im,nbr_bins = 256):"""对一幅灰度图像进行直方图均衡化"""#计算图像的直方图#在numpy中,也提供了一个计算直方图的函数histogram(),第一个返回的是直方图的统计量,第二个为每个bins的中间值imhist,bins = his...

weixin_39644750的博客 831

python 灰度直方图_python 对一幅灰度图像进行直方图均衡化

from PIL import Imagefrom pylab import *from numpy import *def histeq(im,nbr_bins = 256):"""对一幅灰度图像进行直方图均衡化"""#计算图像的直方图#在numpy中,也提供了一个计算直方图的函数histogram(),第一个返回的是直方图的统计量,第二个为每个bins的中间值imhist,bins = his...

weixin_39707693的博客 1275

图像直方图原理与OpenCV实践指南

直方图是数字图像处理中的基础分析工具,通过统计像素强度分布揭示图像特征。其核心原理是将像素值映射到横轴,出现频率显示在纵轴,形成直观的分布图表。在计算机视觉领域,直方图分析能有效评估图像质量、检测异常,并为后续处理提供依据。OpenCV等工具库提供了calcHist等高效计算接口,支持灰度/彩色图像的多通道处理。典型应用包括对比度增强(如CLAHE算法)、光照补偿、特征提取等工程场景,在工业质检、医疗影像、遥感分析等领域具有重要价值。本文结合直方图均衡化、匹配等实战案例,详解如何通过Python+OpenC

weixin_30667649的博客 401

[图像处理]——直方图相关

一、灰度直方图 1、原理 直方图是对数据进行统计的一种方法,并且将统计值组织到一系列事先定义好的bin当中。其中,bin 为直方图中经常用到的一个概念,可以译为 “直条” 或 “组距”,其数值是从数据中计算出的特征统计量,这些数据可以是诸如梯度、方向、色彩或者其他任何特征。 注意:直方图是根据灰度图进行绘制的。 假设有一张图像的信息(灰度值0~255,已知数字的范围包含256个值),于是可以按照一定的规律将这个范围分割成子区域(也就是bins),如: 2、术语和细节 dims:需.

weixin_42067873的博客 1070

python 图像处理(8):直方图与均衡化

在图像处理中,直方图是非常重要,也是非常有用的一个处理要素。 在skimage库中对直方图的处理,是放在exposure这个模块中。 1、计算直方图 函数:skimage.exposure.histogram(image,nbins=256) 在numpy包中,也提供了一个计算直方图的函数histogram(),两者大同小义。 返回一个tuple(hist, bins_center), 前一...

PresleyR的博客 2605
上一篇: 4.4 直方图局部均衡化(自适应均衡化)
下一篇: 5.1 空间域滤波之低通滤波(图像模糊或图像平滑处理)
Four o'clock
博客等级 码龄8年 305粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值