sobel_amp

首先你要明白sobel算子是一个梯度算子,梯度就是所谓的导数,导数在图像中的意义就是边缘和细节等这些灰度值变化剧烈的地方,所以sobel_amp这个算子是用来检测edges,也就是图像的边缘的。

然后amp是amplitude的缩写,中文翻译为幅度,其实就是向量的模,那么你所问的那些Filtertype其实就是不同的计算amplitude的办法,这里你要撇清以前学的那些计算什么距离啊模啊之类的观念,这些数学概念都是人定义的,所以模并不是只有我们以前学到的sqrt(a^2 + b^2)这一种计算方法。所以你也不要纠结这么多滤波器类型选择哪一种了,其实都没有多大的差别,一般情况下你就用默认的那个就行了。

Size就是滤波器的大小啊,比如你要用3*3还是5*5,这个大小的主要区别在于,如果使用的3*3,由于sobel算子的定义就是这个大小,所以直接就按照sobel梯度的计算方式去计算导数,如果使用的size比3*3要大,那么就会先对图像进行一个平滑(Gauss平滑,Gauss平滑的模版大小是你在这里选择的size-2),然后再进行梯度的计算,以检测边缘等信息。

那么直接检测和先平滑再检测的区别是什么呢?就是有时候图像会包含一些小的噪声,比如椒盐噪声,如果直接检测,那么这些噪声点也会有很强的响应,也会被检测到。然而这个时候如果对图像先进行一次Gauss平滑除去一定的噪声,那么检测效果是不是就更好了啊!

然后如果从这个模版的size的本质上去理解的话呢,你想啊,size越大,代表我们在处理模版中心的那个像素时所考虑的它周围的邻域越大,也就是这个像素点周围更多的像素被考虑进来,如果这样理解的话,因为是在计算导数,也就是灰度值的变化剧烈程度,那么从原理上来说size越大,对一些粗一些的边缘检测效果更好,反之,size越小,对细一些的边缘效果更好。但是大部分情况下都是用3*3或者5*5.

posted on 2018-07-10 17:09  兴趣而已  阅读(619)  评论(0编辑  收藏  举报

导航