【OpenCV笔记 14】OpenCV图像增强方法直方图均衡化

直方图均衡化

  图像的直方图是什么?

  • 直方图是图像中像素强度分布的图形表达方式.
  • 它统计了每一个强度值所具有的像素个数.
../../../../../_images/Histogram_Equalization_Theory_0.jpg

  直方图均衡化是什么?

  • 灰度直方图就是在图像中对应某个灰度级的像素的数量值。它可以表示为一个笛卡尔坐标系,其中X坐标是灰度级,Y坐标是该灰度出现的像素数量。直方图均衡化就是一种点运算,处理过程就是将输入图像转换成在每一灰度级上都有相同的像素值,即结果直方图是相对平坦的。
  • 直方图均衡化是通过拉伸像素强度分布范围来增强图像对比度的一种方法.
  • 说得更清楚一些, 以上面的直方图为例, 你可以看到像素主要集中在中间的一些强度值上. 直方图均衡化要做的就是 拉伸 这个范围. 见下面左图: 绿圈圈出了少有像素分布其上的强度值. 对其应用均衡化后, 得到了中间图所示的直方图. 均衡化的图像见下面右图.
../../../../../_images/Histogram_Equalization_Theory_1.jpg

  直方图均衡化是怎样做到的?

  • 均衡化指的是把一个分布 (给定的直方图) 映射 到另一个分布 (一个更宽更统一的强度值分布), 所以强度值分布会在整个范围内展开.

  • 要想实现均衡化的效果, 映射函数应该是一个 累积分布函数 (cdf) (更多细节, 参考*学习OpenCV*). 对于直方图 H(i), 它的 累积分布 H^{'}(i) 是:

    H^{'}(i) = \sum_{0 \le j < i} H(j)

    要使用其作为映射函数, 我们必须对最大值为255 (或者用图像的最大强度值) 的累积分布 H^{'}(i) 进行归一化. 同上例, 累积分布函数为:

    ../../../../../_images/Histogram_Equalization_Theory_2.jpg
  • 最后, 我们使用一个简单的映射过程来获得均衡化后像素的强度值:

    equalized( x, y ) = H^{'}( src(x,y) )


你可能感兴趣的:(OpenCV,C++,OpenCV,3.0,学习笔记,图形,opencv,直方图均衡化)