七天速成数字图像处理之七(颜色图像处理基础)

七天速成数字图像处理之七(颜色图像处理基础)

✳️ 第一节:颜色模型基础

✅ 步骤目标:

理解常用颜色模型的结构、数学表达与使用场景。

📥 输入内容:

一张 RGB 彩色图像。

🔍 关键知识任务:

  1. RGB(Red, Green, Blue)

    构成:每个像素由 R/G/B 三个分量组成,值范围通常为 [0, 255]。

    特点:适合显示设备,但不适合色调、亮度调节。

    例子:原始数码相机输出图像。

  2. HSV(Hue, Saturation, Value)

    Hue:色相(色彩种类,0-360°)

    Saturation:饱和度(纯度)

    Value:明度(亮度)

    💡 应用场景:颜色分割(如检测黄色车牌、红色苹果等)更容易在人类感知空间中进行。

  3. YCrCb(亮度+色度)

    Y:亮度(Luminance)

    Cr、Cb:色度信息(红/蓝差)

    💡 应用场景:压缩标准(如 JPEG/MPEG)更偏爱 YCrCb,因人眼对亮度更敏感。

  4. Lab(CIELAB)

    L:亮度

a、b:颜色维度(绿-红轴、蓝-黄轴)

💡 优势:更贴近人类感知的颜色差异度量(用于图像比对、图像增强)

颜色模型 应用优势 是否感知友好 是否常用于分割/增强
RGB 图像采集、显示设备 一般
HSV 色彩选择、颜色分割
YCrCb 视频压缩、肤色检测
Lab 感知增强、颜色匹配

✅ Done Criteria:

能区分并理解每种颜色模型的结构与应用;

能说出什么时候 RGB 不好用,什么时候 HSV 更适合;

能通过 OpenCV 将 RGB 图像转换为 HSV 或 YCrCb;

🎨 第二节:颜色空间转换(含代码与操作)

✅ 步骤目标:

掌握如何在不同颜色模型之间进行转换,并理解其实际用途。

📥 输入内容:

一张 RGB 彩色图像;

Python 环境(推荐使用 OpenCV);

python 复制代码
import cv2
import matplotlib.pyplot as plt

# 读取图像(确保是 BGR)
image = cv2.imread("your_image.jpg")

# 转换为 RGB(Matplotlib 显示用)
rgb_image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

# 转换为 HSV
hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)

# 转换为 YCrCb
ycrcb_image = cv2.cvtColor(image, cv2.COLOR_BGR2YCrCb)

# 转换为 Lab
lab_image = cv2.cvtColor(image, cv2.COLOR_BGR2Lab)

# 显示图像
titles = ['RGB', 'HSV', 'YCrCb', 'Lab']
images = [rgb_image, hsv_image, ycrcb_image, lab_image]

plt.figure(figsize=(12, 8))
for i in range(4):
    plt.subplot(2, 2, i+1)
    plt.imshow(images[i])
    plt.title(titles[i])
    plt.axis('off')
plt.tight_layout()
plt.show()
转换 作用 使用场景
RGB → HSV 将图像转换为色相、饱和、明度 颜色分割、选色、图像调整
RGB → YCrCb 分离亮度与色差信息 人脸识别、视频压缩(JPEG)
RGB → Lab 感知友好、颜色差异度量 图像匹配、颜色增强、对比提升

🎯 衍生任务建议:

可提取某一通道如 HSV[..., 0](色调),进行颜色掩膜分割;

可对 Y 通道做直方图均衡,用于亮度提升;

对 Lab 图像中 L 通道增强 + a/b 保持,可做对比度优化不影响色彩。

✅ Done Criteria:

能用代码在 RGB 与其他颜色空间之间自由转换;

知道各个颜色空间的通道意义;

能结合任务场景选用合适的颜色空间。

🎨 第三节:颜色通道处理与颜色增强

✅ 步骤目标:

理解颜色通道的独立性与协同性;

学会在每个通道上进行操作(如增强红色、调节亮度);

掌握通道分离、合并、增强的基本流程;

📥 输入内容:

一张 RGB 图像;

使用 OpenCV 或 Matplotlib 的可视化环境;

🧩 任务 1:颜色通道的分离与合并

python 复制代码
import cv2
import matplotlib.pyplot as plt

img = cv2.imread('your_image.jpg')
b, g, r = cv2.split(img)

# 显示每个通道
plt.figure(figsize=(12, 4))
for i, (channel, title) in enumerate(zip([b, g, r], ['Blue', 'Green', 'Red'])):
    plt.subplot(1, 3, i+1)
    plt.imshow(channel, cmap='gray')
    plt.title(title)
    plt.axis('off')
plt.tight_layout()
plt.show()

# 合并通道
merged = cv2.merge([b, g, r])

🧩 任务 2:只增强某个通道(如红色)

python 复制代码
# 让红色更强烈
r_boosted = cv2.add(r, 50)  # 限制最大值为255
boosted_img = cv2.merge([b, g, r_boosted])

# 可视化
plt.imshow(cv2.cvtColor(boosted_img, cv2.COLOR_BGR2RGB))
plt.title("Red Channel Boosted")
plt.axis('off')
plt.show()

🧩 任务 3:颜色通道的"单通道显示" vs "通道叠加显示"

单通道显示:提取 R/G/B 作为灰度图表示各通道强度;

通道叠加显示:将通道值置为 0,只保留目标通道可形成色彩图:

python 复制代码
# 只显示红色部分(非灰度)
zeros = b * 0
red_only = cv2.merge([zeros, zeros, r])
操作类型 示例 效果
通道加亮 cv2.add(r, 50) 增强亮度/颜色强度
对比度提升 cv2.equalizeHist(g) 强化颜色分布
掩膜增强 只在特定区域增强某通道 聚焦目标,如红色区域增强
通道互换 交换 R ↔ G 改变视觉色彩表现
加权组合 gray = 0.3*r + 0.59*g + 0.11*b 转灰度、亮度融合
🎯 输出产物
你可以实现如下功能:

精准提取和增强某一通道的图像效果;

手动构建灰度图或亮度图;

通过通道操作进行视觉风格修改;

✅ Done Criteria:

能够用代码拆分与合并颜色通道;

能对单个通道进行亮度、对比度或掩膜增强;

能清晰区分"单通道灰度显示"与"通道色彩叠加显示"的含义;

第四章:伪彩色处理与应用(Pseudocolor Processing)

✅ 步骤目标

理解什么是伪彩色(Pseudocolor)及其与真彩色的区别;

掌握灰度图转伪彩色图的方法;

学会常见伪彩色映射策略及其用途;

实践多个伪彩色映射函数在 OpenCV / Matplotlib 中的应用;

📥 输入内容

一张灰度图像或亮度图像;

可选:红外图像、热成像图像、医学图像(如X光);

使用 OpenCV 和/或 Matplotlib 进行处理与可视化;

🔍 关键任务

🧩 任务 1:什么是伪彩色图像?

真彩色图像(True Color):RGB 三通道均来源于真实颜色;

伪彩色图像(Pseudocolor):

原图可能只有灰度(单通道);

使用某种 颜色映射表(colormap) 将灰度值映射为彩色;

视觉上更容易感知梯度、边界和差异。

python 复制代码
import cv2
import matplotlib.pyplot as plt

gray = cv2.imread("test_gray.jpg", 0)  # 读取为灰度图

# 应用伪彩色(如 JET、HOT、RAINBOW)
pseudo = cv2.applyColorMap(gray, cv2.COLORMAP_JET)

plt.imshow(cv2.cvtColor(pseudo, cv2.COLOR_BGR2RGB))
plt.title("Pseudocolor - JET")
plt.axis('off')
plt.show()

🎨 常用伪彩色表:

COLORMAP_JET: 热力图风格,红->绿->蓝;

COLORMAP_HOT: 黑->红->黄->白,适合热成像;

COLORMAP_OCEAN, COLORMAP_SUMMER, COLORMAP_RAINBOW 等可用于不同任务;

应用领域 图像类型 伪彩色作用
医学影像 X光、MRI 强调病灶与正常区域的对比
热成像 红外图像 显示温度分布,增强识别力
工业检测 缺陷/厚度图 可视化微小纹理或材料差异
卫星遥感 地形图、波段图 分析植被、土地、水体等
数学图像分析 灰度图 显示梯度、边缘、亮度差异等

🎯 输出产物

你应该能够实现:

使用 OpenCV 加载灰度图并转换为任意伪彩色图像;

在 matplotlib 中使用不同 cmap 对图像视觉效果进行对比;

明确选择不同颜色映射表对结果的影响,并适配场景使用;

✅ Done Criteria

至少掌握 3 种伪彩色映射方式的应用;

能清楚解释伪彩色与真彩色的区别;

能将灰度图应用到不同颜色空间中,并解释视觉增强意义;

相关推荐
Se7en2584 分钟前
Speculative Decoding 推测解码方案详解
人工智能
beolus4 分钟前
离线推理精度问题分析
人工智能
coding随想17 分钟前
Linux服务器离线安装ollama及大模型
人工智能
东方佑23 分钟前
高效序列建模新探索
人工智能
鱼雀AIGC27 分钟前
如何仅用AI开发完整的小程序<6>—让AI对视觉效果进行升级
前端·人工智能·游戏·小程序·aigc·ai编程
神经星星36 分钟前
入选ICML 2025!哈佛医学院等推出全球首个HIE领域临床思维图谱模型,神经认知结果预测任务上性能提升15%
人工智能·深度学习·机器学习
水寒之38 分钟前
openCV
人工智能·opencv·计算机视觉
企销客CRM1 小时前
CRM管理系统的用户权限设置与管理技巧:构建安全高效的数字化运营体系
大数据·数据库·人工智能·数据分析·企业微信
ClouGence1 小时前
RAG 升级之路:如何让问答机器人真正“智能”起来
人工智能·ai·机器人
综合热讯1 小时前
爱高集团引领转型浪潮:AI与区块链驱动香港科技资本新机遇
人工智能·科技·区块链