了解Sobel算法的效果

Sobel 是应用比较广泛的边缘算子,主要特点就是:1.基于方向性,可以执行水平或者 竖直的边缘测试。2.边缘响应效果不错。有如下定义的核心:sobel的核心常

老铁们,大家好,相信还有很多朋友对于了解Sobel算法的效果和的相关问题不太懂,没关系,今天就由我来为大家分享分享了解Sobel算法的效果以及的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!

2、边缘响应效果好。

有一个核心定义如下:

索贝尔的核心

常用的铁芯有卧式和立式两种。

OpenCV提供API:

oid cv:Sobel(InputArray src,OutputArray dst,int ddepth,int dx,int dy,int ksize=3,double scale=1,double delta=0,int borderType=BORDER_DEFAULT) 参数解释

API参数说明

了解Sobel算法的效果

根据解释可知,当ksize=-1时,将使用核心: SCHARR的改进版本。

当使用ksize=1时,不会进行高斯平滑;其他情况先进行高斯平滑,再进行边缘计算。

研究过Canny算法,知道Sobel的水平和垂直边缘检测是该算法的步骤之一。

(Canny并不是一个简单的算子,而是一个具有一定复杂度的算法;将Canny算法与卷积算子混淆似乎很不专业)

在老版本的OpenCV中,已经固化了Canny算法来为Sobel进行梯度计算,缺乏灵活性。

新版本算法发生了变化:

新版Canny重载接口

了解Sobel算法的效果

这显示了OpenCV在API设计上的进步。由于新版本的API,您可以传递自定义的水平/垂直渐变并重用Canny算法流程。

测试Sobel算法,如下:

const Mat src=. int cn=src.channels();垫子; if (方向==’两者’) { Mat hMat, vMat; cv:Sobel(src, hMat, CV_16S, 1, 0, ksize, 尺度, 增量); cv:Sobel(src, vMat, CV_16S, 0, 1, ksize, 尺度, 增量); if (resType==’abs’) { hMat=abs(hMat); vMat=绝对值(vMat); }else if ( resType==’cast’) { hMat.convertTo(hMat, CV_8UC(cn)); vMat.convertTo(vMat, CV_8UC(cn)); } ret=hMat + vMat; } else if (direction==’horizontal’) { cv:Sobel(src, ret, CV_16S, 1, 0, ksize, scale, delta); if (resType==’abs’) ret=abs(ret); else if (resType==’cast’) ret.convertTo( ret, CV_8UC(cn)); } else if (direction==’vertical’) { cv:Sobel(src, ret, CV_16S, 0, 1, ksize, scale, delta); if (resType==’abs’) ret=abs(ret); else if (resType==’cast’) ret.convertTo(ret, CV_8UC(cn)); } cv:normalize(ret, _dst, 0, 255, cv:NORM_MINMAX, CV_8UC(cn));//归一化为0到255之间2个方向的绝对值之和

2方向投射

2个方向未处理

水平方向绝对值

设置ksize=7 以获得较强的边缘响应

了解Sobel算法的效果

一些算法使用CV_8U作为梯度的输出。这是错误的。最好使用CV_16S。

那么对结果的处理方式主要有三种:abs(绝对值)/cast(截断)/none(不处理)。

Sobel 是一个简单的算法,但是非常有用。它对于图像分析非常有用。

基于梯度分析的算法基本上都会使用类似于Sobel的水平和垂直算子进行分析。

例如:LSD算法、Canny算法等。

用户评论

了解Sobel算法的效果
╯念抹浅笑

Sobel算是在边缘检测中很常用的了,这篇文章解释得很透彻!以前我用这个算法的时候总是遇到小问题,看完这篇博客之后对它原理和实现方式有了更深刻的理解。

    有12位网友表示赞同!

了解Sobel算法的效果
浮殇年华

我一直想学习边缘检测,不过总是感觉太抽象了。看了这篇文章后豁然开朗,Sobel算法的运作机制清晰易懂,甚至带图解,真的很有帮助!

    有14位网友表示赞同!

了解Sobel算法的效果
此生一诺

确实啊,Sobel算法的效果很明显,尤其是对于那些连续变化边缘的图像,效果非常好。但这篇文章里没有提到一些优化技巧,比如不同核大小的影响之类的,希望作者可以补充一下。

    有14位网友表示赞同!

了解Sobel算法的效果
巷雨优美回忆

这篇文章写的太简单了,我感觉完全不适合新手入门看。其实边缘检测的算法有很多种,不止Sobel一个,文章应该介绍一些其他算法和他们的优缺点对比才更全面。

    有17位网友表示赞同!

了解Sobel算法的效果
闷骚闷出味道了

对图像处理不太了解的人可能会觉得这篇文章有点艰深,不过如果你想深入学习Sobel算法,它是不可多得的资源!

    有11位网友表示赞同!

了解Sobel算法的效果
别在我面前犯贱

我一直以为边缘检测很简单,看了这篇文章才知道原来有很多细节需要把握。图片效果对比很清楚,可以有效地帮助理解Sobel 滤波的效果.

    有11位网友表示赞同!

了解Sobel算法的效果
失心疯i

这个 Sobel算 法确实是一个很好的入门选择,它简单易用,但效果也不错。文章讲解清晰易懂,适合想要了解计算机视觉基础知识的人学习。

    有5位网友表示赞同!

了解Sobel算法的效果
如梦初醒

我有点疑问,为什么Sobel算法在处理直线边缘时的效果不会像其他算法那样精准?作者能解释一下吗?

    有20位网友表示赞同!

了解Sobel算法的效果
寻鱼水之欢

对图像边缘检测这个话题很有兴趣,这篇文章讲解得比较深入。对于想要进一步学习 Sobel 算法的读者来说很值得阅读!

    有5位网友表示赞同!

了解Sobel算法的效果
熏染

文章中提到的 OpenCV 库应该也有一些更详细的例子和代码示例,对实际应用更有帮助。

    有5位网友表示赞同!

了解Sobel算法的效果
一别经年

我觉得Sobel算 法对于一些图像处理任务来说效果并不是很好,例如检测圆形边缘时就比较弱势。希望后面可以介绍一些针对不同边缘类型的算法。

    有9位网友表示赞同!

了解Sobel算法的效果
久爱不厌

这个看懂 Sobel 算法的效果真是个贴心的博文!我之前一直觉得这个算法很神奇,现在终于明白了它的原理了!

    有15位网友表示赞同!

了解Sobel算法的效果
青瓷清茶倾城歌

Sobel算法的本质是利用梯度信息来识别边缘,这篇文章解释得非常详细。对于想要学习图像处理的人来说,这是一篇必读的文章!

    有12位网友表示赞同!

了解Sobel算法的效果
最怕挣扎

看了这篇文章后,我对 Sobel 算法有了更深入的了解。不过还是希望能看到一些实实在在的代码实现,这样才能更好地理解它的应用。

    有16位网友表示赞同!

了解Sobel算法的效果
可儿

文章讲解很不错,特别是对 Sobel 算法的效果分析真的很贴切。我之前也用过这个算法,现在更加肯定它在边缘检测中的优势了!

    有8位网友表示赞同!

了解Sobel算法的效果
小清晰的声音

个人觉得这篇文章的内容偏深了一点,对于初学者来说可能有些难以理解。建议作者可以添加一些基础知识的铺垫。

    有15位网友表示赞同!

了解Sobel算法的效果
酒笙倾凉

Sobel 算 法确实是一个很有趣的算法,但这篇文章写的有点过于简洁,我希望看到更多的理论分析和实例应用。

    有13位网友表示赞同!

原创文章,作者:小su,如若转载,请注明出处:https://www.sudun.com/ask/116367.html

(0)
小su's avatar小su
上一篇 2024年9月1日 上午6:23
下一篇 2024年9月1日 上午6:28

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注