回忆:二维梯度

梯度 = 图像 I(x,y)的偏导数向量 = [dI(x,y)/dx , dI(x,y)/dy]

梯度向量场表示最陡上升的方向和坡度(当考虑图像像素值为一个平面/高度图时)

数值导数

有限前向差分

【计算机视觉】Lecture 3:线性算子_差分

有限后向差分

【计算机视觉】Lecture 3:线性算子_线性滤波_02

有限中心差分:更精准

【计算机视觉】Lecture 3:线性算子_卷积_03

例子:空间图像梯度

【计算机视觉】Lecture 3:线性算子_差分_04【计算机视觉】Lecture 3:线性算子_卷积_05注意:从现在开始,我们将去掉常数因子1/2。我们在后面去除以它。

更具体地说

【计算机视觉】Lecture 3:线性算子_线性滤波_06

【计算机视觉】Lecture 3:线性算子_线性滤波_07

【计算机视觉】Lecture 3:线性算子_线性滤波_08

【计算机视觉】Lecture 3:线性算子_差分_09

线性滤波器

一般流程:形成新图像,其像素是原始像素值的加权和,在每个点使用相同的权重集合

性质:输出是输入的一个线性函数;输出是输入的平移不变函数(即输入图像向左移动两个像素,输出也向左移动两个像素)

例子:平均滤波—邻域中像素的平均值

例子:高斯滤波—邻域中像素的加权平均值

例子:找一个导数—邻域中像素的加权平均值

注意:“线性滤波器”中的“线性”表示相邻像素值的线性组合

图像滤波

根据局部领域内像素的某些函数改变图像中的像素

【计算机视觉】Lecture 3:线性算子_线性滤波_10

线性滤波

最简单:线性滤波,通过领域内像素值的线性组合去替代每一个像素

线性组合的模块称为“卷积核”

【计算机视觉】Lecture 3:线性算子_差分_11将其视为权加权和 (核指定权重):

100+50+30+40+5*.5+10+10+11+7.5 = 7

当然,我们不想只在一个像素上执行这个操作,而是希望在整个图像上运行这个核”

卷积(二维)

给定一个核(模板)f和图像h,卷积 f * h 定义为

【计算机视觉】Lecture 3:线性算子_差分_12

1)注意h(x, y)邻域的奇怪索引。结果就是 f 好像在与 h 组合之前顺时针旋转了180度一样

2)如果 f 有180度的对称性也没关系

3)加入没有关系,那就使用**互相关(cross correlation,图像矩阵和卷积核直接按位点乘,没有旋转180度后再做点乘)**代替

【计算机视觉】Lecture 3:线性算子_卷积_13

卷积例子

【计算机视觉】Lecture 3:线性算子_差分_14

【计算机视觉】Lecture 3:线性算子_卷积_15【计算机视觉】Lecture 3:线性算子_差分_16【计算机视觉】Lecture 3:线性算子_差分_17【计算机视觉】Lecture 3:线性算子_差分_18【计算机视觉】Lecture 3:线性算子_差分_19【计算机视觉】Lecture 3:线性算子_线性滤波_20

实际问题:边界处理

问题:我们如何处理核不能完全覆盖图像边界的那些像素?

【计算机视觉】Lecture 3:线性算子_差分_21【计算机视觉】Lecture 3:线性算子_卷积_22

不同的边界处理方法指定了不同的方法来定义图像以外像素的值

最简单的方法之一是补零,也就是我们在前面的例子中默认使用的

【计算机视觉】Lecture 3:线性算子_卷积_23

实际问题:边界处理

其他方法:

复制—每个图像以外的像素用图像中离它最近的像素值代替

【计算机视觉】Lecture 3:线性算子_差分_24

实际问题:边界处理

其他方法:

反射—在边界处反射像素值(好像有一面小镜子)

【计算机视觉】Lecture 3:线性算子_差分_25

实际问题:边界处理

其他方法:

环绕—当离开图像的右边框时,将环绕到左边框。类似地,当离开图像底部时,会在顶部重新输入。基本上,图像是一个大甜甜圈(或圆环)。

【计算机视觉】Lecture 3:线性算子_卷积_26

Matlab中的卷积

可以用conv和conv2,但可以用更新的版本:Imfilter(image,template{,option1,option2,…})

边界选项:常值,对称,复制,圆形

输出尺寸选项:和图像一样,或者全尺寸 (包括当mask在图像外的时候计算的部分值)

Corr或者conv选项:卷积旋转模板(我们之前所讨论的那样)。相关性没有进行旋转。

尝试在命令行中输入“help imfilter”了解更多细节

卷积的性质

交换律: f ∗ g = g ∗ f f * g = g * f f∗g=g∗f

结合律: ( f ∗ g ) ∗ h = f ∗ ( g ∗ f ) (f * g) * h = f * (g * f) (f∗g)∗h=f∗(g∗f)

分配律: ( f ∗ g ) ∗ h = f ∗ h + g ∗ h (f * g) * h = f * h + g * h (f∗g)∗h=f∗h+g∗h

线性: ( a f ∗ b g ) ∗ h = a f ∗ h + b g ∗ h (a f * b g) * h = a f * h + b g * h (af∗bg)∗h=af∗h+bg∗h

平移不变性: f ( x + t ) ∗ h = ( f ∗ h ) ( x + t ) f(x+t) * h = (f * h)(x+t) f(x+t)∗h=(f∗h)(x+t)

微分规则:

【计算机视觉】Lecture 3:线性算子_卷积_27

线性滤波

【计算机视觉】Lecture 3:线性算子_差分_28F (2m+1)x(2m+1) mask

例如【计算机视觉】Lecture 3:线性算子_差分_29

【计算机视觉】Lecture 3:线性算子_卷积_30

回到梯度…

【计算机视觉】Lecture 3:线性算子_线性滤波_31

有限差分滤波器

用卷积核计算有限差分

垂直边:

卷积:【计算机视觉】Lecture 3:线性算子_差分_32

水平边:

卷积:【计算机视觉】Lecture 3:线性算子_卷积_33

例子:空间图像梯度

【计算机视觉】Lecture 3:线性算子_卷积_34