前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >做人,均衡点更好~

做人,均衡点更好~

作者头像
灿视学长
发布2021-05-28 15:01:29
5010
发布2021-05-28 15:01:29
举报
文章被收录于专栏:灿视学长灿视学长

各位大家好,我是灿视,今天是一篇传统图像处理,直方图均衡

做人,有时候像图像一样,只有均衡了,才能更好发展!

看文章之前,别忘了关注我们,在我们这里,有你所需要的干货哦!

百面计算机视觉汇总链接

《百面计算机视觉汇总,看过来!》

直方图均衡化,可以对在不同的光线条件下拍摄不同的图片进行均衡化处理,使得这些图片具有大致相同的光照条件。因此,我们可以用在训练模型之前,对图像进行对预处理。

直方图均衡

1. 直方图与对比度

首先,我们看下面的图像:

左列为原图,我们在观看的时候,感受很差。为什么很差呢?因为前景(关键区域)与背景太相似,无法很好的得到前景的信息。这就是表明,这些图像的对比度小,视觉体验很差

其中,对比度是由两个相邻区域的亮度差异产生的

对比度是使一个物体与其他物体区别开来的视觉特性上的差异。在视觉感知中,对比度是由物体与其他物体的颜色和亮度差异决定的,而我们的视觉系统对对比度比对绝对亮度更敏感。那么,如何量化一个图像中的对比度呢?我们先了解下直方图, 如右图。

通过直方图我们可以看到各个灰度级的像素个数,即像素的分布情况。如果图像的大部分的像素都集中在直方图的某个范围,就表示图像中的大部分像素的灰度值差别很小,无法很好地进行分辨图像中的物体。

如原图像的像素值介于

5

~

10

之间(对比度是

10/5=2

)现将其映射到整个区域的输出图像到

0

~

255

(对比度是

255/1=255

),由此可见,对比度得到了很大的提升。

2. 直方图的定义

图像的直方图:反应图像强度分布的总体概念。宽泛的来说直方图给出了图像对比度亮度强度分布信息。其中,强度就是一幅图像的像素取值,如

[0, 255]

其中,公式表示如下:

h\left(r_{k}\right)=n_{k}

其中,

n_{k}

是图像中灰度级为

r_{k}

的像素个数。

r_{k}

是第

k

个灰度级,

k=0,1,2…L-1

。由于

r_{k}

的增量是

1

,直方图可以表示为

p(k)=n_{k}

。即,图像中不同灰度级像素出现的次数。

概括来说,直方图就是横坐标表示成像素值,纵坐标表示各个像素值的个数的图。

直方图举例

3.直方图均衡化的引入

若一幅图像的像素倾向于占据整个可能的灰度级并且分布均匀,则该图像有较高的对比度并且图像展示效果会相对好,于是便引出图像直方图均衡化,对图像会有很强的增强效果。

3.1 直方图归一化

先了解直方图归一化的概念,公式为:

p(r_{k})=n_{k}/n
n

是图像的像素总数(如一幅

32*32

的图像,像素总数就是

1024

)。

n_{k}

是图像中灰度级为

r_{k}

的像素个数

r_{k}

是第

k

个灰度级,

k = 0,1,2,…,L-1

因此,该函数主要有以下几个特性:

  1. 使函数值压缩到[0,1]区间。
  2. 给出灰度级
r_{k}

在图像中出现的概率密度统计。

3.2 直方图均衡化

直方图均衡化是建立在直方图归一化的基础之上。直方图均衡化的公式如下所示:

s_{k}=\sum_{j=0}^{k}\frac{n_{j}}{n}, k=0, 1, 2,,,L-1

注:

n

是图像中像素的总和

n_{j}

是当前灰度级的像素个数

L

是图像中可能的灰度级总数

其中,直方图均衡化是采用的灰度级变换:

s = T(r)

,目的是欲将原始图的直方图变换为均匀分布的形式,这样就增加了像素灰度值的动态范围,从而达到增强图像整体对比度的效果

代码如下:

代码语言:javascript
复制
import cv2
import numpy as np
import matplotlib.pyplot as plt

if __name__ == "__main__":
    # 读取图像并转换为灰度图
    img = cv2.imread(r'./imgs/boy.png')
    # 图像的灰度级范围是0~255
    # grayHist = cv2.calcHist([img], [0], None, [256], [0, 256])
    (b, g, r) = cv2.split(img)
    bH = cv2.equalizeHist(b)
    gH = cv2.equalizeHist(g)
    rH = cv2.equalizeHist(r)
    # 合并每一个通道
    result = cv2.merge((bH, gH, rH))
    res = np.hstack((img, result))
    cv2.imshow("dst", res)
    cv2.waitKey(0)
    

直方图均衡化举例

其中关于像素的统计量如下:

直方图统计对比

4. 小结

目前,基本的图像直方图均衡已经说完了,但是如果我们仔细看上图,会发现均衡化处理后对比度大大增强了,但是这个boy好像有点太亮了,这是因为这个直方图均衡化操作是对全局进行均衡化,直方图覆盖的范围太大,反而会丢失boy的一些信息。

因此,明天我们会继续沿着直方图均衡引入自适应直方图均衡化(AHE) 以及 限制对比度自适应直方图均衡化(CLAHE) 等直方图均衡化算法。

5. 参考

  1. https://blog.csdn.net/IT_charge/article/details/105560087
  2. https://zhuanlan.zhihu.com/p/98541241
  3. https://blog.csdn.net/rocling/article/details/104559472

其它干货

- END -

大家好,我是灿视。目前是位算法工程师 + 创业者 + 奶爸的时间管理者!

我曾在19,20年联合了各大厂面试官,连续推出两版《百面计算机视觉》,受到了广泛好评,帮助了数百位同学们斩获了BAT等大小厂算法Offer。现在,我们继续出发,持续更新最强算法面经。

我曾经花了4个月,跨专业从双非上岸华五软工硕士,也从不会编程到进入到百度与腾讯实习。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-05-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 灿视学长 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 百面计算机视觉汇总链接
  • 直方图均衡
    • 1. 直方图与对比度
      • 2. 直方图的定义
        • 3.直方图均衡化的引入
          • 3.1 直方图归一化
          • 3.2 直方图均衡化
        • 4. 小结
          • 5. 参考
            • 其它干货
            相关产品与服务
            图像处理
            图像处理基于腾讯云深度学习等人工智能技术,提供综合性的图像优化处理服务,包括图像质量评估、图像清晰度增强、图像智能裁剪等。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档