目录
线性(Linear)
脉冲函数和响应
过滤一个脉冲信号
线性(Linear)
欢迎回到计算机视觉。
我们将继续讨论更多有关过滤和整理一下有关这方面的基本知识,因此下次我们可以将其应用于更复杂的过滤用途。
线性的重要原因将在一分钟内变得清晰。
让我们做一些关于“直觉”:
一个运算符(亦称算子),我们叫它H,或者一个系统,如果有两个属性,称为线性。
(现在,我要展示的是 f1 和 f2 都是函数,a是常数)
所以第一个属性叫做相加性(Additivity),这基本上只是事物的总和。
所以,如果我有一些运算符,并将其应用于两个函数的总和,f1 加上 f2,我只得到每个函数的操作符之和:
看起来很像加法和乘法的分配律, 但这是相加性的。
我们来另外一个,乘法的缩放(Multiplicative scaling),它有时被称为缩放属性,
但实际上,在技术术语我认为是1度同质性。
(怎么理解同质性,举个例子:市场同质性是指细分的子市场间相似的程度)
如果你只是乘以你的函数,在这种情况下的,你就会得到,
因此当函数乘以常数a时,该常数只是以线性方式传播。
好了,我们做了一些乘法,然后我们求和它们,因为乘法和加法基本上都有这些属性,我们要做的过滤操作将是线性的。
我们稍后将会利用这个线性特点。
小测验:
哪些不是线性的?
A、总和;
B、函数的最大值;
C、平均值;
D、平方根;
E、D和B;
答案:E。最大值是不会改变的。如果我有两个函数并且取最大值,它由单个最大值决定,其他的函数没关系。
还有方根,这不是线性的,因为平方根从不是线性。我想你可以搞清楚。
脉冲函数和响应
线性允许我们做的是建立信号或函数,记住一个图像,一次一个片段然后就能知道线性运算是如何影响整个图像的。
因为,基本上,线性的方式允许我们这样说,如果我能把一堆东西总结成一幅图像,
那么如果我对整个图像应用一个线性运算,它就等于对每一部分应用线性运算的和。
所以,要做到这一点,我们需要函数的这些构造块。函数的构造块就是所谓的脉冲。
在离散世界中,脉冲是一个很容易理解的信号。它是一个值为1的单点,看起来就像一个脉冲。如图:
在连续的世界,脉冲有点棘手,因为在一个点的宽度上意味着什么?
脉冲实际上是一个小的信号,其面积为1。如图:
因此,随着物体的宽度越来越窄,为了保持相同的面积,它必须在高度上变得更高。如图:
在极限情况下,你会得到一个脉冲。
它的宽度是0,高度是无限的,这是它构成整体所必需的,它的面积是1,这就是所谓的脉冲。
我们将主要停留在离散的世界,所以我们不必为此担心太多。
所以,关于脉冲的一件很酷的事情如下:
假设我有一个黑盒子,黑盒子是一个函数H,抱歉,它是一个算子H。如图:
事实上,我们并不知道有关它的任何事情。
但是如果我投入了一个脉冲,所以我给黑子(算子H)注入一个脉冲。如图:
我来看看发生了什么。如图:
顺便说一下,这种反应叫做脉冲响应。
很酷的事情是,如果我知道黑盒子H(x)的脉冲响应是什么,我可以用H(x)来描述这个算子要做什么。
有效的原因如下:
因为以下图片左边的任何脉冲序列,可以被描述为通过添加左边那些单脉冲的移位集和缩放集。
如果我知道这个黑盒子是如何影响单脉冲的。我将能够说它是如何影响整个图像的。这就是为什么脉冲响应是重要的。
我们用2D来表示,如图:
过滤一个脉冲信号
那么,让我们来看看图像中的脉冲响应是什么样子。
在这里我们有一种脉冲。
好的,所以,这是我们的脉冲,如图:
它只是一个值为1的像素。
我们将用一些内核过滤这个脉冲,内核为。
记住内核掩码,我们移动的内核来过滤,所以我们有我们的H。
所以问题是,输出是什么?
首先我放下我的过滤器,你看到我的过滤器就像这样。如图:
所以它没有碰到1,所以它的值就是0。
现在,移动过滤器一点。它只是把F放在这里,所以这个像素在那里拉出F,所以F就在那里,在我的结果中。如图:
把它再移一次,我得到了什么,我得到了e。如图:
再把它再移一次,我得到了什么,我得到了d。如图:
你会注意到,尽管过滤器从左到右经过D-E-F。
在图像中,出现的是F-E-D,反过来,这只是因为这种相关性把它拉了上来的。
并且它不会让你感到惊讶,它不仅左右翻转,而且还可以上下翻转它。如图:
这就是当你做一个脉冲的相关滤波器时会发生的事情。
只是因为你滑动它的方式,你将结束翻转整个脉冲响应。
顺便说一下,我假设这个过滤器的中心就是我们所谓的参考点。如图:
所以无论中心在哪里,无论哪个中心像素。那是结果中的一个。如图:
你可以使用不同的点,但是我们假设中心像素是过滤器的参考像素。
小测验:
假设我们的内核大小为MxM,我们的图像是NxN。 使用过滤器过滤某图像需要多少次?
A、M*N*2
B、M*M*N*2
C、M*N*N
D、M*M*N*N
答案:D。因为每一个像素都必须乘以所有的内核系数,所以有M*N个系数。
我必须在N*N个像素上做到这一点,所以操作的次数是。
稍后我们会谈一点点。关于所谓的线性可分离滤波器。
如果你有非常快的电脑,我们就不再使用它们了,但是它能使事情变得更快。
——学会编写自己的代码,才能练出真功夫。