图像gamma变换 matlab,opencv图像处理之gamma变换

importcv2importnumpy as np

img=cv2.imread('4.jpg')def adjust_gamma(image, gamma=1.0):

invGamma= 1.0/gamma

table=[]for i in range(256):

table.append(((i/ 255.0) ** invGamma) * 255)

table= np.array(table).astype("uint8")returncv2.LUT(image, table)

img_gamma= adjust_gamma(img, 2)

cv2.imshow("img",img)

cv2.imshow("img_gamma",img_gamma)

key=cv2.waitKey()if key == 27:

cv2.destroyAllWindows()

0baf37839eb7f3325b2033e30e906973.png

提到LUT,很多人可能都会觉得这是一个很专业很高深的词汇,LUT其实就是Look Up Table(颜色查找表)的缩写,简单点儿理解就是:通过LUT,我们可以将一组RGB值输出为另一组RGB值,从而改变画面的曝光与色彩。LUT文件就是一个包含了可以改变输入颜色信息的矩阵数据。LUT本身并不进行运算,只需在其中列举一系列输入与输出数据即可,这些数据呈一一对应的关系,系统按照此对应关系为每一个输入值查找到与其对应的输出值,这样即可完成转换,也是LUT基本不消耗CPU资源的原因。

原文链接:https://blog.csdn.net/weixin_42171170/article/details/94473176

提到LUT,很多人可能都会觉得这是一个很专业很高深的词汇,LUT其实就是Lookup Table(颜色查找表)的缩写,简单点儿理解就是:通过LUT,你可以将一组RGB值输出为另一组RGB值,从而改变画面的曝光与色彩。用一个最简单的模型帮助大家理解就是:

如果我们规定:

当原始R值为0时,输出R值为5;

当原始R值为1时,输出R值为6;

当原始R值为2时,输出R值为8;

当原始R值为3时,输出R值为10;

...

一直到R值为255

当原始G值为0时,输出G值为10;

当原始G值为1时,输出G值为12;

当原始G值为2时,输出G值为13;

当原始G值为3时,输出G值为15;

...

一直到G值为255

当原始B值为0时,输出B值为0;

当原始B值为1时,输出B值为0;

当原始B值为2时,输出B值为1;

当原始B值为3时,输出B值为1;

...

一直到B值为255

那么,如果一个像素为RGB(1,2,3),那么它应用这个LUT之后的输出值就是RGB(6,13,1),以此类推,我们就可以把所有原始RGB值转化为输出RGB值。当然在实际的3D LUT转换中,算法要比这复杂很多。

原文链接:http://www.sohu.com/a/230989286_252971

还有一篇参考文章:https://blog.csdn.net/Rothwale/article/details/79189032

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值