您的位置:首页 > 其它

理解边缘检测,从0基础开始,数学知识是重点

2017-09-10 20:10 369 查看
0基础自学数字图像处理中的边缘检测,用了几天时间,大部分用在了学数学上。要想完成边缘检测,在程序上用不了多少代码,而恰恰是这简单代码的背后,存在着存在着诸多数学原理。为此我重学了一部分数学,在这段时间里,对数学的态度也发生了改变,由过去的觉得它枯燥,抽象,无法理解,到现在的觉得数学精巧,甚至有点习喜欢上数学。

下面就把我这几点学习的过程描述一下:

边缘检测中存在的一个重要概念是梯度。

强烈推荐一个外文网站,

http://mathinsight.org/directional_derivative_gradient_introduction

给这个网站五星好评,里面对很多数学知识讲解的那是相当透彻,里面有三维动画。相比之下。。。行,我就不吐槽中国的高数教材了。

简单的说,在有一个变量的函数中,曲线某点的斜率就等于梯度。

在有两个或两个以上变量的函数中,如z = f(x,y),由xy轴组成了一个平面,里面存在n个方向,其中x和y方向是特例,对x和y方向求导,称为偏导数,偏导数又是方向导数的特例,我们可以对处x和y方向的任意方向求导,这就是方向导数的概念,在方向导数中也存在斜率,但随着曲面上某点方向不同,斜率也不同。但在某一方向,存在一个导数最大值,其值就是梯度。

这是我看了上面那个网站的讲解后,说出的我对梯度的理解,写得比较粗糙,还是建议看上面那个网站。

偏导数,方向导数,梯度是边缘检测所需要的数学基础。

通俗的讲,梯度就是变化率,在图像中,则是某点周围的像素灰度变化程度,而边缘检测研究的就是这个,当一个点周围临近点的像素差别很大,从人眼来看,这就是一个边缘。

由于计算机求导计算量大,因此用一阶差分代替一阶偏导

梯度值等于某点在水平方向和数值方向偏导数的平方,如此计算量比较大,因此用xy方向的偏导和代替梯度值。

由于计算梯度的方法是近似得出的,因此就由不同人提出了很多近似算法,来代替梯度,计算梯度的加减乘除又可以写成矩阵形式,人们把这些矩阵称为算子。

如 Roberts算子,Prewitt算子,Sobel算子等。

至此我终于明白了这些奇怪算子的由来。

这是这几天学习的成果。

而至于如何程序实现或其他细节,网上例子很多。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息