ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

直方图变换

2022-09-11 23:02:07  阅读:139  来源: 互联网

标签:函数 变换 均衡化 leq 直方图 quad mathrm


直方图和累计直方图

直方图公式如下:

\[h(r)=n_k \quad k=0,1,\cdot \cdot \cdot ,L-1 \]

其中\(n_k\)为图像中灰度级为\(r\)的像素个数。累计直方图公式如下:

\[H(r)=\sum_{i=0}^{k} n_i \quad k=0,1,\cdot \cdot \cdot ,L-1 \]

直方图的归一化表示方式为:

\[\begin{array}{l} p\left(r\right)=\frac{n_{k}}{MN} \quad 0 \leqslant s_{k} \leqslant 1\\ \quad \quad\quad\quad\quad\quad k=0,1, \cdots, L-1 \end{array} \]

其中\(MN\)为总像素个数。

直方图均衡化

直方图均衡化主要用于增强动态范围(像素最大值和最小值之间的的范围)偏小图像的对比度(图像中明暗区域最亮的白和最暗的黑之间不同亮度层级的测量),做法就是把图像的直方图变换为均匀分布的形式。变换效果如下:

假设直方图均衡化对应的灰度变换函数为:

\[s=T(r), \quad 0 \leq r \leq L-1 \]

则此变换满足下面三个条件:

  1. \(T(r)\) 在区间 \(0 \leq r \leq L-1\)上是一个严格单调递增函数。(严格单调是为了可以进行反变换)
  2. 对于 \(0 \leq r \leq L-1\) , 有 \(0 \leq T(r) \leq L-1\)。
  3. \(T(r)\) 可以把\(r\)的分布转化为\(s\)的均匀分布。

下面我们就来寻找此变换函数,先考虑连续的函数。

图像的灰度可视为区间 \([0, L-1]\) 内的一个随机变量。令 \(p_{r}(r)\) 和 \(p_{s}(s)\) 表示两幅不同图像中灰度值 \(r\) 和 \(s\) 的 \(PDF\)(概率密度函数 )。 \(p\) 的下标表明 \(p_{r}\) 和 \(p_{s}\) 是不同的函数。概率论的一个基本结论是,若已知 \(p_{r}(r)\) 和 \(T(r)\) , 且 \(T(r)\) 是连续的且在感兴趣的值域上是可微的, 则变换 (映射) 后的变量 \(s\) 的 \(PDF\) 是:

\[p_{s}(s)=p_{r}(r)\left|\frac{\mathrm{d} r}{\mathrm{~d} s}\right| \]

我们考虑如下变换公式:

\[s=T(r)=(L-1) \int_{0}^{r} p_{r}(w) \mathrm{d} w \]

式中, 右侧的积分是随机变量 \(r\) 的累积分布函数 (\(CDF\))。由于 \(PDF\) 总为正, 且函数的积分是函数下方的面积, 因此可以证明上式所示的变换函数满足条件1。这是因为函数下方的面积在 \(r\) 增大时并不减小。当这个公式中的上限是 \(r=L-1\) 时, 积分结果为 1 。因此, \(s\) 的最大值为 \(L-1\) , 所以也满足条件2。

由前式可得:

\[\frac{\mathrm{d} s}{\mathrm{~d} r}=\frac{\mathrm{d} T(r)}{\mathrm{d} r}=(L-1) \frac{\mathrm{d}}{\mathrm{d} r}\left[\int_{0}^{r} p_{r}(w) \mathrm{d} w\right]=(L-1) p_{r}(r) \]

所以:

\[p_{s}(s)=p_{r}(r)\left|\frac{\mathrm{d} r}{\mathrm{~d} s}\right|=p_{r}(r)\left|\frac{1}{(L-1) p_{r}(r)}\right|=\frac{1}{L-1}, 0 \leq s \leq L-1 \]

由于最终得到的\(p_{s}(s)\)是一个均匀分布得概率密度,所以\(s=T(r)=(L-1) \int_{0}^{r} p_{r}(w) \mathrm{d} w\)函数满足条件三,即它就是我们要找的直方图均衡化对应的灰度变换函数。(在离散的情况下,得到的结果往往并不是严格的均匀分布,但问题不大)

直方图均衡化实战

假设一幅大小为 \(64 \times 64\) 像素 (\(M N=4096\) ) 的 3 比特图像 \((L=8)\) 具有下表中的灰度分布, 其中灰度级是区间 \([0, L-1]=[0,7]\) 内的整数。这幅图像的直方图如下图(a)所示。

利用直方图均衡化变换函数进行变换,如:

\[s_{0}=T\left(r_{0}\right)=7 \sum_{j=0}^{0} p_{r}\left(r_{j}\right)=7 p_{r}\left(r_{0}\right)=1.33 \]

并将得到的结果四舍五入取整,最终得到:

\[\begin{array}{ll} s_{0}=1.33 \rightarrow 1 & s_{4}=6.23 \rightarrow 6 \\ s_{1}=3.08 \rightarrow 3 & s_{5}=6.65 \rightarrow 7 \\ s_{2}=4.55 \rightarrow 5 & s_{6}=6.86 \rightarrow 7 \\ s_{3}=5.67 \rightarrow 6 & s_{7}=7.00 \rightarrow 7 \end{array} \]

根据此灰度映射,便可以得到均衡化后的图像。

直方图规定化

直方图均衡化输出的图像具有均匀的直方图,但是有时候我们需要生成具有特定直方图的图像,这就是直方图规定化。在理解了直方图均衡化的基础上,直方图规定化就很简单,主要有三个步骤:

  1. 对原图像进行直方图均衡化,得到一个灰度变换函数\(s=T(r)\).
  2. 对于规定的直方图,我们同样也能得到一个使它均衡化的灰度变换函数\(s=G(z)\).
  3. 将2中得到的变换函数的反函数应用于1中的变换函数,即:\(z=G^{-1}(T(r))\),这就是我们需要的最终的变换函数。

(我们假设\(s\)为具有均匀分布的某图像的灰度)

一般来说,求解\(G^{-1}\)的解析表达式并不容易,但在离散的情况下很容易处理,我们可以遍历所有可能的取值计算出一张由输入到输出的映射表,然后存储起来,根据输出来查找输入值即可。

标签:函数,变换,均衡化,leq,直方图,quad,mathrm
来源: https://www.cnblogs.com/gxxtsz/p/16685080.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有