• opencv图像处理之gamma变换


    import cv2
    import numpy 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")
        return cv2.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()


    提到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


  • 相关阅读:
    CentOS(RedHat) 6.2 Samba share权限拒绝访问
    Android NDK调试C++源码(转)
    linux du命令: 显示文件、目录大小
    网络游戏的同步
    游戏开发辅助库
    Unity3D 200个插件免费分享
    C#UDP同步实例
    C#UDP(接收和发送源码)源码完整
    C#完整的通信代码(点对点,点对多,同步,异步,UDP,TCP)
    内置函数及匿名函数
  • 原文地址:https://www.cnblogs.com/yibeimingyue/p/11455233.html
Copyright © 2020-2023  润新知