From eddc8f29eb6425601853829b347cbc976bf0174c Mon Sep 17 00:00:00 2001
From: "Y.D.X" <73375426+YDX-2147483647@users.noreply.github.com>
Date: Mon, 19 Jun 2023 15:14:29 +0800
Subject: [PATCH] =?UTF-8?q?[course]=20=E6=97=A5=E5=B8=B8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
docs/assets/DCT-symmetries.svg | 1 +
docs/assets/Opening.png | Bin 0 -> 7515 bytes
docs/course/digital-image-processing.md | 203 +++++++++++++++++++++++-
3 files changed, 202 insertions(+), 2 deletions(-)
create mode 100644 docs/assets/DCT-symmetries.svg
create mode 100644 docs/assets/Opening.png
diff --git a/docs/assets/DCT-symmetries.svg b/docs/assets/DCT-symmetries.svg
new file mode 100644
index 0000000..7ef5cc9
--- /dev/null
+++ b/docs/assets/DCT-symmetries.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/docs/assets/Opening.png b/docs/assets/Opening.png
new file mode 100644
index 0000000000000000000000000000000000000000..f4e995bc644312716f390bd66099a60d7b5a2981
GIT binary patch
literal 7515
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 :material-clock-edit-outline: 2023年6月18日。
+> :material-clock-edit-outline: 2023年6月18–19日。
基本步骤如下。
@@ -113,12 +117,207 @@ The multidimensional DFT expresses the input as a superposition of plane waves,
4. 反变换。
5. 时域取结果实部,恢复频域中心化,丢弃之前补零多的部分。
+- 平滑:门(理想,振铃),Butterworth(仅高阶振铃明显),Gaussian。
+- 锐化:平滑滤波器的补,Laplacian(频谱数值数量级可能增大)。增强图像时高频提升(时域加常数)或高频加强(频域加常数),并结合直方图均衡化。
+
+### 同态滤波
+
+> :material-clock-edit-outline: 2023年6月19日。
+
+采用 illumination–reflectance 模型,希望去除照度分量的影响,压缩动态范围,增强对比度。
+
+时域取对数,改积为和,再滤波。
+
## §5 复原与重建
+> :material-clock-edit-outline: 2023年6月19日。
+
+退化模型:线性位置不变算子、加性噪声。物理上是获取图像时光的波动性、成像时运动、大气湍流等,和传输图像时的干扰。
+
+- **空间滤波抑制噪声**
+
+ - **均值**:算术、几何应对 Gaussian 或均匀噪声,几何均值不太模糊,但扩大黑物。反谐波 $g \mapsto \overline{g^{Q+1}} / \overline{g^Q}$ 应对 salt 或 pepper(不可兼)。
+
+ - **顺序统计量**:中值(重复使用会模糊)、最大(扩散亮部)、最小(扩散暗部)应对脉冲噪声。最值中点应对 Gaussian 或均匀噪声,且毫不模糊。修正α综合,可应对多种噪声混合。
+
+ - **自适应**:利用局部信息。
+ - 均值:用局部方差与噪声方差的比例(大则信号,小则噪声),在原值与局部均值间定比分点。
+ - 中值:判断中值是否为脉冲,若是,扩大窗重新计算。可处理更大概率的脉冲噪声。
+
+- **频率滤波抑制周期噪声**
+
+ - **带阻、带通**:旋转对称,$x \mapsto \abs{x} - \mu^2 / \abs{x}$,再代入低通或高通滤波器。
+
+ - **陷波**(notch):中心对称,$x \mapsto \abs{x-\mu} \times \abs{x+\mu}$。所谓“最佳陷波”先带通选出噪声,按一定比例减去,系数由邻域内最小二乘法。
+
+- **抵消线性位置不变算子**
+
+ **估计**退化函数:强行观察(后验方法,利用图中点、线),试验点扩散函数,建立模型(大气湍流、运动模糊、光学散焦)。
+
+ !!! note "匀速运动模糊"
+
+ 设位移为 $2 \gamma (\alpha, \beta)$($\alpha^2 + \beta^2 = 1$,$\gamma > 0$),则
+
+ $$
+ \eval{h}_{x,y} = \eval{\delta}_{\beta x - \alpha y} \eval{G_{2\gamma}}_{\alpha x + \beta y - \gamma}.
+ $$
+
+ 于是
+
+ $$
+ \begin{split}
+ \eval{H}_{u,v}
+ &= \iint \eval{h}_{x,y} e^{-j (u x + v y)} \dd{x} \dd{y} \\
+ &= 2\gamma \sinc(\gamma(\alpha u + \beta v)) \times e^{-j\gamma(\alpha u + \beta v)}.
+ \end{split}
+ $$
+
+ **复原**图像:
+
+ - **逆滤波**:信号弱的频率上,噪声影响不可控,还不如保持原貌或直接抑制。
+ - 改进有**Wiener最小均方误差**、约束最小二乘等。
+
## §6 彩色
+### 色彩模型
+
+> :material-clock-edit-outline: 2023年6月19日。
+
+面向硬件:
+
+- RGB (red, green, blue) ——加色
+- CMYK (cyan, magenta, yellow; black) ——减色
+
+面向应用:
+
+- HSI (hue, saturation, intensity) ——符合人的视觉,I可当作灰度图像处理
+- Lab ——亮度、色彩更分离
+
+### 伪彩色
+
+> :material-clock-edit-outline: 2023年6月19日。
+
+把灰度信号重映射为色彩,方便人理解。(人约40灰度,而数千色调、亮度)
+
+- 灰度分层
+- 向量的变换
+- 真彩色重映射
+
## §8 压缩
+### 冗余
+
+> :material-clock-edit-outline: 2023年6月19日。
+
+- 编码冗余——熵
+- 空间、时间相关——条件熵
+- 无关信息——心理视觉或噪声
+
+### 具体编码
+
+> :material-clock-edit-outline: 2023年6月19日。
+
+- **Huffman**
+
+ 依单个符号的概率分配变长码,低概率的分长码。
+
+- **算术**
+
+ 将累积联合概率表示为二进制小数。
+
+- **变换**
+
+ 变换集中信号,像素解相关,适应心理视觉。编码步骤为分块、正变换、量化、熵编码,解码反之。
+
+ DCT(discrete cosine transform)有多种,本课采用图中Ⅱ。
+
+
+
+ $$
+ \eval{X}_k = \sum_n \eval{x}_n \cos(\frac{\pi}{N} \qty(n + \frac12) k).
+ $$
+
+ > :material-eye-arrow-right: [Discrete cosine transform - Wikipedia](https://en.wikipedia.org/wiki/Discrete_cosine_transform#DCT-II).
+
+ Some authors (including this course) further multiply the $\eval{X}_{0}$ term by $\sqrt{1/N}$ and multiply the rest of the matrix by an overall scale factor of $\sqrt{2/N}$. This makes the DCT-II matrix orthogonal, but breaks the direct correspondence with a real-even DFT of half-shifted input.
+
## §9 形态学处理
+> :material-clock-edit-outline: 2023年6月19日。
+>
+> :material-eye-arrow-right: [Mathematical morphology - Wikipedia](https://en.wikipedia.org/wiki/Mathematical_morphology).
+
+形态学是 morphology。
+
+The erosion of the binary image A by the structuring element B is defined by $A \ominus B \coloneqq \qty{z | B_z \subset A} = \bigcap_{b \in B} A_{-b}$. Dilation $A \oplus B \coloneqq \bigcup_{b \in B} A_b$. 单独 erosion, dilution 会系统性地缩小或放大图形。
+
+
+
+Opening $A \circ B \coloneqq (A \ominus B) \oplus B$, closing $A \bullet B \coloneqq (A \oplus B)\ominus B$.
+
+| 操作 | 作用 |
+| :---------------: | :----------------: |
+| erosion, opening | 清楚细物,断开窄桥 |
+| dilution, closing | 填充孔洞,连接断口 |
+
+若结构元光滑(如圆盘),则 opening, closing 也会让图形光滑,二者区别在于 opening 只对凸处有效,而 closing 只对凹处有效。(它们对偶)
+
## §10 分割
+
+### 概念
+
+> :material-clock-edit-outline: 2023年6月19日。
+
+- 目的:基本预处理。挑出感兴趣的区域,供后续分析属性。
+- 原理:灰度在区域内相似、连通,在边界处突变。
+- 手段:平滑噪声后,检测边缘,连接边缘(通常用形态学手段),划分区域。
+
+### 检测边缘
+
+> :material-clock-edit-outline: 2023年6月19日。
+
+- 一阶
+
+ - Roberts 四点差分。
+ - Prewitt 边界两排差分。
+ - Sobel 边界两排加权差分,边界比 Prewitt 略清晰。
+
+- 二阶
+
+ 会出双脉冲,可区分亮暗侧,但定界还要取零交叉点。
+
+ Laplacian 各向同性(无法检测边缘方向)
+
+ 对噪声很敏感,必须前平滑或等价地采用 Laplacian of Gaussian(Marr–Hildreth),也可用 Difference of Gaussian 近似。
+
+- Canny
+
+ > :material-eye-arrow-right: [Canny edge detector - Wikipedia](https://en.wikipedia.org/wiki/Canny_edge_detector).
+
+ 1. Gaussian 平滑。
+ 2. 检测梯度幅度、方向,其中方向可以分成几个扇区。
+ 3. Non-maximum suppression,在边缘法向上只保留梯度最强的点。(edge thinning technique)
+ 4. 用两个阈值挑出强、弱边缘点。强边缘点视作真正边缘,弱边缘点下面视情况而定。
+ 5. 按滞后阈值(hysteresis)跟踪边缘,将一些弱边缘点划入边缘。具体来说,与已知边缘相连的弱边缘点划入边缘,迭代至收敛。
+
+### Hough 变换
+
+> :material-clock-edit-outline: 2023年6月19日。
+
+这是种整体处理,可用于连接边缘。抗噪声能力较强。
+
+寻找参数空间的峰值。参数空间一点对应原空间集合,原空间一点也对应参数空间一集合。
+
+### 阈值分割
+
+> :material-clock-edit-outline: 2023年6月19日。
+
+用于划分区域。
+
+在直方图峰之间确定阈值。可利用各区域均值的算术平均迭代自动确定阈值。