图像的gamma变换

图像的gamma变换

gamma矫正公式:

     output = input^r

input的取值范围为[0,1],因为如果为0-255,对输入图像进行指数运算时很容易达到255,然后需要截断操作,就失去gamma变换的意义。

在这里插入图片描述
从上图中可以看出,gamma变换实际上就是一种将图像的像素值进行非线性处理的技术。

  1. 当gamma值大于1时,会将图像中的比较集中的高照度区域范围做一个拉伸,将对比度拉升到一个比较大的范围,比如gamma值取2时,[0.5-1]的区域经过gamma变换后,输出范围由原来的[0.5,1]扩大为[0.25,1],这不就是对比度拉伸麽。
  2. 同理,当gamma值小于1时,会将图像中比较集中的低照度区域范围做一个拉伸,将对比度同样拉升到一个比较大的范围,比如gamma值取0.5时,[0-0.25]的区域经过gamma变换后,输出范围由原来的[0-0.25]扩大为[0-0.5]。
  3. 所以在实际应用中,应对不同的图像可以采取不同的gamma系数来处理,比如当图片出现过度曝光时,可以取gamma大于1对原图像进行指数变换,把高亮度区域的对比度进行拉伸,使得人眼看起来图像辨识度很高;当图像出现欠曝光时,就可以取gamma值小于1的操作了。

下面附上非常简短的python实现代码:

  1. 首先读入图片,并进行归一化(我首先进行了灰度处理,也可以直接对三通道图像进行直接归一化)
  2. 然后对图像进行gamma指数运算
import cv2
import numpy as np
src = cv2.imread('./gamma.jpg', 0)
r1 = 1/2.2
r2 = 2.2
result_r1 = ((src/float(np.max(src)))**r1)
result_r2 = ((src/float(np.max(src)))**r2)
cv2.imshow('src', src)
cv2.imshow('result_r1', result_r1)
cv2.imshow('result_r2', result_r2)
cv2.waitKey(0)

在这里插入图片描述

参考文献1
参考文献2
参考文献3

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

资料加载中

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值