查看“︁直方图均衡化”︁的源代码
←
直方图均衡化
跳转到导航
跳转到搜索
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
{{noteTA |G1=Communication |1=zh-hans:灰度图像; zh-hant:灰階影像; |2=zh-hans:灰度; zh-hant:灰階; }} '''直方图均衡化'''是[[图像处理]]领域中利用[[图像]][[直方图]]对[[对比度]]进行调整的方法。 [[Image:Histogrammeinebnung.png|thumb|right|300px|alt=一个除了包含中间区域外都为零的直方图通过拉伸峰值区域填充到整个x轴转化。|均衡化前后的图像的直方图。]] ==纵览== 这种方法通常用来增加许多图像的全局[[对比度]],尤其是当图像的有用数据的对比度相当接近的时候。通过这种方法,[[亮度]]可以更好地在直方图上分布。这样就可以用于增强局部的对比度而不影响整体的对比度,直方图均衡化通过有效地扩展常用的亮度来实现这种功能。 这种方法对于背景和前景都太亮或者太暗的图像非常有用,这种方法尤其是可以带来[[X光]]图像中更好的[[骨骼]]结构显示以及曝光过度或者曝光不足[[照片]]中更好的细节。这种方法的一个主要优势是它是一个相当直观的技术并且是[[可逆]]操作,如果已知均衡化[[函数]],那么就可以恢复原始的直方图,并且计算量也不大。这种方法的一个缺点是它对处理的数据不加选择,它可能会增加背景[[噪声]]的对比度并且降低有用[[信号]]的对比度。 ==实现== 考虑一个离散的[[灰度图像]] {''x''},让 ''n<sub>i</sub>'' 表示灰度 ''i'' 出现的次数,这样图像中灰度为 ''i'' 的像素的出现概率是 :<math>\ p_x(i) = p(x=i) = \frac{n_i}{n},\quad 0 \le i < L </math> ''L'' 是图像中所有的灰度数(通常为256),<math>n</math> 是图像中所有的像素-{}-数,<math>p_x(i)</math> 实际上是像素值为 ''i'' 的图像的直方图,归一化到 [0,1]。 把对应于 ''p<sub>x</sub>'' 的[[累积分布函数]],定义为: :<math>\ cdf_x(i) = \sum_{j=0}^i p_x(j)</math>, 是图像的累计归一化直方图。 我们创建一个形式为 ''y'' = ''T''(''x'') 的变换,对于原始图像中的每个值它就产生一个 <math>y</math>,这样 <math>y</math> 的累计概率函数就可以在所有值范围内进行线性化,转换公式定义为: :<math>\ cdf_y(i) = iK</math> 对于常数 ''K''。CDF的性质允许我们做这样的变换(参见逆分布函数);定义为 :<math>\ cdf_y(y^\prime) = cdf_y(T(k)) = cdf_x(k)</math> 其中 ''k'' 属于区间 [0,L)。注意 T 将不同的等级映射到 <math>{0..1}</math> 域,为了将这些值映射回它们最初的域,需要在结果上应用下面的简单变换: :<math>\ y^\prime = y \cdot(\max\{x\} - \min\{x\}) + \min\{x\}</math> 上面描述了灰度图像上使用直方图均衡化的方法,但是通过将这种方法分别用于图像[[RGB]]颜色值的红色、绿色和蓝色分量,从而也可以对彩色图像进行处理。 == 彩色图像直方图均衡化 == 实际上,对彩色分量rgb分别做均衡化,会产生奇异的点,图像不和谐。一般采用的是用[[HSL和HSV色彩空间]]进行亮度的均衡即可。 ==例子== 下面的这个例子是一个8位的8×8灰度图像: :<math> \begin{bmatrix} 52 & 55 & 61 & 66 & 70 & 61 & 64 & 73 \\ 63 & 59 & 55 & 90 & 109 & 85 & 69 & 72 \\ 62 & 59 & 68 & 113 & 144 & 104 & 66 & 73 \\ 63 & 58 & 71 & 122 & 154 & 106 & 70 & 69 \\ 67 & 61 & 68 & 104 & 126 & 88 & 68 & 70 \\ 79 & 65 & 60 & 70 & 77 & 68 & 58 & 75 \\ 85 & 71 & 64 & 59 & 55 & 61 & 65 & 83 \\ 87 & 79 & 69 & 68 & 65 & 76 & 78 & 94 \end{bmatrix} </math> 该灰度图像的灰度值出现次数如下表所示,为了简化表格,出现次数为0的值已经被省略 :{| class="wikitable" |- ! 灰度值 !! 出现次数 ! 灰度值 !! 出现次数 ! 灰度值 !! 出现次数 ! 灰度值 !! 出现次数 ! 灰度值 !! 出现次数 |- | 52 || 1 | 64 || 2 | 72 || 1 | 85 || 2 | 113 || 1 |- | 55 || 3 | 65 || 3 | 73 || 2 | 87 || 1 | 122 || 1 |- | 58 || 2 | 66 || 2 | 75 || 1 | 88 || 1 | 126 || 1 |- | 59 || 3 | 67 || 1 | 76 || 1 | 90 || 1 | 144 || 1 |- | 60 || 1 | 68 || 5 | 77 || 1 | 94 || 1 | 154 || 1 |- | 61 || 4 | 69 || 3 | 78 || 1 | 104 || 2 |rowspan="3" colspan="2"| |- | 62 || 1 | 70 || 4 | 79 || 2 | 106 || 1 |- | 63 || 2 | 71 || 2 | 83 || 1 | 109 || 1 |} [[累积分布函数]](cdf)如下所示,与上一表格类似,为了简化,累积分布函数值为0的灰度值已经被省略 :{| class="wikitable" |- ! 灰度值 !! cdf ! 灰度值 !! cdf ! 灰度值 !! cdf ! 灰度值 !! cdf ! 灰度值 !! cdf |- | 52 || 1 | 64 || 19 | 72 || 40 | 85 || 51 | 113 || 60 |- | 55 || 4 | 65 || 22 | 73 || 42 | 87 || 52 | 122 || 61 |- | 58 || 6 | 66 || 24 | 75 || 43 | 88 || 53 | 126 || 62 |- | 59 || 9 | 67 || 25 | 76 || 44 | 90 || 54 | 144 || 63 |- | 60 || 10 | 68 || 30 | 77 || 45 | 94 || 55 | 154 || 64 |- | 61 || 14 | 69 || 33 | 78 || 46 | 104 || 57 |rowspan="3" colspan="2"| |- | 62 || 15 | 70 || 37 | 79 || 48 | 106 || 58 |- | 63 || 17 | 71 || 39 | 83 || 49 | 109 || 59 |} 如表格所示,灰度值最小值为52,最大值为154. 通常,直方图均衡化算式如下: :<math> h(v) = \mathrm{round} \left( \frac {cdf(v) - cdf_{min}} {cdf_{max} - cdf_{min}} \times (L - 1) \right) </math> 累积分布函数最小值cdf<sub>min</sub>在本例中为1,最大值cdf<sub>max</sub>在本例中为64,而L则是灰度级数(如本例中,图像为8位深度,则灰度级数共有2^8=256级数,这也是最常见的灰度级数).则对于本例的直方图均衡化算式为: :<math> h(v) = \mathrm{round} \left( \frac {cdf(v) - 1} {63} \times 255 \right) </math> 例如,灰度为78的像素的累积分布函数为46,均衡化后,灰度值变化为: :<math> h(78) = \mathrm{round} \left( \frac {46 - 1} {63} \times 255 \right) = \mathrm{round} \left( 0.714286 \times 255 \right) = 182 </math> 直方图均衡化后,图像的灰度值变化如下表所示: :<math> \begin{bmatrix} 0 & 12 & 53 & 93 & 146 & 53 & 73 & 166 \\ 65 & 32 & 12 & 215 & 235 & 202 & 130 & 158 \\ 57 & 32 & 117 & 239 & 251 & 227 & 93 & 166 \\ 65 & 20 & 154 & 243 & 255 & 231 & 146 & 130 \\ 97 & 53 & 117 & 227 & 247 & 210 & 117 & 146 \\ 190 & 85 & 36 & 146 & 178 & 117 & 20 & 170 \\ 202 & 154 & 73 & 32 & 12 & 53 & 85 & 194 \\ 206 & 190 & 130 & 117 & 85 & 174 & 182 & 219 \end{bmatrix} </math> 注意:原最小灰度值52变为了0,而最大灰度值154变为了255 :{| |- | [[Image:JPEG example subimage.svg|200px]] | [[Image:JPEG example subimage - equalized.svg|200px]] |- |align="center"| 原始图像 |align="center"| 均衡化后图像 |} ===全尺寸图像=== {|class="wikitable"|align="left" |- valign="top" | |[[Image:Unequalized Hawkes Bay NZ.jpg|thumb|300px|未经均衡化的图像]] |[[Image:Unequalized Histogram.svg|thumb|300px|相应的直方图(红)和累积直方图(黑)]] |- valign="top" | |[[Image:Equalized Hawkes Bay NZ.jpg|thumb|300px|经过均衡化的同一幅图像]] |[[Image:Equalized Histogram.svg|thumb|300px|相应的直方图(红)和累积直方图(黑)]] |} == 参见 == * {{le|直方图匹配|Histogram matching}} * [[自适应直方图均衡化]] * {{le|规定化 (图像处理)|Normalization (image processing)}} ==参考文献== *Acharya and Ray, ''Image Processing: Principles and Applications'', Wiley-Interscience 2005 ISBN 0471719986 *Russ, ''The Image Processing Handbook: Fourth Edition'', CRC 2002 ISBN 0849325323 ==外部链接== *[http://www.generation5.org/content/2004/histogramEqualization.asp "Histogram Equalization" at Generation5] {{Webarchive|url=https://archive.today/20160516012012/http://www.generation5.org/content/2004/histogramEqualization.asp |date=2016-05-16 }} *[http://www.kamlex.com/index.php?option=com_content&view=article&id=54 Free histogram equalization plugin for Adobe Photoshop and PSP (broken link)] {{Wayback|url=http://www.kamlex.com/index.php?option=com_content&view=article&id=54 |date=20171105053800 }} *[http://fourier.eng.hmc.edu/e161/lectures/contrast_transform/node2.html Page by Ruye Wang with good explanation and pseudo-code] {{Wayback|url=http://fourier.eng.hmc.edu/e161/lectures/contrast_transform/node2.html |date=20200510233813 }} [[Category:图像处理]]
该页面使用的模板:
Template:Le
(
查看源代码
)
Template:NoteTA
(
查看源代码
)
Template:Wayback
(
查看源代码
)
Template:Webarchive
(
查看源代码
)
返回
直方图均衡化
。
导航菜单
个人工具
登录
命名空间
页面
讨论
不转换
查看
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
特殊页面
工具
链入页面
相关更改
页面信息