直方图处理可以增加图像的动态范围,但是直方图处理针对的是图像整体偏暗偏亮(注意是整体),若一幅图像即存在偏暗又存在偏亮的区域,此时想要增加图像的动态范围,不宜采用直方图处理。(例如想要增加偏暗区域的动态范围,可以采用幂律变换,当 γ &lt; 1 \gamma&lt;1 γ<1时,偏暗区域的动态范围增加)

直方图均衡化通过变换函数(累积分布函数)获得一个具有均匀分布直方图的输出图像。而直方图匹配(histogram matching or histogram specification)则将输入图像转换为具有指定直方图的输出图像。

为了找到输入到输出的变换函数,我们可以利用直方图均衡化函数。假设输入图像的概率密度函数为 p r ( r ) p_r(r) pr​(r),输出图像的概率密度函数为 p z ( z ) p_z(z) pz​(z)。对输入图像作直方图均衡化:
s = T ( r ) = ( L − 1 ) ∫ 0 r p r ( w ) d w s=T(r)=(L-1) \int_0^r p_r(w)dw s=T(r)=(L−1)∫0r​pr​(w)dw

对输出图像作直方图均衡化:
G ( z ) = ( L − 1 ) ∫ 0 z p z ( v ) d v = s G(z)=(L-1) \int_0^z p_z(v)dv=s G(z)=(L−1)∫0z​pz​(v)dv=s

理论上,对同一内容的图像作均衡化其结果应该是相同的,即 T ( r ) = G ( z ) = s T(r)=G(z)=s T(r)=G(z)=s。
因此,
z = G − 1 ( s ) = G − 1 ( T ( r ) ) z=G^{-1}(s)= G^{-1}(T(r)) z=G−1(s)=G−1(T(r))

其离散形式为:
z q = G − 1 ( s k ) = G − 1 ( T ( r k ) ) z_q=G^{-1}(s_k)=G^{-1}(T(r_k)) zq​=G−1(sk​)=G−1(T(rk​))

即先对输入图像进行直方图均衡化,将均衡化后的图像作为输出图像均衡化结果,然后对其作输出图像均衡化的逆变换获得输出图像。

在实际使用过程中,我们不需要对 G G G求出其逆变换的确切形式。事实上,在对图像进行直方图均衡化的过程中,由于我们处理的是离散值,最终会获得一个原图像像素值 z q z_q zq​与均衡化图像像素值 s k s_k sk​一一对应的表格,在求逆变换的时候,只需要查询该表,就能找到 s k s_k sk​对应的原图像像素值 z k z_k zk​。需要注意的是,若存在多个 z q z_q zq​与 s k s_k sk​对应,我们通常取最小值。

comparison between 直方图均衡化和直方图匹配(p206):

The image is characterized by large dark areas, resulting in a histogram with a large concentration of pixels in the dark end of the intensity scale. There is an object in the background, but it is hard to discern what it is. We should be able to see the details in the dark area by expanding the histogram using histogram equalization. If the objective were simply to reveal the content hidden in the dark areas of the image, we would be finished. However, suppose that the image is going to be used for publication in a glossy magazine. The image we just obtained is much too noisy. The reason is that a very narrow range of the darkest end of the intensity scale was expanded into a much higher range of intensity values in the output image. Thus, histogram equalization in this case expanded the noisiest end of the intensity scale. What we need is a transformation that expands the low end of the scale, but not quite as much. This is typical of instances in which histogram specification can be quite useful.

总之,直方图均衡化可以增强对比度,如果想看清楚原图像较黑的地方(反映在直方图上就是亮度较低的地方呈现特别尖锐的山峰),通过直方图均衡化能呈现更多的黑色区域的细节。但是直方图均衡化将原来直方图上较狭窄的低亮度值区域扩展到较大的范围,容易产生更多的噪声(Typically, the darkest areas of an image are its noisiest due to imaging sensor limitations at low light levels.)。通过直方图匹配指定直方图的形状,能够缓解直方图均衡化所带来的问题。

精确直方图规定化(exact histogram specification)

由于处理的是离散值以及近似的影响,直方图均衡化所得到的直方图并不是精确的均匀分布。同理,上述的直方图匹配所得到的直方图也与指定的直方图间存在差异。为了获得精确的指定直方图,需要进行精确直方图匹配(规定化)。

这里简单讲一下原理,详情见P209。

精确直方图规定化所指定的直方图以未归一化直方图(即unnormalized histogram,使用亮度值出现的次数而不是频率)的形式给出,且要满足条件:
∑ j = 0 L − 1 h ( j ) = M N \sum_{j=0}^{L-1} h(j)=MN j=0∑L−1​h(j)=MN
然后选取 K K K个邻域,对图像中的每个像素计算邻域平均,则每个像素我们可以获得一个 K K K维的向量,其中向量的第 i i i个元素为第 i i i个邻域所获得的平均值。
对于图像的 M N MN MN个像素,我们可以获得一个 M N × K MN×K MN×K维的数组,其中第 j j j行是图像的第 i i i个像素(将数组进行按列线性索引,如原来 ( x , y ) (x,y) (x,y)的元素对应于 α = M y + x \alpha=My+x α=My+x,下标从0开始)所对应的 K K K维的邻域平均值向量。然后对这个 M N MN MN个行向量按字典序排序(MATLAB函数sortrows),获得对应的 M N MN MN个像素的排序。
然后对这个新的像素排序按指定的直方图分组,比如第 i i i组含 h ( i ) h(i) h(i)个像素,并为这第 i i i组的所有像素分配像素值 i i i。最后获得精确直方图规定化的图像

关于精确直方图规定化的作用: 事实上,采用精确直方图规定化获得精确均匀分布直方图,其视觉效果与直方图均衡化获得近似均匀分布直方图的视觉效果一样。那么精确直方图规定化的用处是确定直方图均衡化确实有用,然后我们就可以用更加简单的方式获得同样的处理效果啦。(毕竟精确直方图规定化确实比较繁琐。。。。)

均衡化有时候会失效:(P218) 实验表明,如果图像存在一大片连续的暗区域,采用直方图均衡化并不能获得很好的效果。给出的一种方法是,采用掩模,将亮度值为0的区域去除掉,然后对剩下的区域采用均衡化。另一种方法是,指定直方图,然后。。。获得了更好的效果。(关于怎么指定的???)

局部直方图处理

直方图匹配(直方图规定化)相关推荐

  1. 第3章 Python 数字图像处理(DIP) - 灰度变换与空间滤波9 - 直方图处理 - 直方图匹配(规定化)灰度图像,彩色图像都适用

    直方图匹配(规定化) 连续灰度 s=T(r)=(L−1)∫0rpr(w)dw(3.17)s = T(r) = (L-1) \int_{0}^{r} p_r(w) \text{d} w \tag{3.1 ...

  2. c++ opencv 图像处理:直方图处理(直方图均衡化,直方图匹配(规定化))

    文章目录 前言 一.直方图(histogram) 二.直方图处理 1.直方图均衡化 2.直方图匹配(规定化) 三.opencv函数总结 1.equalizeHist图像均衡化 2.calcHist获取 ...

  3. 数字图像处理:直方图匹配或规定化Histogram Matching (Specification)原理及感悟

    ☞ ░ 前往老猿Python博文目录 https://blog.csdn.net/LaoYuanPython ░ 注意:本文是<数字图像直方图匹配或规定化Histogram Matching ( ...

  4. 在OpenCV下写的直方图匹配(直方图规定化)C++源码!

    直方图匹配的原理就不多作解释了,我曾经还将MATLAB源码改写成过C源码,详情可见我的博文 根据MATLAB的histeq函数改写的运行在OpenCV下的直方图规定化C源码! 本文已转移到 https ...

  5. 直方图匹配(规定化)

    直方图匹配 直方图均衡技术,可以自动地确定变换函数,而产生具有均匀直方图的输出图像.但是不同图像出现的问题不尽相同,有时根据图像的某种缺陷,我们需要得到处理后具有特殊直方图的图像.均衡化这样单一的方法 ...

  6. 直方图规定化(直方图匹配)

    在介绍直方图规定化之前,先介绍一下统计直方图和累积直方图.参考自:http://blog.csdn.net/tkp2014/article/details/40151515 对颜色特征的表达方式有许多 ...

  7. 直方图应用:直方图均衡化,直方图匹配,对比直方图

    直方图均衡化 直方图均衡化(Histogram Equalization)是直方图最典型的应用,是图像点运算的一种.对于一幅输入图像,通过运算产生一幅输出图像,点运算是指输出图像的每个像素点的灰度值由 ...

  8. 【OpenCV】直方图应用:直方图均衡化,直方图匹配,对比直方图

    本文链接:https://blog.csdn.net/xiaowei_cqu/article/details/7606607                                       ...

  9. 直方图均衡化和直方图匹配

    一.直方图均衡化          直方图均衡化,这样柱条具有均匀分布的高度,平均利用了可用的亮度级,从而能在所有的亮度级上较好地展现细节信息. 直方图均衡化算法分为三个步骤, •第一步是统计直方图每 ...

最新文章

  1. 9000亿投资浪费在数字化转型,罪魁祸首在DevOps?
  2. linux 查看锁机时间,3分钟短文|Linux 登陆痕迹查看,last 锁定所有可疑对象
  3. [NOIP2016] 组合数问题
  4. 海纳百川、有容乃大:从4个角度解读京东3C新方向
  5. java线程池 锁_java多线程——锁
  6. 四种依恋类型_依恋关系的研究
  7. 水环境模型与大数据技术融合研究
  8. 一段最短的代码,用上js所有关键字
  9. HDU-ACM-2041
  10. AI界的革命!终于可以自动标注了!
  11. Rust : 独一无二的Some
  12. 牛顿插值算法MATLAB实现
  13. 成倍提升ORM系统SQL性能的一个方法
  14. 量子计算机大致原理,通俗简介量子计算机原理
  15. 打印程序在计算机上的应用程序,电脑中打印机后台程序服务没有运行怎么解决...
  16. CUDA-CODE3-查询GPU设备属性
  17. 今日卢布美元汇率换算
  18. 达内python第一次月考题目_月考来临!第一次月考远比你想象的重要!
  19. MTK OTA更新方法
  20. 在 Linux 中查找用户帐户和登录详细信息的 11 种方法

热门文章

  1. 英国政府资助!Wave Photonics领导光量子集成电路封装项目
  2. 中国儿童乐园行业市场建设现状分析与营销策略研究报告2022版
  3. VIM for windows
  4. unity3d音频基础知识
  5. 关于ETD.sys的系统蓝屏问题的解决
  6. (最小生成树)Codeforces Educational Codeforces Round 9 Magic Matrix
  7. 人工智能专业主要学习哪些课程,目前的就业方向是什么?
  8. Java核心技术 卷1 基础知识 学习笔记——第三章 java的基本程序设计结构
  9. jQuery中的end()的用法与定义
  10. RK3399平台开发系列讲解(应用开发篇)1.12、RTC闹钟唤醒