数字图像处理:使用直方图统计进行图像增强

2023-11-11

一、引言

在《数字图像处理:局部直方图处理(Local Histogram Processing) https://blog.csdn.net/LaoYuanPython/article/details/120383974》介绍了基于像素的邻域进行直方图均衡或直方图匹配,这种局部直方图处理方式克服了在前面章节《《数字图像处理》直方图均衡学习总结+感悟》、《数字图像直方图匹配或规定化Histogram Matching (Specification)处理》介绍的全局直方图均衡处理和直方图匹配的一些问题,但局部直方图处理除了局部直方图均衡处理和局部直方图匹配外,还可以基于图像的统计信息进行。本文将介绍与此有关的方法。

二、基础知识

本文需要的数学知识都是来源于概率统计学:

  1. 本文阅读需要《https://blog.csdn.net/LaoYuanPython/article/details/108864527:人工智能数学基础4:离差、平均差、方差、标准差、协方差、皮尔森相关系数》介绍的平均差、方差、标准差、离差的相关概念;
  2. 期望(expectation)是试验中每次可能结果的概率乘以其结果的总和,它反映随机变量平均取值的大小,因此期望也就是均值(mean),某个随机变量X的期望记为E(X)或E[X]。对于有限数字集合,期望就是集合数字的平均值;
  3. (moment)是各点对某一固定点A离差幂的平均值,即E=[(X-A))k],指数k即距的阶数。如果A=0,则是原点矩,如果A=均值,则是中心距
  4. 数学期望是一阶原点矩(表示分布重心),方差是二阶中心距(表示离散程度)。

三、图像中有关的统计信息

3.1、灰度均值和方差定义

令r表示在区间[0,L-1]上代表灰度值(intensity values)的一个离散随机变量(discrete random variable),ri表示对于灰度值等于i的灰度值,p(ri)为ri值在图像灰度集合中出现的概率,令m为图像灰度的均值,则可以得到灰度r关于其均值的n阶矩(即图像灰度的n阶中心距)为:
在这里插入图片描述
其中m是r的均值(average intensity,平均灰度),其值等于:
在这里插入图片描述
灰度r关于其均值的2阶矩为:
在这里插入图片描述
由于2阶矩为方差,因此式(3.3-19)称为灰度方差(intensity variance),通常用σ²表示。

灰度的均值用于度量平均灰度,而方差(或标准差(standard deviation),即方差的平方根)是图像对比度的度量。

3.2、灰度均值和方差的另一种计算方式

上面的灰度均值和方差定义时,使用的计算公式其实是基于归一化直方图来定义的,实际上数字图像的灰度和方差还可以用另外一种方式计算,即直接从图像的采样值(sample values)来计算,而不需要计算直方图。这样计算的均值称为采样均值(sample mean ),方差称为采样方差( sample variance)。

采样均值计算公式如下:
在这里插入图片描述

采样方差计算公式如下:
在这里插入图片描述

其中M表示图像像素的行数,N表示图像像素的列数,f(x,y)为对应位置为(x,y)的像素的灰度值。

很容易理解,对于数字图像,式(3.3-20)和式(3.3-18)等价,式(3.3-21)和式(3.3-19)等价,因为直方图的数据就是由各像素取值的集合生成的。

四、灰度均值和方差在图像增强中的应用

4.1、全局增强和局部增强

图像的全局均值和方差(global mean and variance)是在整幅图像上计算的,用于衡量整幅图的全面灰度和对比度,并可用于图像的整体灰度和对比度的调整(gross adjustments)。

在局部增强(local enhancement)中,局部均值和方差是根据图像中每一像素的邻域内的图像特征进行改变的基础,通常情况下这是比全局增强更好的一种方式。

如果将二者的处理的一些数据结合起来使用,则就是基于直方图统计进行图像增强。

4.2、局部灰度均值和方差

令(x,y)表示给定图像中任意像素的坐标,Sxy表示规定大小的以(x,y)为中心的邻域(子图像,subimage)。该邻域中像素的均值由下式给出:
在这里插入图片描述
其中,PSxy是区域Sxy中像素的直方图。该直方图有L个分量,对应于输入图像中L个可能的灰度值。然而,许多分量是0,具体取决于Sxy的大小。例如,如果邻域大小为3x3且L=256,那么该邻域的直方图的256个分量中仅1和9之间的分量非零。这些非零值将对应S 中的不同灰度数(在3x3区域中可能的不同灰度的最大数是9,最小数是1)。

类似地,邻域中像素的方差由下式给出:
在这里插入图片描述

和全局均值以及方差类似,局部均值(local mean)是邻域Sxy中平均灰度的度量,局部方差(local variance,或标准差standard deviation)是邻域中灰度对比度的度量。

4.3、一个说明问题的案例

下图图3.27(a)显示了一根绕在支架上的钨丝(filament)的 SEM(scanning electron microscope,扫描电子显微镜)图像。图像中央的钨丝及其支架很清楚并很容易分析。
在这里插入图片描述
但在图像a的右部暗侧(dark side),有另一根几乎不能察觉(imperceptible)到钨丝的结构,其大小和特征几乎难以辨认(discernable)。

使用全局直方图均衡增强后得到图像b,可以隐约看到那根隐藏的钨丝,可见效果还是差强人意,同时原图像中亮区域也变化了,这不是期待的理想结果。

在上图a这种特殊情况中,需要增强暗色区域、但同时尽可能保留明亮区域不变,因为明亮区域并不需要增强。

通过对比度操作(contrast manipulation)进行局部增强是解决这种图像中包含部分隐含特征(hidden features)问题的理想方法。
图中c是通过直方图统计进行图像增强后的结果,可以看到另一个钨丝的比较明显的结构。

4.4、直方图统计进行图像增强处理过程

4.4.1、直方图统计图像增强区域候选条件

下面介绍的这种方法能分辨暗区域(dark areas)与亮区域(light area)的不同,只增强暗区域而亮区域保持不变。要达到此目标,需要使得挑选的暗区域满足如下三个条件:

  1. 判断一个区域在点(x,y)是暗还是亮的方法是把局部平均灰度mSxy (Sxy是m的下标,xy是S的下标,下面其他引用类似)与表示全局平均灰度的mG(G是m的下标,下面其他引用类似)进行比较:如果mSxy≤k0*mG,其中k0是一个值小于 1.0的正常数,那么把点(x,y)处的像素为相对全图像属于相对暗区域的像素,将其考虑为处理的候选点;
  2. 由于局部灰度比全局灰度低并不表示该局部细节就一定无法呈现,另外一个关键因素是对比度是否足够,因此要选择对比度低的局部区域进行增强,所以还需要一种度量方法来确定一个区域的对比度是否可作为增强的候选点。此时可以使用:如果σSxy≤k2*σG (其中σG是全局灰度标准差,σSxy是像素邻域灰度的局部方差,k2为正常数),则认为在点(x,y)处的像素是要增强的候选点(a candidate for enhancement)。如果我们的兴趣是增强亮区域,则k2大于1.0,对于暗区增强,则k2小于1.0;
  3. 需要限制能够接受的最低的对比度值(lowest values of contrast),否则该过程会试图增强标准差为零(老猿注:表明灰度值都等于均值)的恒定区域。因此要求使用某个小于等于k2的常数k1,使得k1*σG≤σSxy(老猿注:即像素邻域的局部对比度要大于全局对比度的某个比例,该比例由k1指定),这样就对局部标准差设置了一个较低的限制值。

满足以上局部增强所有3个条件的一个位于点(x,y)处的像素,可简单地通过将像素值乘以一个指定常数E来处理,以便相对于图像的其他部分增大(或减小)其灰度值。不满足增强条件的像素则保持不变。

4.4.2、直方图统计图像增强变换公式

直方图统计图像增强方法的变换公式如下:
令f(x,y)表示在图像任意坐标(x,y)处的像素值,而令g(x,y)表示这些坐标处相应的增强的像素值,则对于x=0,1,2,…,M-1,y=0,1,2,…,N-1,有:
在这里插入图片描述
其中,如前所述,E,k1,k1和k2是规定的参数,mG是输人图像的全局均值,σG是输入图像的标准差。参数mSxy和σSxy分别是局部均值和标准差。按惯例,M和N是图像行和列的维数。

4.4.3、直方图统计图像增强变换公式参数设置的考量

通常,式(3.3-24)中选择参数需要做一些试验,以熟悉一幅给定的图像或一类图像。在这种情况下,常常选择下列数值:E=4.0,k0=0.4,k1=0.02和k2=0.4。

  • 之所以对E选择相对较低的值4.0,原因在于当E与将被增强区域(暗色区域)中的灰度相乘后,结果仍会趋于灰度级的暗端,从而保持图像的视觉平衡
  • 选择的k0值比全局均值的一半略小,因为观察一幅图像时,一般情况下需要增强的区域确实比全局平均值的一半还要暗。类似的分析可指导k1和k2值的选择
  • 这些常数的选择通常并不困难,但这些明确的选择必须以对具体增强问题的逻辑分析为指导
  • 最后,为保留细节和尽量减少计算负担,局部区域Sxy的大小应尽可能小。因此,我们选择大小为3x3的小区域

图3.27(c)显示了使用上面描述的局部统计方法处理的结果。该图像与图3.27(a)中的原图像或图3.27(b)中经直方图均衡后的结果相比,图3.27(c)的右边显示出了明显的细节。观察该例子,暗灯丝中的脊线现在非常清楚。值得注意的是,左侧的亮灰度区域被完整地保留了,这是我们的初始目的之一。

五、小结

本文介绍了使用直方图相关的统计信息进行图像增强的背景和处理方法,使用直方图统计进行图像增强通过挑选局部的对比对度相对全局图像低的暗区域,对这些满足条件的局部区域将其灰度值直接扩大E倍,从而使得整幅图像整体效果没有大的变化的前提下,增强图像暗区域的细节。

更多直方图处理相关知识请参考《数字图像处理》第三章学习总结感悟2:直方图处理》。

更多图像处理请参考专栏OpenCV-Python图形图像处理》及《图像处理基础知识》的介绍。

对于缺乏Python基础的同仁,可以通过老猿的免费专栏《 专栏:Python基础教程目录》从零开始学习Python。

如对文章内容存在疑问或需要相关资料,可在博客评论区留言,或关注:老猿Python 微信公号发消息咨询,可通过扫二维码加微信公众号。
在这里插入图片描述

写博不易,敬请支持:

如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!

关于老猿的付费专栏

  1. 付费专栏《https://blog.csdn.net/laoyuanpython/category_9607725.html 使用PyQt开发图形界面Python应用》专门介绍基于Python的PyQt图形界面开发基础教程,对应文章目录为《 https://blog.csdn.net/LaoYuanPython/article/details/107580932 使用PyQt开发图形界面Python应用专栏目录》;
  2. 付费专栏《https://blog.csdn.net/laoyuanpython/category_10232926.html moviepy音视频开发专栏 )详细介绍moviepy音视频剪辑合成处理的类相关方法及使用相关方法进行相关剪辑合成场景的处理,对应文章目录为《https://blog.csdn.net/LaoYuanPython/article/details/107574583 moviepy音视频开发专栏文章目录》;
  3. 付费专栏《https://blog.csdn.net/laoyuanpython/category_10581071.html OpenCV-Python初学者疑难问题集》为《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python图形图像处理 》的伴生专栏,是笔者对OpenCV-Python图形图像处理学习中遇到的一些问题个人感悟的整合,相关资料基本上都是老猿反复研究的成果,有助于OpenCV-Python初学者比较深入地理解OpenCV,对应文章目录为《https://blog.csdn.net/LaoYuanPython/article/details/109713407 OpenCV-Python初学者疑难问题集专栏目录
  4. 付费专栏《https://blog.csdn.net/laoyuanpython/category_10762553.html Python爬虫入门 》站在一个互联网前端开发小白的角度介绍爬虫开发应知应会内容,包括爬虫入门的基础知识,以及爬取CSDN文章信息、博主信息、给文章点赞、评论等实战内容。

前两个专栏都适合有一定Python基础但无相关知识的小白读者学习,第三个专栏请大家结合《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python图形图像处理 》的学习使用。

对于缺乏Python基础的同仁,可以通过老猿的免费专栏《https://blog.csdn.net/laoyuanpython/category_9831699.html 专栏:Python基础教程目录)从零开始学习Python。

如果有兴趣也愿意支持老猿的读者,欢迎购买付费专栏。

老猿Python,跟老猿学Python!

☞ ░ 前往老猿Python博文目录 https://blog.csdn.net/LaoYuanPython

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数字图像处理:使用直方图统计进行图像增强 的相关文章

  • 概率论--数学期望与方差--协方差(详解)

    目录 数学期望与方差 离散型随机变量的数学期望 注意 连续型随机变量的数学期望 方差 常用随机变量服从的分布 二项分布 正态分布 随机向量与随机变量的独立性 随机向量 随机变量的独立性 协方差 协方差的定义 协方差的意义 协方差矩阵 数学期
  • 随机数与简单的周期运动轨迹图案

    背景 概率论的书上有这样一个示例 设想某人在平面上从零点出发 手持一个均匀四面体 四面分别标有1 2 3 4 每个面代表一个方向 东南西北 他随意抛出后 按照这个方向走一单位长度 若干次后观测他走过的路线的轨迹 由此你有什么联想 联想倒是没
  • Python正则表达式re模块学习遇到的问题

    Python正则表达式处理的组是什么 Python正则表达式处理中的匹配对象是什么 Python匹配对象的groups groupdict和group之间的关系 Python正则表达式re match r a1b2c3 匹配结果为什么是 c
  • 2023 hdu 第10场 1004 Do you Like Interactive Problem

    Problem Description 现在有一个整数 x x x 1 x n
  • 非中心卡方分布

    非中心卡方分布 非中心卡方分布是卡方分布的一般化形式 如果 是 个独立的正态分布的随机变量均值为 方差为 表示为 那么随机变量 为非中心卡方分布 非中心卡方分布涉及两个参数 表示自由度 即 的数目 是和随机变量 相关的参数 由以上参数所定义
  • 零基础学区块链专栏文章目录

    前往老猿Python博文目录 零基础学区块链专栏 为免费专栏 基于老猿自己零基础学习区块链的知识总结 因此文章一定是循序渐进的介绍区块链相关知识 供类似老猿这种有一定计算机基础但区块链知识为零的同好们参考 但老猿介绍的内容都是概念性的基础知
  • moviepy音视频开发:音频合成类CompositeAudioClip介绍

    前往老猿Python博文目录 CompositeAudioClip是AudioClip的直接子类 用于将几个音频剪辑合成为一个音频剪辑 CompositeAudioClip类只有一个构造方法 在构造方法内定义了一个内嵌函数make fram
  • win7电脑最新版微信卡死问题的解决

    最近一段时间无论单位还是家里事情都比较多 导致没有时间学习和写文 排名蹭蹭地往下掉 刚好遇到一个win7版微信卡死的问题 在网上查了下 找到了win10相关的可以参考的解决办法 确实有效 在此介绍一下 一 问题现象 当最小化win7托盘的微
  • 第八章 假设检验

    目录 一 假设检验的基本概念 假设及假设检验的定义 原假设与备择假设 基本思想 接受域与拒绝域 假设检验的分类 两类错误 二 一个正态总体下的参数假设检验 期望 方差的假设检验 三 两个正态总体下的参数假设检验 期望的差异性 方差的差异性的
  • 数字图像处理中一元函数f(x)的二阶导数=f(x+1)+f(x-1)-2f(x)的由来

    在 为什么说数字图像的一阶微分为f x 1 f x 介绍了数字图像处理中一元函数的一阶导数的由来 该一阶导数为 在该书中 同时定义了一元函数f x 其二阶导数的基本定义为 关于这个推导其中有点点小技巧 式3 6 1也可以表述为 f x f
  • 方差分析(ANOVA)的基本原理及R实现(单因素)

    方差分析 analysis of variance ANOVA 几乎是在统计学分析中最常用的方法 通过分析各变量的主效应 main effect 和交互效应 interaction effect 从而发现因变量 dependent vari
  • R大数定律(Python切比雪夫不等式验证大数定律)模拟圆周率

    大数定律 在概率论中 大数定律 LLN 是描述大量执行相同实验的结果的定理 根据规律 大量试验所得结果的平均值应接近预期值 并随着试验次数的增加而趋于接近预期值 LLN 很重要 因为它保证了一些随机事件的平均值的长期稳定结果 例如 虽然赌场
  • 多维随机变量及其分布(四):

    一 二维随机变量及其分布函数 1 二维随机变量 设随机变量 Z X Y 则有 Z X Y 一个随机变量是有两个随机变量决定的 2 联合分布函数的基本性质 单调性 F x y 分别对x 或y是单调不减的 即 对任意固定的y 当 x1 lt x
  • 水下图像采集

    原文 http blog csdn net sunlinyi66 article details 50153875 NASA提供的雾天标准图像 这次终于找到了雾天处理图像来自哪里了 雾天图像 http dragon larc nasa go
  • 【概率】概率论中具有可加性的分布及性质:二项、泊松、正态、卡方

    目录 一 可加性 二 相关结论 三 小结 一 可加性 可加性 指对于某种变换来说 特定的 加法 和该变换的顺序可颠倒而不影响结果 这样一种性质 wiki 分布的可加性 指同一类型分布的独立随机变量和的分布仍属于此类分布 1 注 前提是同类型
  • [基本功]辛普森悖论

    辛普森悖论是指什么现象 当人们尝试探究两种变量 比如新生录取率与性别 是否具有相关性时 会分别对之进行分组研究 然而 在分组比较中都占优势的一方 在总评中有时反而是失势的一方 上表中 商学院女生录取率为49 lt 男生录取率75 法学院女生
  • n行Python代码系列:三行程序将提取HTML中的纯文本信息

    老猿Python博文目录 https blog csdn net LaoYuanPython article details 98245036 一 引言 最近看到好几篇类似 n行Python代码 的博文 看起来还挺不错 简洁 实用 传播了知
  • 因果模型五:用因果的思想优化风控模型——因果正则化评分卡模型

    因果模型五 用因果的思想优化风控模型 因果正则化评分卡模型 一 模型中的因果和相关 二 不可知样本选择偏差 三 因果推断 四 因果与评分卡的融合 五 模型效果评估 5 1 人工合成数据效果测试 5 2 YFCC100M图像数据测试 5 3
  • 2021.9.5笔试题

    第一题 题目 找x y target 数字特别大 可能会溢出 代码 include
  • 条件概率密度

    设二维随机变量 的概率密度为 关于 的边缘概率密度为 若对于固定的 有 则称 为在 条件下的 的条件概率密度 记为

随机推荐

  • 51单片机的步进电机控制系统(仿真+程序+报告+原理图)

    1 主要功能 该系统由AT89C51单片机 数码管模块 步进电机模块 按键模块构成 可实现功能 1 按键控制步进电机正反转 加减速 停止 2 2个发光二极管显示正反转 1位7段LED数码管显示当前转速档位 共9个档位 3 4个红色LED 指
  • java 8 stream 处理对于 List<Map<String,Object>> 数据的分组求和

    java 8 stream 处理对于 List
  • [914]linux如何批量关闭进程

    碰到需要杀掉某一类进程的时候 如何批量杀掉这些进程 使用awk命令是很好的选择 代码 ps ef grep aaa grep v grep awk print kill 9 2 sh ps ef grep aaa grep v grep 这
  • 查看Linux下网卡状态

    ip link 命令 或者 通过mii tool指令 root localhost root mii tool eth0 negotiated 100baseTx FD link ok eth1 no link 或 root localho
  • 网络通信的整个流程

    1 网络通信流程 你的电脑打开浏览器 访问www baidu com 先将请求信息发给了交换机 然后交给了路由器 路由发给DNS服务器 通过DNS协议去找我们要访问的百度的IP地址 查到的百度服务器对应的IP地址之后 路由器通过路由协议找到
  • 【Unity开发】Unity实现英雄联盟选择皮肤效果

    using UnityEngine using System Collections
  • 突破存储边界 赋能开放计算

    2022年8月10日 开放计算中国社区技术峰会 OCP China Day 2022在北京拉开帷幕 开放计算中国社区技术峰会 OCP China Day 是全球开放计算最具规模的生态峰会之一 此次大会以 开放 向未来 绿色 融合 赋能 为主
  • springboot默认数据源究竟是什么?

    springboot默认数据源究竟是什么 springboot默认使用的数据源是druid hikaricp dbcp2还是tomcat pooling 网上很多都说是hikaricp 其实这样的说法是不准确的 根据springboot官方
  • elementui form 正则表达式校验手机号

    data var checkPhone rule value callback gt if value return callback new Error 手机号不能为空 else const reg 1 3 4 5 7 8 0 9 d 8
  • 【Linux】使用Xshell远程链接Linux服务器踩坑合辑

    使用Xshell远程链接Linux服务器踩坑合辑 Xshell远程连接服务器 1 无法解析主机 2 Xshell连接服务器 导入密钥文件失败 Xshell远程连接服务器 Xshell是一个常用的远程连接服务器工具 日常使用十分方便便捷 在连
  • docker在镜像和本地之间拷贝文件

    一 从容器里面拷文件到宿主机 docker cp b76a6e929470 home nacos conf Users king Desktop docker cp 容器ID 要拷贝的文件在容器中的位置 要拷贝到本地宿主机的位置 二 从宿主
  • error: (-215:Assertion failed) !_src.empty() in function ‘cv::cvtColor‘...

    解决 error 215 Assertion failed src empty in function cv cvtColor 报错如下 分析原因 解决方法 代码实现 报错如下 分析原因 可能是照片无效问题 即cv2 imread返回的值为
  • 常用linux命令

    1 创建文件目录 mkdir 2 创建文件 vi filename eg vi test txt 3 移动文件 mv source destination eg mv test txt study 重命名文件 mv test txt hel
  • VScode 黄色波浪线,Import “[module]“ could not be resolvedPylance

    文章目录 问题描述 解决方案 1 修改vscode的python环境 2 修改 vscode seteing json 文件 问题描述 大致的错误截图 第三方包 自己的代码库 导入不成功 显示黄色波浪线 代码自动提示功能受限 解决方案 可按
  • 斯坦福 机器学习-第二章 生成学习算法

    CS229 Lecture notes 原作者 Andrew Ng 吴恩达 翻译 CycleUser Part IV 生成学习算法 Generative Learning algorithms 目前为止 我们讲过的学习算法的模型都是p y
  • java--基础--17.1--线程--实现多线程,线程方法

    java 基础 17 1 线程 实现多线程 线程方法 1 概念 进程 正在运行的程序 每个进程可以由多个线程组成 线程 是进程中的单个顺序控制流 是一条执行路径 并行 指在某一个时间点执行多个任务 并发 指在某一个时间段执行多个任务 2 实
  • 【Android】App开发-动画效果篇

    在我们玩手机的过程中 如果我们点击某一个页面时 会出现一个页面动画加载或者动画效果的现象 现在我们就来看看App开发中是如何实现动画效果的 目录 动画的分类 逐帧动画 补间动画 动画的分类 在常见的app使用的动画中 常见的就是逐帧动画 补
  • confluence安装

    注 安装前确保机器已安装docker 1 执行如下命令一键安装wiki mkdir p data cd data wget http apk lingyun5 com confluence wiki tar gz tar zxvf conf
  • 学习sql,你需要知道这些

    这里写目录标题 数据库的分类 开发式数据库 非开发式数据库 事务 什么是事务 事务的四种特性 死锁 什么是死锁 死锁的四个条件 如何处理死锁 预防死锁 避免死锁 检测死锁 解除死锁 什么是navicat SQL语句 对数据库的操作 对表的操
  • 数字图像处理:使用直方图统计进行图像增强

    一 引言 在 数字图像处理 局部直方图处理 Local Histogram Processing https blog csdn net LaoYuanPython article details 120383974 介绍了基于像素的邻域进