• 周一. 4 月 13th, 2026

H60430-0413-图像数据预处理之图像均衡化

4 月 13, 2026

完成直方图均衡化

已知:

  • 图像大小:64×6464\times 64
  • 总像素数: MN=64×64=4096MN=64×64=4096
  • 灰度级数:3比特,所以 L=23=8L = 2^3 = 8灰度级为:0,1,2,3,4,5,6,70,1,2,3,4,5,6,7

一、先写出原始归一化直方图

你已经给出了:pr(rk)=nkMNp_r(r_k)=\frac{n_k}{MN}

rkr_knkn_kpr(rk)p_r(r_k)
07900.19
110230.25
28500.21
36560.16
43290.08
52450.06
61220.03
7810.02

二、求累计分布函数 CDF

直方图均衡化的核心就是先求累计概率:sk=T(rk)=(L1)j=0kpr(rj)s_k = T(r_k) = (L-1)\sum_{j=0}^{k} p_r(r_j)

因为这里 L=8L=8L=8,所以:L1=7L-1=7

先算累计概率:

rkr_kpr(rk)p_r(r_k)累计概率 j=0kpr(rj)\sum_{j=0}^{k} p_r(r_j)
00.190.19
10.250.44
20.210.65
30.160.81
40.080.89
50.060.95
60.030.98
70.021.00

三、代入均衡化变换公式

计算:sk=7×CDFs_k = 7 \times \text{CDF}

得到:

rkr_kCDF7×CDF7\times \text{CDF}
00.191.33
10.443.08
20.654.55
30.815.67
40.896.23
50.956.65
60.986.86
71.007.00

四、把新灰度级量化为整数

因为输出仍然是3比特图像,所以新灰度也只能取:0,1,2,3,4,5,6,70,1,2,3,4,5,6,7

通常教材里会采用四舍五入sk=round(7×CDF)s_k = \text{round}(7\times \text{CDF})

于是得到映射关系:

原灰度 rkr_k7×CDF7\times \text{CDF}新灰度 sks_k
01.331
13.083
24.555
35.676
46.236
56.657
66.867
77.007

所以均衡化映射函数为:01,13,25,36,46,57,67,770→1,1→3,2→5,3→6,4→6,5→7,6→7,7→7


五、得到均衡化后的直方图

现在把原来每个灰度级的像素数,按照新映射加到对应的新灰度级上。

映射汇总

  • 原来灰度 0 的 790 个像素 → 新灰度 1
  • 原来灰度 1 的 1023 个像素 → 新灰度 3
  • 原来灰度 2 的 850 个像素 → 新灰度 5
  • 原来灰度 3 的 656 个像素 → 新灰度 6
  • 原来灰度 4 的 329 个像素 → 新灰度 6
  • 原来灰度 5 的 245 个像素 → 新灰度 7
  • 原来灰度 6 的 122 个像素 → 新灰度 7
  • 原来灰度 7 的 81 个像素 → 新灰度 7

于是均衡化后的像素数为:

新灰度级像素数
00
1790
20
31023
40
5850
6656+329=985
7245+122+81=448

六、写出均衡化后的归一化直方图

再除以总像素数 40964096

新灰度级像素数概率
000.0000
17900.1929
200.0000
310230.2498
400.0000
58500.2075
69850.2405
74480.1094

七、最后结果怎么写

如果你要把答案完整写成作业格式,可以直接写成下面这样:

1. 均衡化变换函数

sk=round[(L1)j=0kpr(rj)]=round[7j=0kpr(rj)]s_k = \text{round}\left[(L-1)\sum_{j=0}^{k} p_r(r_j)\right] = \text{round}\left[7\sum_{j=0}^{k} p_r(r_j)\right]

2. CDF计算结果

[0.19, 0.44, 0.65, 0.81, 0.89, 0.95, 0.98, 1.00][0.19,\ 0.44,\ 0.65,\ 0.81,\ 0.89,\ 0.95,\ 0.98,\ 1.00]

3. 灰度映射关系

01, 13, 25, 36, 46, 57, 67, 770\to1,\ 1\to3,\ 2\to5,\ 3\to6,\ 4\to6,\ 5\to7,\ 6\to7,\ 7\to7

4. 均衡化后直方图

[0, 790, 0, 1023, 0, 850, 985, 448][0,\ 790,\ 0,\ 1023,\ 0,\ 850,\ 985,\ 448]

5. 均衡化后归一化直方图

[0, 0.1929, 0, 0.2498, 0, 0.2075, 0.2405, 0.1094][0,\ 0.1929,\ 0,\ 0.2498,\ 0,\ 0.2075,\ 0.2405,\ 0.1094]


八、为什么均衡化后不一定“完全平坦”?

这是很多人第一次学时会疑惑的点。

原因是:

  • 图像灰度级只有 8级
  • 像素数是离散的
  • 映射后多个原灰度可能会落到同一个新灰度级

所以均衡化后的直方图通常只是比原来更均匀,而不是绝对每级都一样高。

这很正常,不是你算错了。


九、补充:有些教材会用“向下取整”

有的书会写成:sk=7j=0kpr(rj)s_k = \left\lfloor 7 \sum_{j=0}^{k} p_r(r_j) \right\rfloor

如果用向下取整,结果会稍有不同。
但大多数课堂题、作业题更常见的是四舍五入。你交作业前最好看看老师课件上的定义是哪一种。


十、这道题最简答案版

你考试时如果时间紧,可以直接写:CDF=[0.19,0.44,0.65,0.81,0.89,0.95,0.98,1.00]\text{CDF}=[0.19,0.44,0.65,0.81,0.89,0.95,0.98,1.00]sk=round(7CDF)=[1,3,5,6,6,7,7,7]s_k=\text{round}(7\cdot \text{CDF})=[1,3,5,6,6,7,7,7]

所以映射关系为:01, 13, 25, 36, 46, 57, 67, 770\to1,\ 1\to3,\ 2\to5,\ 3\to6,\ 4\to6,\ 5\to7,\ 6\to7,\ 7\to7

均衡化后各灰度级像素数为:ns=[0,790,0,1023,0,850,985,448]n_s=[0,790,0,1023,0,850,985,448]



微信扫描下方的二维码阅读本文

Avatar photo

李星海

简介: 2025-今 浙江农林大学 | 2022-今 广州白蓝碗蛋科技有限公司 | 2022-2024 广州商学院 | 2019-2022 广东工贸职业技术学院 | 服务宗旨:心始至客,行亦致远。