根据 Stanford CS131 课程写的笔记(大部分为 note 翻译),英语水平一般,如有错误请评论指正
Lecture 4 Pixels and Filters
Image Sampling and Quantization
Image Type
Binary Type 每个像素不是黑 (0) 就是白 (1)
Grayscale Images 比起 Binary Type,每个像素在黑白之间有更大的范围 (0-255),即多了中间的灰色部分
Color Images 有多个颜色通道,每张图片可以在不同的颜色模型 (RGB, LAB, HSV) 上呈现,每个颜色通道值的范围取决于所选的颜色模型。
Sampling and Resolution
图片是采样的,由离散的像素组成,不是连续的,所以可能因为像素密度造成图片有颗粒感。
- Resolution 一个取样参数,由 dots per inch(DPI) 确定。标准 DPI=72
- Pixels 像素是可量化的,用一系列 (通常为 0-255) 的值表示。量化和采样会因为有限的精度而丢失信息
Image Histograms(直方图)
直方图用于测试灰度图的强度:一个特定的像素值 (0-255) 在图像中出现了几次。下图为在两个水平方向上的取样
直方图可以帮助我们删除图中某些特征,例如:
- 天空:光滑的曲线表示图像着色的一致性,和图中的天空一样
- 草:锯齿状的曲线表示着色变化范围大,和图中草的阴影部分一样
直方图提供了一个物品的量化描述,所以可以作为分类器 (classifiers) 的输入。
def histogram(im):
h = np.zeros(255)
for row in im.shape[0]:
for col in im.shape[1]:
val = im[row, col]
h[val] += 1
Images as Functions
计算机视觉处理的图像大部分是数字的,即为一种离散的形式。这种离散化是通过对常规网格上的二维空间采样得到的,最后用一个整数数值的矩阵表示图像。
处理图片时,我们可以将所有图片视作一个无限宽高的矩阵。但是,放置的图片只是一个有限的子矩阵。因此我们可以将图片写作矩阵的坐标。
也可以用 表示坐标 (m,n) 上的像素的强度,方括号表示 是离散函数。
例如:
- 灰阶图: ,表示区域宽在 ab 之间,区域长在 cd 之间,值的范围在 0-255
- 彩图: ,其中
Linear Systems (Filters)
:转换像素值形成新图片的过程,目的是为了提取有用信息(例:边缘检测)或调整图片的视觉特性(例:降噪)。
过滤器是系统的一个例子,也是将输入函数 转换到输出函数 的单位。
符号
指系统操作员 (system operator),它将一组可能的输出映射到一组可能的输入,可以写作
Examples of Filters
Moving Average
这种过滤器将一个像素值设置为周围像素的平均值,在 2D 上即为 3x3 的 9 个像素整合为 1 个,数学表达为
这种加权平均 (Weighted Average) 过滤器可以将尖锐的边缘光滑化,产生模糊或者光滑的效果。
Image Segmentation
基于简单的阈值 (Threshold) 系统可以做到基本的图像分割,数学上表示为
这种基本的图像分割过滤器将像素划分为二元分类器,非黑即白,取决于阈值函数。
Properties of Systems
以下是系统可能有的性质
Amplitude(振幅) Properties
可加性、同次性、叠加性、稳定性、可逆性
Spatial Properties
因果性、移位不变性
Linear Systems
线性系统指满足叠加性的系统。当应用一个线性系统进行过滤,我们对每个原始像素值使用相同的权重集进行加权求和,得到新的像素值。一个线性移位不变系统 (Linear shift invariant systems,LSI) 是具有移位不变性的线性系统。
线性系统还具有脉冲响应 (impulse response)。函数
由以下定义:
则脉冲响应
而一个简单的线性移位不变系统根据 delta 函数的移位特性来移动像素。
接下来,我们可以定义线性移位不变系统的过滤器
对于所有线性系统,Delta[m,n] 函数:在某个特定像素值为 1,给予一个回应。h[m,n] 函数:一个移动的 delta 函数,即基于一个移动回应。
LSI 例子:
一个移动平均过滤器即为 LSI,它是脉冲响应的总和,并且满足以下条件:
- 系统满足叠加性
- 有脉冲响应:
- 离散卷积 (convolution): (原始函数脉冲响应进行移位)
阈值系统不是线性系统。因为以下反例
Convolution and Correlation
Convolution 卷积
最简单解释卷积的方式是把它当作一个用周围像素的信息来整合成目标像素的系统,如:平均移动系统。
卷积的符号为 ,例如: 表示函数和移动脉冲响应相乘。
卷积让我们可以通过考虑系统脉冲响应,简单的计算任何经过系统的输入信号的输出。首先,我们要理解图和将信号化为一系列的脉冲函数。
前文已经提过,任何信号都可以分解为脉冲函数
的加权和,即任何信号
都可以写作
系统的脉冲响应为 ,是将脉冲函数输入系统产生的输出。缩放一个线性系统的脉冲函数将导致脉冲响应以同样的大小缩放。若系统是移动不变的,移动脉冲函数也会同样的移动脉冲响应。下图体现了这些性质。
所以,将信号 输入一个线性、移动不变的系统,得到输出为 。
同样,卷积可以在二维上执行,有以下几种计算方法。
- 将信号 输入一个线性、移动不变的系统,得到输出为 。
- 将卷积核 (Kernel) 旋转 180°,并将原始图像进行 zero-padding(用 0 在四周添加边缘),最后在 pad 的图像上滑动卷积核进行加权求和。
- 利用傅里叶变换
实例:
Sharpening Filter 锐化过滤器
强调和原图平均水平的差异
Correlation 相关性
等于卷积计算时内核没有翻转的结果。二维交叉相关为:
其中 表示 的共轭复数,在本节课中, 为实数,所以
和卷积的区别:
- 卷积是一个积分,它表示当一个函数在另一个函数上移动的时候的重叠部分。也就是说,卷积是一个过滤操作。
- 相关性比较了两个数据集的相似性。相关性计算了两个输入函 s 数相互移动时的相似性测量值。两个函数匹配都越高,它的结果值越大。也就是说,相关性是两个信号关联性的测量值。