图像处理入门系列之对比度增强

1.直方图

直方图的x轴是灰度值,范围为0~255,y轴为图像中每一个灰度值像素点的个数。直方图统计了图像中每一个灰度值所具有的像素个数,使我们对于整副图像的灰度分布有了一个更加直观的了解。

1.1直方图均衡(HE)

若一副图像整体太亮或太暗,前景和背景对比度不强给人感觉不够色彩分明,则图像中的灰度值大量集中在某个范围内。此时可以使用直方图均衡化来使图像灰度值分布更加均匀,以此达到增强图像对比度的目的。缺点是该方法对处理的数据不加选择,可能会降低有用区域的对比度或增加背景噪声的对比度。直方图均衡化是通过累积分布函数(CDF)实现图像灰度值的转换。在opencv中可以使用cv2.equalizeHist函数对图片进行直方图均衡化。传入的参数即为要进行均衡化的图像。

1.2自适应直方图均衡化(AHE)

传统的直方图均衡化(HE)是在整副图像上进行均衡化计算,这样对于图像中有过亮或过暗区域的图像处理过后就不够自然,可能会丢失掉部分信息。为了解决这个问题,我们使用自适应的直方图均衡化(AHE)。在局部区域上对直方图进行均衡化计算,重新分布局部区域亮度来改进直方图分布。这种情况下,整幅图像会被分成很多小块,这些小块被称为“tiles”(在 OpenCV 中 tiles 的大小默认是 8x8),然后再对每一个小块分别进行直方图均衡化(跟前面类似)。

1.3限值对比度的自适应直方图均衡化(CLAHE)

AHE在使用过程中可能会放大噪声。因此,需要AHE算法的对比度进行一定限制,以减少噪声被放大的情况。限值对比度的自适应直方图均衡化(CLAHE)在进行均衡化时考虑了对于每个小区域的对比度的限制。这主要是通过限制AHE对比度的提高程度实现的。CLAHE使用预先定义的阈值(clip limit)对直方图进行裁剪,高出阈值的部分被剪掉并重新均匀的下放到直方图中填充。Opencv中可以使用cv2. createCLAHE()函数进行CLAHE计算。传入的参数为clipLimit=,tileGridSize=(,)。前者是裁剪用到的阈值,后者是进行计算时划分区域的大小。

2.灰度变换

图像的灰度变换是指根据目标按照某种变换关系对图像进行逐点改变像素灰度值的运算。可以分为分为线性变换和非线性变换。

2.1线性变换

线性变换即使用一个一维线性函数f(x)=kx+d对图像中的每一个像素做线性扩展或压缩,以改善图像视觉效果。x为输入的灰度值,f(x)为输出灰度值。当k>1时,输出图像的对比度将增大。当k<1时,输出图像的对比度将减小;当k=1且d≠0时,操作使所有的灰度值上移或下移,其效果是使整个图像变暗或变亮。当k<0,暗区域将变亮,亮区域将变暗,点运算完成了图形求补运算。特殊情况:1、当k=1,d=0时,输出图像与原图像相同。2、当k=-1,d=255时,输出图像的灰度正好相反。
用的较多的线性变换是图像反转以及分段函数。函数f(x)=MAX-x可以实现图像反转。这样做可以使图像的黑白不分反转,增强黑色部分中的白色细节。对于分段函数来说,可以自己设计的一个分段函数,可以增强需要区间内的像素对比度,极端情况下为图像的二值化。

2.2非线性变换

非线性变换主要有伽马变换(指数变换)、对数变换等。
伽马变换用来图像增强,提升了暗部细节,简单来说就是通过非线性变换,将过亮(过度曝光)或过暗(曝光不足)的图片,进行矫正。伽马值小于1时,会增强图像中灰度较低的区域,同时会压缩灰度级较高的部分,伽马值大于1时,会增强图像中灰度较高的区域,同时会压缩灰度级较低的部分。
对数变换主要用于将图像的低灰度值部分扩展,将其高灰度值部分压缩,以达到强调图像低灰度部分的目的。图像经过对数变换后,较暗区域的对比度将有所提升。可用于增强图像的暗部细节。对数变换中底数越大,对低灰度部分的强调就越强,对高灰度部分的压缩也就越强。相反的,如果想强调高灰度部分,则用反对数函数就可以了。

3.基于视网膜皮层理论的增强(retinex算法)

世界本是无色的,我们看到的色彩是光和物质相互作用的结果。物体的图像S是由物体表面对入射光L反射得到的,反射率R由物体本身决定,不受入射光L变化。Retinex模型认为,图像信息由两部分组成,一部分是反射信息R(x,y),代表了物质的真实信息;一部分是入射光分量L(x,y),表示的是入射光亮;并且原始图像S是光照图像L和反射率图像R的乘积。而要想获得更本质的图像信息,则需要尽可能保留R(x,y),去除L(x,y)。直接计算R难以实现,作者使用S-L来获得R。目前有许多对L的估计算法,中心环绕、随机路径、变分、金字塔迭代等等。其中中心环绕无疑是影响最大的算法,它使用高斯尺度算子估计图像中的光照。

4.暗通道去雾

暗通道去雾算法基于一项观察结果,即无雾室外图像中的大多数局部色块包含一些像素,这些像素至少有一个颜色通道中的强度非常低,我们称之为暗像素。在雾度图像中,该通道中这些暗像素的强度主要由光线贡献。因此,这些暗像素可以直接提供透射率的准确估算。而暗通道实际上是在RGB三个通道中取最小值组成灰度图,然后再对该灰度图进行最小值滤波得到的。对于暗通道图像,有雾的时候会呈现除以灰色为主的图像,而无雾的时候则会呈现出大量的黑色区域。无雾情况下,暗通道先验理论失效。
在雾天拍摄的图像中目标物体会比平时线的更加朦胧不清,造成这种现象的原因有两个。一是目标反射光受大气中悬浮粒子的吸收和散射作用,造成目标反射光能量的衰减,这导致探测系统的成像结果亮度降低,对比度下降;二是太阳光等环境光受大气中散射介质的散射作用形成背景光,通常这部分背景光强度大于目标光,因而造成探测系统的成像结果模糊不清。雾天的数学成像模型如下所示:
其中,I(x)是雾天拍摄到的图像,即待去雾的图像。J(x)是无雾的图像,t是透射率,A是环境光。等号右边第一项即为物体在雾天的直接衰减项,第二项是环境光的散射项。要求出无雾图像J,首先应求出t以及A。
对数学模型进行变形之后可以得到下面的式子,从而可以求出透射率t。等号右边第二项即为暗通道。W是为了模拟现实中人眼成像的情况,在去雾的同时保留一定程度的雾。一般取0.95。
对于大气光A的计算步骤如下:
1) 从暗通道图中按照亮度的大小取前0.1%的像素。
2) 在这些位置中,在原始有雾图像I中寻找对应的具有最高亮度的点的值,作为A值
当投射图t 的值很小时,会导致J的值偏大,从而使淂图像整体向白色过度,因此一般可设置一个阈值T0,当t值小于T0时,令t=T0。于是,最终的图像去雾公式如下:
但上述算法对于透射率的计算不够精细,导致图像可能出现部分区域为完全去雾。于是,细化透射率的算法又被何凯明提出,即导向滤波的方式。

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值