c#用canny算子做边缘提取_恩智浦智能车之边缘检测算法

最近一直在思考阳光对摄像头的影响问题如何解决,在网上找了很多资料也没有找到什么合适的算法,或者方法。但是了解到了一些有意思的算法——边缘提取算法

边缘提取本质像是一种滤波,根据算子的不同会有不同的效果,在MCU上的处理时间也不同。比较常用的方法有三种,Sobel算子,Laplacian算子,Canny算子。
Sobel算子检测方法对灰度渐变和噪声较多的图像处理效果较好,sobel算子对边缘定位不是很准确,一般情况下图像的边缘不止一个像素;当对精度要求不是很高时,是一种较为常用的边缘检测方法。
Canny方法不容易受噪声干扰,能够检测到真正的弱边缘。优点在于,使用两种不同的阈值分别检测强边缘和弱边缘,并且当弱边缘和强边缘相连时,才将弱边缘包含在输出图像中。但是由于算法的复杂性导致其所需时间的增加。
Laplacian算子法对噪声比较敏感,所以很少用该算子检测边缘,而是用来判断边缘像素视为与图像的明区还是暗区。拉普拉斯高斯算子是一种二阶导数算子,将在边缘处产生一个陡峭的零交叉, Laplacian算子是各向同性的,能对任何走向的界线和线条进行锐化,无方向性。这是拉普拉斯算子区别于其他算法的最大优点。

我最近将Sobel算子的边缘提取做成了实例,效果还是比较满意的,但是我还没有想好是否将其运用在智能车的程序中。

9a53c680b81b9372fd1f922ce861aba6.png
手机壁纸

afb68c3b4281a0c85caf7251a643bbc7.png
通过我的智能车摄像头捕捉手机 然后处理并显示在智能车上的屏幕上 所需时间大概为5ms

下面是赛道的处理结果(疫情期间,赛道简陋,在卧室搭起来的)

5f301924bee89ba3d325f5820dd5eaad.png
菱形是今年的特殊元素(可能,因为到现在还没有出规则)

4759e6a677a6685d817f1f975174450f.png
处理后的图像

此时看到,边界上会有一些嘈杂的细线,此时只需在对其进行二值化即可。下面是我用MATLAB仿真处理的图像。

713702eaa103daf941183eee1ff5c61e.png
左一为智能车获取的灰度图像 中间为经过边缘提取后的图像 右一为经过二值化后的图像

由于并没有决定是否将其运用到智能车上,所以也还没有对这个算法进行优化处理,目前的效果只能说还算可以。

以上就是我今天分享的内容啦,有兴趣的朋友们也可以私聊我或者评论。排版比较丑,请见谅。代码就不在这里写了,否则会更乱。有兴趣的可以点个赞 !加个关注! 私聊我啊 !

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值