第 3 章 灰度变换与空间滤波 (Intensity Transformations and Spatial Filtering)
核心结论
-
灰度变换基础(§3.1):
s = T(z)像素级映射;图像反转 / 对数 / 伽马。 -
基本灰度函数(§3.2):线性 / 对数 / 幂律(伽马);分段线性。
-
直方图处理(§3.3):直方图均衡化 / 规定化;局部直方图。
-
空间滤波基础(§3.4):卷积 / 相关;线性滤波核。
-
平滑(低通)滤波(§3.5):盒式 / 高斯 / 中值;边缘保持滤波。
-
锐化(高通)滤波(§3.6):拉普拉斯 / Sobel / Prewitt;非锐化掩模。
-
低 / 高 / 带通 / 带阻滤波(§3.7):组合低通得到高通;带阻 / 带通从低通构造。
|
本章主旨
本章是 DIP 核心算法——灰度变换 + 空间滤波。理解后才能做图像增强 / 去噪 / 锐化 / 边缘检测。 |
一、核心概念
本章围绕 7 个核心概念展开:基础 → 函数 → 直方图 → 空间滤波 → 平滑 → 锐化 → 组合。
| 概念 | 定义 + 重要性 | 实现提示 |
|---|---|---|
灰度变换基础 |
|
§3.1;最简单增强。 |
基本函数 |
线性 / 对数 / 幂律 / 分段。 |
§3.2;对比度 / 亮度调整。 |
直方图处理 |
均衡化 / 规定化;局部直方图。 |
§3.3;对比度拉伸。 |
空间滤波基础 |
卷积 / 相关;线性核。 |
§3.4;图像平滑 / 锐化基础。 |
平滑(低通) |
盒式 / 高斯 / 中值 / 双边。 |
§3.5;去噪。 |
锐化(高通) |
拉普拉斯 / Sobel / 非锐化掩模。 |
§3.6;边缘检测。 |
组合滤波 |
高通 = I - 低通;带通 / 带阻。 |
§3.7;频率选择滤波。 |
二、详细笔记
2.1 灰度变换基础 (Background)
What:s = T(z) 像素级映射。
Why:最简单图像增强;理解后才能做复杂变换。
How:s = T(r);r 是输入像素值,s 是输出像素值,T 是变换函数。
When:亮度 / 对比度调整;负片 / 伽马。
Example:s = 255 - r(图像反转);cv2.LUT(img, lut)。
2.2 基本灰度函数 (Basic Intensity Functions)
What:线性 / 对数 / 幂律 / 分段线性变换。
Why:常用增强操作;理解后才能选对变换。
How:
-
线性:
s = a r + b。 -
对数:
s = c log(1 + r)(扩展暗部)。 -
幂律(伽马):
s = c r^γ。 -
分段线性:对比度拉伸。
When:亮度 / 对比度调整;gamma 校正。
Example:cv2.convertScaleAbs(img, alpha=1.5, beta=20)。
2.3 直方图处理 (Histogram Processing)
What:直方图均衡化 / 规定化。
Why:自动对比度拉伸;增强常用。
How:
-
直方图均衡化:
s = T(r) = (L-1) ∫ p_r(w) dw。 -
直方图规定化:映射到指定直方图。
-
局部直方图:分块处理(保留局部细节)。
When:自动对比度;医学影像增强。
Example:cv2.equalizeHist(img);cv2.createCLAHE()(对比度受限自适应直方图均衡化)。
2.4 空间滤波基础 (Spatial Filtering Basics)
What:卷积 / 相关;线性滤波核。
Why:图像平滑 / 锐化的基础。
How:
-
卷积:核翻转后滑动。
-
相关:核不翻转(深度学习用)。
-
线性滤波:核 = 卷积模板。
When:所有 DIP 滤波算法。
Example:cv2.filter2D(img, -1, kernel);cv2.GaussianBlur(img, (5,5), 0)。
2.5 平滑(低通)滤波 (Smoothing Filters)
What:盒式 / 高斯 / 中值 / 双边。
Why:去噪;图像平滑。
How:
-
盒式:核 = 全 1/(N×M)。
-
高斯:
G(x,y) = (1/2πσ²) exp(-(x²+y²)/2σ²)。 -
中值:邻域中值(保边)。
-
双边:空间 + 颜色高斯(保边)。
When:去噪;预处理。
Example:cv2.GaussianBlur(img, (5,5), 1);cv2.medianBlur(img, 5);cv2.bilateralFilter(img, 9, 75, 75)。
2.6 锐化(高通)滤波 (Sharpening Filters)
What:拉普拉斯 / Sobel / Prewitt / 非锐化掩模。
Why:边缘检测;图像锐化。
How:
-
拉普拉斯:
∇² f = ∂²f/∂x² + ∂²f/∂y²。 -
Sobel:
G_x = [[-1, 0, 1], [-2, 0, 2], [-1, 0, 1]]。 -
非锐化掩模:
g_mask = f - f_blur;g = f + k * g_mask。
When:边缘检测;图像锐化。
Example:cv2.Laplacian(img, cv2.CV_64F);cv2.Sobel(img, cv2.CV_64F, 1, 0)。