彩色图像处理
三原色与彩色模型(RGB / CMY(K) / HSI)· 伪彩色 · 全彩色处理 · 彩色变换 · 彩色平滑与锐化。
🎯学习目标
- 理解研究彩色图像处理的意义与三原色、二次色概念;
- 掌握 RGB、CMY/CMYK、HSI 三种彩色模型及其转换关系;
- 理解伪彩色处理(强度分层、灰度到彩色变换)及应用;
- 理解全彩色处理的两种方式(分量处理 / 向量处理);
- 掌握彩色变换(补色、色调变换、HSI 直方图均衡);
- 理解彩色图像平滑与锐化,及在 RGB 与 HSI 中的差异。
1彩色基础与三原色
为什么研究彩色图像处理?
- 符合人类视觉特点:人能辨别几千种颜色色调和亮度,但只能辨别几十种灰度层次;
- 颜色是有用的描绘子:简化目标区分、便于目标识别。
白光经棱镜分解为连续彩色谱(红、橙、黄、绿、蓝、紫 6 个较宽区域)。
| 类别 | 颜色 |
|---|---|
| 三原色(光) | 红 R、绿 G、蓝 B |
| 二次色(原色相加) | 黄=红+绿、青=绿+蓝、深红(品红)=红+蓝 |
人眼有三种感光细胞:
- 锥状细胞L:对红光敏感
- 锥状细胞M:对绿光敏感
- 锥状细胞S:对蓝光敏感
大脑根据这三种细胞的响应比例,感知出"颜色"。
所以:任何颜色都可以用 R、G、B 三种颜色混合。
举例:
- 红色 = (255, 0, 0)
- 绿色 = (0, 255, 0)
- 蓝色 = (0, 0, 255)
- 黄色 = 红 + 绿 = (255, 255, 0)
- 白色 = 红 + 绿 + 蓝 = (255, 255, 255)
- 黑色 = 都没有 = (0, 0, 0)
2RGB 彩色模型 ⭐
直接感知 R、G、B 三个分量,是图像成像、显示、打印等设备的基础。可用单位立方体表示:
- 黑色位于原点 (0,0,0),二次色位于另外三个角;
- 像素深度:每个像素所用比特数。24-bit RGB(每分量 8 bit)颜色数 = $(2^8)^3 = $16,777,216 ≈ 1670 万色。
RGB模型就像调色板:
- R(红):放多少红色
- G(绿):放多少绿色
- B(蓝):放多少蓝色
每个分量范围:0-255。0 = 不放这个颜色,255 = 放满这个颜色。
RGB是"加色模型":混合越多颜色 → 越亮,R+G+B = 白色。用途:显示器、相机、手机。
对比CMY(减色模型):混合越多颜色 → 越暗,C+M+Y = 黑色。用途:打印机、颜料。
为什么显示器用RGB?显示器发光,光叠加变亮;打印机反射光,颜料叠加变暗。
RGB颜色总数:
- R有256级,G有256级,B有256级
- 总共 256×256×256 = 16,777,216 种颜色(约1600万种)
实际图像用不了这么多:
- 一张1000×1000的图只有100万个像素,最多100万种不同颜色
- 通常更少(很多像素颜色相同)
存储计算:
- 灰度图:每像素1字节(8位)
- RGB图:每像素3字节(24位)
- RGBA图:每像素4字节(32位,多一个透明通道)
例子:1920×1080 RGB图 = 1920×1080×3 ≈ 6MB;4K RGB图 = 3840×2160×3 ≈ 24MB
核心意思:
RGB = 红绿蓝三种颜色的"配方",混合起来能表示几乎所有颜色
举个例子:
常见颜色的RGB值:
颜色 R G B 十六进制
红色 255 0 0 #FF0000
绿色 0 255 0 #00FF00
蓝色 0 0 255 #0000FF
黄色 255 255 0 #FFFF00(红+绿)
青色 0 255 255 #00FFFF(绿+蓝)
品红 255 0 255 #FF00FF(红+蓝)
白色 255 255 255 #FFFFFF(全混)
黑色 0 0 0 #000000(都没有)
颜色混合规律:
红 + 绿 = 黄
绿 + 蓝 = 青
红 + 蓝 = 品红
红 + 绿 + 蓝 = 白色
存储计算:
每个像素 = 3字节(R、G、B各1字节)
1920×1080图像 = 1920×1080×3 = 6,220,800字节 ≈ 6MB
生活类比:
RGB就像调色板上的三种颜料,不同比例混合能调出不同颜色。显示器就是用无数个RGB小灯组成的。
为什么这样设计:
因为人眼有三种锥状细胞,分别对红、绿、蓝最敏感。所以用这三种颜色就能混合出人眼能感知的几乎所有颜色。
3CMY / CMYK 模型
CMY(青 Cyan、深红 Magenta、黄 Yellow)用于在纸上沉积颜料的设备,如彩色打印机/复印机。RGB 与 CMY 值都归一化到 [0,1]:
RGB → CMY: $$C = 1 - R, M = 1 - G, Y = 1 - B$$
CMYK:打印中主要颜色是黑色,等量 CMY 理论上产生黑色但不纯,故在 CMY 基础上加入纯黑 K,形成 CMYK 彩色空间(n=4)。
核心意思:
CMY = 青品黄,是印刷用的"减色模型",和RGB相反
举个例子:
RGB是加色(光叠加变亮):
红光 + 绿光 = 黄光
红 + 绿 + 蓝 = 白光
CMY是减色(颜料叠加变暗):
青 + 品红 = 蓝(吸收了绿)
青 + 黄 = 绿(吸收了红)
品红 + 黄 = 红(吸收了蓝)
青 + 品红 + 黄 = 黑(理论上)
CMYK的K是什么?
理论上C+M+Y=黑,但实际印刷:
- 三种颜料混合不纯,会变成深棕色
- 所以单独加一个黑色(K=Key)
- 黑色用得最多,单独加更省墨
RGB转CMY:
C = 255 - R
M = 255 - G
Y = 255 - B
例子:
红色(255,0,0) → 青色(0,255,255)
白色(255,255,255) → 黑色(0,0,0)
生活类比:
RGB像手电筒照在白墙上,光叠加变亮;CMY像颜料调色,颜料叠加变暗。显示器用RGB(发光),打印机用CMYK(反射光)。
为什么这样设计:
印刷和显示的物理原理不同。显示器自己发光,光混合越来越亮(加色);印刷品靠反射环境光,颜料吸收光,混合越多吸收越多,越来越暗(减色)。
4HSI 彩色模型 ⭐
HSI(Hue 色调、Saturation 饱和度、Intensity 亮度)更符合人描述颜色的方式:
| 分量 | 含义 |
|---|---|
| H 色调 | 描述一种纯色的颜色属性(纯红、纯黄…) |
| S 饱和度 | 纯色被白光稀释的程度 |
| I 亮度 | 发光强度的消色概念(主观),与彩色信息无关 |
RGB → HSI($$R,G,B$$ 归一化):
$$I = (R+G+B)/3$$
$$S = 1 - 3 \cdot \min(R,G,B)/(R+G+B)$$
$$H = \theta$$ (当 $$B \leq G$$) 其中
$$H = 360° - \theta$$ (当 $$B > G$$) $$\theta=\arccos\left\{ \frac{(R-G)+(R-B)}{2} \Big/ \sqrt{(R-G)^2+(R-B)(G-B)} \right\}$$
RGB的问题:
- 不直观((200,100,50)是什么颜色?)
- 难以调整(想变亮一点怎么改?)
HSI的优势:
- H(色调)= 什么颜色(红/绿/蓝/黄...)
- S(饱和度)= 颜色有多纯(鲜艳/灰暗)
- I(亮度)= 有多亮(明/暗)
类比:
- H = 选什么颜色的颜料
- S = 颜料纯不纯(纯色 vs 加了白色)
- I = 灯光亮不亮
举例:
- 鲜艳的红花:H=红色,S=高,I=中
- 灰色的墙:H=任意,S=低,I=中
- 黑暗中的红点:H=红色,S=高,I=低
调整图像更直观:想变亮?只调I。想更鲜艳?只调S。想换颜色?只调H。
核心意思:
HSI = 色调、饱和度、亮度,更符合人类描述颜色的方式
举个例子:
描述一辆红色汽车:
用RGB(不直观):
(200, 50, 30) ← 这是什么颜色?要算一下才知道
用HSI(很直观):
H = 0°(红色)
S = 85%(很鲜艳)
I = 40%(比较暗)
HSI的三个分量:
H(Hue)= 色调 = "什么颜色"
0° = 红色
120° = 绿色
240° = 蓝色
360° = 又回到红色
S(Saturation)= 饱和度 = "有多鲜艳"
0% = 灰色(没有颜色)
100% = 纯色(最鲜艳)
I(Intensity)= 亮度 = "有多亮"
0% = 黑色
100% = 最亮
调整图像更直观:
想变亮?只调I(亮度)
想更鲜艳?只调S(饱和度)
想换颜色?只调H(色调)
生活类比:
H像选什么颜色的颜料,S像颜料纯不纯(纯色 vs 加了白色),I像灯光亮不亮。
为什么这样设计:
因为人类描述颜色就是说"红色的、鲜艳的、亮的",而不是说"(200,50,30)"。HSI把亮度和颜色分开,这样调整亮度不会改变颜色本身,处理起来更符合直觉。
5伪彩色图像处理
伪彩色(假彩色)处理:根据一定准则对灰度值赋以彩色。原因:人能辨别上千种颜色,却只能辨别二十几种灰度,赋色便于观察解释。两种技术:
强度分层
Intensity Slicing灰度→彩色变换
Gray-to-Color核心意思:
伪彩色 = 把灰度图"上色",让不同的灰度显示不同的颜色
举个例子:
原始灰度图(医学CT):
0 = 黑色(背景)
100 = 深灰(肌肉)
200 = 浅灰(骨骼)
255 = 白色(金属)
伪彩色映射:
0 → 黑色(背景)
50 → 蓝色(低密度)
100 → 绿色(肌肉)
150 → 黄色(中等密度)
200 → 红色(骨骼)
255 → 白色(金属)
效果:
原本灰蒙蒙的CT图
→ 不同组织显示不同颜色
→ 更容易区分肌肉、骨骼、病变
常见伪彩色方案:
热力图:黑→红→黄→白
彩虹图:红→橙→黄→绿→蓝→紫
铁蓝色:黑→蓝→青→白
生活类比:
伪彩色像给黑白照片"上色",不是真的颜色,是"假"的颜色。目的是让人眼更容易区分不同的灰度。
为什么这样设计:
人眼只能辨别二十几种灰度,但能辨别上千种颜色。把灰度映射成彩色,原本看起来差不多的灰度差异就能一眼看出来。常用于医学图像(让病变更明显)、热成像(温度用颜色表示)、地形图(海拔用颜色表示)。
6全彩色图像处理基础
全彩色处理研究分两大类:
| 方式 | 做法 |
|---|---|
| 分量处理 | 分别处理每一分量图像,然后合成彩色图像 |
| 向量处理 | 直接对彩色像素处理:3 个颜色分量构成像素向量 c=[R,G,B]ᵀ |
核心意思:
全彩色处理 = 对RGB三个通道分别处理,或者转换到HSI空间处理
举个例子:
方法1:分别处理RGB通道
原图:R、G、B三个矩阵
对每个通道单独做处理:
R' = 处理(R)
G' = 处理(G)
B' = 处理(B)
合并:新图 = (R', G', B')
方法2:转换到HSI空间
原图 RGB → 转换 → HSI
只处理亮度I:
I' = 处理(I)
转换回 RGB:
(H, S, I') → 转换 → 新的RGB
对比:
方法 优点 缺点
分别处理RGB 简单 可能改变颜色
HSI空间处理 保持颜色不变 需要转换
边缘检测在彩色图像:
方法1:对R、G、B分别检测,取平均
方法2:转成灰度再检测
方法3:在HSI空间只对I通道检测(推荐)
生活类比:
分别处理RGB像分别调整三个滑块,HSI处理像先提取亮度只调整亮度。HSI更符合直觉,不会改变颜色本身。
为什么这样设计:
有些操作(如去噪、增强)如果在RGB空间做,会改变三个通道的比例关系导致偏色。转到HSI空间只处理亮度I,就能在改善图像质量的同时保持原有色彩不变。
7彩色变换
彩色变换 $s_i = T_i(r_1, r_2, \ldots, r_n)$,$r_i$、$s_i$ 是输入/输出的彩色分量。所选彩色空间决定 $n$:RGB 时 $n=3$,CMYK 时 $n=4$。
补色
彩色环上与某色调直接相对的色调为补色。RGB 映射下:红↔青、黑↔白。作用:增强嵌在彩色图像暗区的细节(区域占优势时尤佳)。
色调与对比度变换
可使平淡图像变亮/变暗,或增强对比度(亮的更亮、暗的更暗)。
HSI 空间下的直方图均衡化
彩色图像直方图均衡只处理强度分量 $I$,保持 $H$、$S$ 不变。否则会改变彩色。注意:强度改变会影响图像彩色状态,常需适当调整饱和度。
补色(负片)效果:
- 原理:用255减去原来的值
- R' = 255 - R,G' = 255 - G,B' = 255 - B
- 效果:黑变白,红变青,绿变品红
色调分离(海报化):
- 原理:减少颜色数量(比如从256级减到4级)
- 效果:像海报画,色块分明
边缘检测在彩色图像:
- 方法1:对每个通道分别检测,再合并
- 方法2:转成灰度再检测
- 方法3:在HSI空间只对I通道检测
8彩色图像平滑与锐化 ⭐
彩色平滑
令 S_xy 为以 (x,y) 为中心的邻域坐标集,RGB 平滑即对邻域内 R、G、B 三分量分别求平均。
RGB 平滑 vs HSI 仅平滑 I
- RGB 平滑:对三分量分别平均 —— 是不同彩色的平均;
- HSI 仅平滑强度 I:只平均亮度,原彩色(H、S)保持不变。
- 两者结果不同(存在差别图像):RGB 平均会混入邻域不同颜色,HSI 只平均亮度。
彩色锐化(拉普拉斯)
- RGB 锐化:分别计算每一分量图像的拉普拉斯变换 —— 是不同彩色的锐化;
- HSI 仅锐化 I:只对强度分量做拉普拉斯,H、S 不变。
⭐重点例题
解:$C=1-R=0.8$,$M=1-G=0.4$,$Y=1-B=0.0$ $\Rightarrow$ $CMY=$(0.8, 0.4, 0)(偏青色)。
解:$I=(R+G+B)/3=R$;$S=1-3 \cdot \min/(R+G+B)=1-3R/3R=$0。即无彩色(灰色)饱和度为 0,色调 $H$ 无定义。
解:$(2^8)^3 = 256^3 = $16,777,216 种(约 1670 万色)。
🎯自测(点击展开)
人能辨别的颜色数与灰度数大致是多少?为什么研究彩色处理?
光的三原色和二次色分别是什么?
RGB → CMY 的转换公式?
HSI 三个分量各代表什么?最大优势是什么?
伪彩色处理的两种技术是什么?
RGB 平滑与 HSI 仅平滑 I 的结果为什么不同?
📝强化题库
选择题点选即时判分;填空题输入后"检查"或"显示答案"。