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()

三,效果:

原图:

暖色图:

冷色图:

相关推荐
dtsola2 分钟前
小遥搜索生态新成员:一键导出钉钉文档,实现本地AI搜索
人工智能·ai编程·知识库·ai创业·独立开发者·个人开发者·一人公司
星爷AG I2 分钟前
18-9 预测心智(AGI基础理论)
人工智能·agi
俊哥V9 分钟前
每日 AI 研究简报 · 2026-04-10
人工智能·ai
Clarence Liu10 分钟前
langchain源码研究 - deepagents设计思想学习
人工智能·驱动开发·学习·langchain
信创DevOps先锋10 分钟前
开源中国全栈式AI教育解决方案亮相 破解高校科研与人才培养双重痛点
人工智能·开源
QQ6765800814 分钟前
城市治理之河道污染识别 无人机河道污染巡检 塑料带识别 瓶子图像识别 深度学习垃圾识别第10384期
人工智能·深度学习·yolo·河道污染·无人机河道污染·瓶子图像·塑料袋识别
风象南14 分钟前
当技术解决了一切“怎么做”,人类还剩下什么?
人工智能
skilllite作者19 分钟前
SkillLite 多入口架构实战:CLI / Python SDK / MCP / Desktop / Swarm 一页理清
开发语言·人工智能·python·安全·架构·rust·agentskills
2501_9333295520 分钟前
技术深度剖析:Infoseek 字节探索舆情处置系统的全链路架构与核心实现
大数据·数据仓库·人工智能·自然语言处理·架构
网安情报局21 分钟前
RSAC 2026深度解析:AI对抗AI成主流,九大安全能力全面升级
人工智能·网络安全