卷积神经网络中的图像卷积与处理
立即解锁
发布时间: 2025-09-09 00:26:30 阅读量: 11 订阅数: 15 AIGC 


深度学习实战:TensorFlow数学解析
### 卷积神经网络中的图像卷积与处理
#### 1. 图像信号表示
在图像处理中,灰度图像和彩色图像都可以用信号的形式来表示。
- **灰度图像**:一个尺寸为 \(n \times m\) 的灰度图像可以表示为函数 \(I(x, y)\),其中 \(I\) 表示坐标 \((x, y)\) 处像素的强度。对于数字图像,\(x\) 和 \(y\) 是采样坐标,取离散值,像素强度被量化在 0 到 255 之间。一个 \(N \times M\) 的灰度图像可以表示为其空间坐标的标量二维信号,即 \(x(n_1, n_2)\),其中 \(n_1\) 和 \(n_2\) 分别是沿水平和垂直轴的离散空间坐标,\(x(n_1, n_2)\) 表示该空间坐标处的像素强度,取值范围是 0 到 255。
- **彩色 RGB 图像**:彩色 RGB 图像是矢量二维信号,因为在每个空间坐标处都有一个像素强度矢量。对于尺寸为 \(N \times M \times 3\) 的 RGB 图像,信号可以表示为 \(\mathbf{x}(n_1, n_2) = [x_R(n_1, n_2), x_G(n_1, n_2), x_B(n_1, n_2)]^T\),其中 \(x_R\)、\(x_G\) 和 \(x_B\) 分别表示红、绿、蓝颜色通道的像素强度。
#### 2. 二维卷积
将灰度图像表示为二维信号后,我们可以通过二维卷积来处理这些信号。图像与图像处理系统的脉冲响应进行卷积可以实现不同的目标:
- **去除噪声**:通过降噪滤波器去除图像中的可见噪声。对于白噪声,可以使用高斯滤波器;对于椒盐噪声,可以使用中值滤波器。
- **边缘检测**:需要能够从图像中提取高频分量的滤波器。
在进行图像处理之前,了解不同的脉冲函数是很有必要的。
##### 2.1 二维单位阶跃函数
二维单位阶跃函数 \(\delta(n_1, n_2)\),其中 \(n_1\) 和 \(n_2\) 是水平和垂直坐标,可以表示为:
\[
\delta(n_1, n_2) =
\begin{cases}
1, & \text{当 } n_1 = 0 \text{ 且 } n_2 = 0 \\
0, & \text{其他情况}
\end{cases}
\]
类似地,移位单位阶跃函数可以表示为:
\[
\delta(n_1 - k_1, n_2 - k_2) =
\begin{cases}
1, & \text{当 } n_1 = k_1 \text{ 且 } n_2 = k_2 \\
0, & \text{其他情况}
\end{cases}
\]
任何离散二维信号都可以表示为不同坐标处单位阶跃函数的加权和。例如,信号 \(x(n_1, n_2)\) 可以表示为:
\[
x(n_1, n_2) = \sum_{k_1 = -\infty}^{+\infty} \sum_{k_2 = -\infty}^{+\infty} x(k_1, k_2) \delta(n_1 - k_1, n_2 - k_2)
\]
##### 2.2 信号与 LSI 系统单位阶跃响应的二维卷积
当任何离散二维信号通过具有变换 \(f\) 的线性时不变(LSI)系统时,由于 LSI 系统的线性性质,有:
\[
f[x(n_1, n_2)] = \sum_{k_1 = -\infty}^{+\infty} \sum_{k_2 = -\infty}^{+\infty} x(k_1, k_2) f[\delta(n_1 - k_1, n_2 - k_2)]
\]
LSI 系统的单位阶跃响应 \(f[\delta(n_1, n_2)] = h(n_1, n_2)\),且由于 LSI 系统是时不变的,\(f[\delta(n_1 - k_1, n_2 - k_2)] = h(n_1 - k_1, n_2 - k_2)\)。因此,\(f[x(n_1, n_2)]\) 可以表示为:
\[
f[x(n_1, n_2)] = \sum_{k_1 = -\infty}^{+\infty} \sum_{k_2 = -\infty}^{+\infty} x(k_1, k_2) h(n_1 - k_1, n_2 - k_2)
\]
下面通过一个例子来说明二维卷积的计算过程。假设信号 \(x(n_1, n_2)\) 和单位阶跃响应信号 \(h(n_1, n_2)\) 定义如下:
\[
x(n_1, n_2) =
\begin{cases}
4, & n_1 = 0, n_2 = 0 \\
5, & n_1 = 1, n_2 = 0 \\
2, & n_1 = 0, n_2 = 1 \\
3, & \text{其他情况}
\end{cases}
\]
\[
h(n_1, n_2) =
\begin{cases}
1, & n_1 = 1, n_2 = 0 \\
2, & n_1 = 0, n_2 = 0 \\
3, & n_1 = 0, n_2 = 1 \\
4, & n_1 = 1, n_2 = 1 \\
0, & \text{其他情况}
\end{cases}
\]
为了计算卷积,我们需要在不同的坐标点上绘制信号。选择 \(k_1\) 和 \(k_2\) 分别作为水平和垂直轴,将脉冲响应 \(h(k_1, k_2)\) 反转得到 \(h(-k_1, -k_2)\)。然后将反转后的函数 \(h(-k_1, -k_2)\) 放置在不同的 \(n_1\) 和 \(n_2\) 偏移值处。对于特定的 \(n_1\) 和 \(n_2\) 值,计算卷积输出 \(y(n_1, n_2)\) 时,我们观察 \(h(n_1 - k_1, n_2 - k_2)\) 与 \(x(k_1, k_2)\) 重叠的点,并将信号和脉冲响应值的坐标乘积的总和作为输出。
#### 3. 图像与不同 LSI 系统响应的二维卷积
任何图像都可以与 LSI 系统的单位阶跃响应进行卷积,这些 LSI 系统的单位阶跃响应被称为滤波器或核。例如,当我们使用相机拍摄图像时,由于手抖导致图像模糊,这种模糊可以看作是一个具有特定单位阶跃响应的 LSI 系统。该单位阶跃响应与实际图像进行卷积,产生模糊的图像作为输出。
一个 \(N \times M\) 的二维图像 \(x(n_1, n_2)\) 与二维图像处理滤波器 \(h(n_1, n_2)\) 的卷积为:
\[
y(n_1, n_2) = \sum_{k_1 = 0}^{N - 1} \sum_{k_2 = 0}^{M - 1} x(k_1, k_2) h(n_1 - k_1, n_2 - k_2)
\]
其中 \(0 \leq n_1 \leq N - 1\),\(0 \leq n_2 \leq M - 1\)。
图像处理滤波器作用于灰度图像(二维)信号,以产生另一个图像(二维信号)。对于多通道图像,通常使用二维图像处理滤波器进行图像处理,这意味着必须将每个图像通道作为二维信号进行处理,或者将图像转换为灰度图像。
下面是一个使用 Python 实现二维卷积的示例代码:
```python
import scipy.signal
import numpy as np
# 取一个 7x7 的图像作为示例
image = np.array([[1, 2, 3, 4, 5, 6, 7],
[8, 9, 10, 11, 12, 13, 14],
[15, 16, 17, 18, 19, 20, 21],
[22, 23, 24, 25, 26, 27, 28],
```
0
0
复制全文
相关推荐









