6.边缘检测:梯度——有限差分、图像的偏导数、离散梯度_3

目录

有限差分

图像的偏导数

离散梯度


有限差分

看,我们刚才讲的内容对于微积分课来说是没问题的,在微积分课上,你会得到所有那些花哨的希腊符号。

到现在为止,你可能希望你能多注意一些希腊的符号。

但问题是,我们如何在一个计算机上做这些事情,在那里我们不能做连续数学?

为了做到这一点,我们需要讨论离散梯度。

在连续数学中,f关于x的偏导就是这个极限,对吧?

所以我们在x方向上移动一点ε,减去原来的,除以ε,当极限变为零时,它就成了我们的导数。

但在离散世界中,我们不能任意靠近。 

 我们必须取有限差分。

 所以我们要做的是用有限差分来近似我们的部分。

我沿着x方向走一步,看出函数的值,然后减去原来的值,然后除以这个步骤的大小,就是1。

这就是这个值。我们说它近似等于:

 这叫做右导数。因为它是,向右走第一步。

为了讨论正确理解这些导数的方法,我们再来看看有限差分。

这是一张大卫经常在书中提到的条纹鸭子的照片,大卫福赛斯。如图:

大家可以看到,这是斑马哦。这是斑马的图片上面有很多条纹。

在这里,我们右边有一个有限差分图像。如图:

第一个问题,这是 x 和 y 的有限差分吗?

我们来看看。

这里我有一些很漂亮的几乎垂直的条纹,当我穿过的时候,你可以看到我得到了一个亮的值,一个暗的值。如图:

一个暗值,换句话说,当我看到水平方向的变化,在x中,无论这个有限差分是什么,我都会得到不同的值,

但是在这里,x几乎没有任何变化,只有y变化,你会注意到这不是一个很强的信号。如图:

好的,这就是x的有限差分,其中一个可能让你们困扰的问题是,在右边,我给你看的这张里面有正的和负的的图像。

通常,当我们显示一个图像时,我们使零黑和一些其他数字白色。或者我们说一个最小值是黑色的,一个最大值是白色的。

哦,我没说它必须是零,它必须是一个最小值。

我可以把- 128变成黑色,加上127变成白色。我可以让0变成灰色。

所以你在右边的图看到的是所谓的梯度图像灰色是0,白色是正的,黑色是负的。

这肯定会让你在处理的时候容易搞砸,在某些情况下,做一些习题集,等等,但是记住,

显示图像只是为了方便我和你,像上面图片这样,当它是一个数学函数。

图像的偏导数

这是偏导数的另一个例子。这是另一种有条纹的动物。

所以第一个问题:哪个是x哪个是y?

好,让我们看看。

这里有一些竖条纹。我们看到它们非常强烈。这随着x的变化而变化。它们不经常出现在右下边的图。

但是右下边的第三图,我们有水平条纹(红色圈),好的,很好地显示出来了。

你们可能已经算出来了,左边是关于x的偏导。在右边,是关于y的偏导数。

实际上,如果你看一下这个,你会看到这个,我要确保我把这些写对了,当我到达这条边,这条边,这条边。

随着它变得越来越亮,它的价值会越来越高。如图:

我这里使用的滤波器是 [-1 +1] 的相关滤波器。

 我在右边取这个值,从左边减去这个值,这就是这个值。

现在,相关性和卷积有关系。

因为如果我把它换过来,事情就会不一样了。

在y方向上也是+ 1或- 1,我这样写:

我这样做的原因是,其中一个是你用来计算 y 梯度的滤波器。

但它是左边的还是右边的取决于你的宇宙中y是正向上还是正向下。这是你必须做出的选择。

你可以把图像的原点放在左上角,就像计算机科学家倾向于思考的那样,或者像几千年来数学家那样放在左下角。

只有计算机科学家会搞砸这个,但我们做到了。

所以你可能需要算出y在你世界中的位置,然后应用正确的过滤器。

顺便说一下,我可以取它的大小。也就是对这些平方和求平方根,最后得到这样的图像:

这应该会给你们一个提示我们要去哪里,因为这看起来很像一个边缘图像。

离散梯度

这些是离散梯度,但现在我们想要一个算子。

是的,我们希望滤波器可以实现这些梯度的内核。

这是一个算符H的例子:

我要用三行,一会儿我会告诉你们为什么。

现在我们只有这两列。问题是,这是一个好的运算符吗?

不,这不是一个好的运算。

为什么它不是一个好的运算符? 有几个原因。

其中之一就是没有中间像素。

因此,我很难说这个像素值,因为问题是关于权重的特殊之处。

如果我想这么做这个内核, 我可能会做一个这样的一个修改。如图:

我要向右,向左。

现在,你可能会问自己为什么它是加一半和减半。

好吧,这就是原因。

它是右导数和左导数的平均值。如图:

我的意思是,正确的导数在这里是+1,这里是-1。

左边的导数是 + 1,这里是 - 1。如图:

如果我想求它们的平均值,我会把它们加起来除以2。

把它们加起来[0 -1 +1] + [-1 +1 0],得到[-1,0,1],然后除以2。如图:

得到  -\frac{1}{2}     +\frac{1}{2},中间是0。如图:

这就是为什么右边 +\frac{1}{2}   减去左边 -\frac{1}{2}  等于 左边和右边导数的平均值。

明白了吗? 


——学会编写自己的代码,才能练出真功夫。

猜你喜欢

转载自blog.csdn.net/sw3300255/article/details/82496005