opencv-python图像增强十:图像色温调整

文章目录

一,简介:

图像色温是描述图像色彩偏暖或偏冷的一种方式,它通常与实际光源的色温相对应。在摄影和图像处理中,色温通常以开尔文(Kelvin)为单位来表示。较低的色温值(例如2700K)通常与暖色光(如蜡烛光或黄昏时的光)相对应,而较高的色温值(例如5500K或更高)通常与冷色光(如白炽灯或中午的日光)相对应。

在图像处理中,色温调整可以用来改变图像的整体色调,使其看起来更暖或更冷。例如,将图像的色温调低(添加蓝色)可以使其看起来更冷,而将色温调高(添加黄色)可以使其看起来更暖。这种调整可以用来补偿图像在拍摄时可能存在的色温偏差,或者仅仅是为了创造特定的视觉效果。

在OpenCV中,色温调整可以通过创建一个查找表(LUT)来实现,该表将原始颜色值映射到新的颜色值。这个过程通常涉及到对RGB颜色空间的操作,以及对每个通道的独立调整。通过这种方式,可以实现平滑且自然的色温变化,而不会导致颜色过限或失真。

二,算法实现:

本项目通过以下流程实现图像色温的调整:首先生成一个查找表,用于将原始像素值映射到新的像素值,并进行范围限制;接着,将这个查找表应用到图像的各个颜色通道上,以改变颜色;然后,根据输入参数确定色温调整的强度,并创建三个不同的查找表分别应用于红色和绿色通道以增加亮度,以及蓝色通道以减少亮度,从而模拟色温的变化;最后,通过这些调整,图像的整体色调被改变,实现了快速且有效的色温调整效果。

实现代码:

python 复制代码
import cv2
import numpy as np

def create_lut(level):
    # 创建一个查找表(LUT),范围从0到255
    lut = np.arange(256, dtype=np.uint8)
    # 更复杂的颜色映射,这里使用简单的线性映射作为示例
    # 实际上,可以在这里使用更复杂的非线性映射
    for i in range(256):
        if i + level > 255:
            lut[i] = 255
        elif i + level < 0:
            lut[i] = 0
        else:
            lut[i] = i + level
    return lut

def apply_lut(image, lut):
    # 使用OpenCV的LUT函数应用查找表
    return cv2.LUT(image, lut)

def color_temperature(input, n):

    result = input.copy()
    level = n // 2
    # 创建查找表并应用它到RGB通道
    lut_r = create_lut(level)
    lut_g = create_lut(level)
    lut_b = create_lut(-level)
    result[:, :, 2] = apply_lut(result[:, :, 2], lut_r)  # R通道
    result[:, :, 1] = apply_lut(result[:, :, 1], lut_g)  # G通道
    result[:, :, 0] = apply_lut(result[:, :, 0], lut_b)  # B通道
    return result
if __name__ == "__main__":
    src = cv2.imread(r"F:\traditional_vison\2.jpg")
    n1 = 50
    n2 = -50

    # 应用色温调整
    result1 = color_temperature(src, n1)
    result2 = color_temperature(src, n2)
    cv2.imshow("original", src)
    cv2.imshow("result1", result1)
    cv2.imshow("result2", result2)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

三,效果:

原图:

暖色图:

冷色图:

相关推荐
bleuesprit2 分钟前
模型加载时trust_remote_code 的作用
人工智能
啊阿狸不会拉杆2 分钟前
《数字图像处理》实验2-空间域灰度变换与滤波处理
图像处理·人工智能·机器学习·计算机视觉·数字图像处理
阿蔹3 分钟前
Python基础语法三---函数和数据容器
开发语言·python
xingzhemengyou13 分钟前
Python 多线程同步
开发语言·python
EniacCheng3 分钟前
贝叶斯定理
人工智能·机器学习·概率论
木头左5 分钟前
多时间框架LSTM量化交易策略的实现与参数优化
人工智能·rnn·lstm
小雨下雨的雨6 分钟前
ModelEngine的Aido智能体【娱乐生涯 AI 助手】升级计划——工作流编排精确制导AI应用
人工智能·ai·娱乐·智能体
Melody20509 分钟前
mmcv的依赖安装教程
人工智能·深度学习
水如烟13 分钟前
孤能子视角:“排序搜索“,以及当前人工智能策略––强关系与弱关系
人工智能
KG_LLM图谱增强大模型17 分钟前
[150页最新PPT]深度解析大模型与知识图谱的融合范式,通往AGI的必由之路?
人工智能·大模型·知识图谱·agi