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

回忆:二维梯度

梯度 = 图像 I(x,y)的偏导数向量 = [dI(x,y)/dx , dI(x,y)/dy]
梯度向量场表示最陡上升的方向和坡度(当考虑图像像素值为一个平面/高度图时)

数值导数

有限前向差分
在这里插入图片描述
有限后向差分
在这里插入图片描述
有限中心差分:更精准
在这里插入图片描述

例子:空间图像梯度

在这里插入图片描述在这里插入图片描述注意:从现在开始,我们将去掉常数因子1/2。我们在后面去除以它。

更具体地说

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

线性滤波器

一般流程:形成新图像,其像素是原始像素值的加权和,在每个点使用相同的权重集合
性质:输出是输入的一个线性函数;输出是输入的平移不变函数(即输入图像向左移动两个像素,输出也向左移动两个像素)
例子:平均滤波—邻域中像素的平均值
例子:高斯滤波—邻域中像素的加权平均值
例子:找一个导数—邻域中像素的加权平均值
注意:“线性滤波器”中的“线性”表示相邻像素值的线性组合

图像滤波

根据局部领域内像素的某些函数改变图像中的像素
在这里插入图片描述

线性滤波

最简单:线性滤波,通过领域内像素值的线性组合去替代每一个像素
线性组合的模块称为“卷积核”
在这里插入图片描述将其视为权加权和 (核指定权重):
100+50+30+40+5*.5+10+10+11+7.5 = 7
当然,我们不想只在一个像素上执行这个操作,而是希望在整个图像上运行这个核”

卷积(二维)

给定一个核(模板)f和图像h,卷积 f * h 定义为
在这里插入图片描述
1)注意h(x, y)邻域的奇怪索引。结果就是 f 好像在与 h 组合之前旋转了180度一样
2)如果 f 有180度的对称性也没关系
3)加入没有关系,那就使用交叉关联代替
红色区域的积分是这个x和y的卷积

卷积例子

在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

实际问题:边界处理

问题:我们如何处理核不能完全覆盖图像边界的那些像素?
对那些能够完全覆盖的内部像素,我么知道如何处理但在图像外面的像素,我们使用什么值呢?
不同的边界处理方法指定了不同的方法来定义图像以外像素的值
最简单的方法之一是补零,也就是我们在前面的例子中默认使用的
在这里插入图片描述

实际问题:边界处理

其他方法:
复制—每个图像以外的像素用图像中离它最近的像素值代替
在这里插入图片描述

实际问题:边界处理

其他方法:
反射—在边界处反射像素值(好像有一面小镜子)
在这里插入图片描述

实际问题:边界处理

其他方法:
环绕—当离开图像的右边框时,将环绕到左边框。类似地,当离开图像底部时,会在顶部重新输入。基本上,图像是一个大甜甜圈(或圆环)。
在这里插入图片描述

Matlab中的卷积

可以用conv和conv2,但可以用更新的版本:Imfilter(image,template{,option1,option2,…})
边界选项:常值,对称,复制,圆形
输出尺寸选项:和图像一样,或者全尺寸 (包括当mask在图像外的时候计算的部分值)
Corr或者conv选项:卷积旋转模板(我们之前所讨论的那样)。相关性没有。
尝试在命令行中输入“help imfilter”了解更多细节

卷积的性质

交换律: f g = g f f * g = 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
线性: ( a f b g ) h = a f h + b g h (a f * b g) * h = a f * h + b g * h
平移不变性: f ( x + t ) h = ( f h ) ( x + t ) f(x+t) * h = (f * h)(x+t)
微分规则:
在这里插入图片描述

线性滤波

在这里插入图片描述F (2m+1)x(2m+1) mask
例如在这里插入图片描述
在这里插入图片描述

回到梯度…

在这里插入图片描述

有限差分滤波器

用卷积核计算有限差分
垂直边:
卷积:在这里插入图片描述
水平边:
卷积:在这里插入图片描述

例子:空间图像梯度

注意用1×n 行滤波器卷积和用n×1 列滤波器卷积是不一样的

发布了9 篇原创文章 · 获赞 6 · 访问量 3240

猜你喜欢

转载自blog.csdn.net/u010307048/article/details/104510673
今日推荐