如何高效的进行图像边缘检测分割

本文探讨了传统机器学习(如Sobel、Scharr和Laplacian算子)与深度学习(如Canny算子)在图像边缘检测中的应用,重点介绍了如何优化弱边缘图像处理,并通过实例展示了代码实现和改进策略。

​ 

图像边缘检测任务在实际应用场景中非常多见,一般对于检测出的边缘可以进行分割提取,计算边缘、轮廓内的面积、周长等。图像分割技术大体可以分为两类:以传统机器学习为主的图像梯度计算方法、以及以深度学习为主的端到端的图像分割学习方法,两者的计算成本和最终效果也是大相径庭。

简而言之,传统的检测分割方法计算成本要低,但是效果较差,大部分情况下都达不到我们的要求,而深度学习为主的端到端的检测分割方法计算成本高,一般都是需要GPU的计算,但是效果非常的好,目前实际落地应用中,基本全都是以深度学习为主的端到端的分割算法实现的。今天我们主要讨论以传统机器学习为主的图像梯度及算法方法,以深度学习为主的端到端的图像分割方法我们在后期线上、线下课程中会有详细的讲解,同时,我们也会有相关的介绍资料,关注 Wei Xin gong zhong hao:深度人工智能学院,我们长期分享更新干货案例和实用技术,也可以咨询相关技术。


 

 

 

思路分析

以传统机器学习为主的图像边缘检测算法主要是以图像本身的像素梯度来计算,如果相邻的像素之间像素值的梯度相差过大,我们认为即是轮廓或者边缘部分。但是很显然这只是基于简单的梯度计算,到底梯度达到多少才是我们需要的边缘,这里就需要一个阈值来确定,另一方面,计算梯度,我们可以使用求导的方法计算,但是如果只是求取一阶导数,得到的只是图像的梯度变化较大的一些轮廓部分,也就是说但凡当梯度达到阈值的部分,都会被提取出来,很容易造成提取的轮廓线段过多。

边缘检测一般是提取轮廓部分梯度变化最大的地方,既然是提取变化最大的地方,那么直接求取二阶导数不就可以了嘛,顺着这个思路继续思考,如果直接提取图像像素值的二阶导,确实是可以得到图像边缘部分的,也就是说求取图像像素值的二阶导会避免只求取一阶导而导致图像轮廓线段杂乱的现象。

但是如果只是求取图像像素值的二阶导数获取图像边缘的话,其实得到的结果是不太理想的,最主要问题就是图像的边缘部分可能是断断续续的,或者边缘连接部分不够平滑,这主要是由于图像的噪声、以及图像当中的漏洞造成的。所以在对图像进行梯度计算之前,应该先进行图像形态学操作,使用开操作和闭操作分别进行去噪和填补漏洞,让所有的边缘尽量都连接成完整闭合的线段,这样提取图像边缘的时候才不会出现断断续续、或者杂乱的线段。

到此,好像能够影响图像边缘检测的因素都被排除了,但是还有一种情况要说明,就是当被检测的图像边缘部分的像素变化不够明显的时候,是否还能够正常的检测分割出图像的边缘呢?以文章后面的人脸CT图片为例,要检测出人脸的轮廓部分是有很大难度的。

一般这种情况如果直接按照上面的流程进行检测,实际上效果是非常不理想的。由于图像本身应该被分割的边缘部分由于像素差异过小,从而导致计算出来的梯度也非常的小,这种情况求取像素值的二阶导会忽略掉这部分,二阶导数求取是图像像素梯度变化最大的地方,很明显,在这一点上,我们所要求应该被分割的“边缘”是不符合算法的要求的。

接着这个问题继续探讨,我们可以从两方面去思考解决方案,第一种解决方案就是直接抛弃图像梯度计算的这种方法,使用一种完全按照我们对图像边缘要求分割的方法;第二种方案就是继续按照图像像素梯度的计算方法改进当前的算法。

如果按照第一种方案的话,就不需要计算图像像素的梯度了,目前传统算法对于图像边缘分割都是基于像素梯度的计算,而不需要图像梯度就能实现图像分割的就只有深度学习的算法了,深度学习算法是一种基于端到端的学习方法,对于算法的设计难度较低,只需要指定输入和输出,以及对于标签的设定就可以了,深度学习方法除了对于设备的要求较高之外,训练技巧也较多,是需要一定的经验和技术积累的。

第二种方案是我们要探讨的重点,如何按照图像像素梯度计算的方法对弱边缘图像进行分割呢?其实答案的线索就藏在这个问题里面,既然图像的边缘较弱,那么意味着这部分图像的像素梯度也较弱,如果有一种方法能够增加这部分图像的像素梯度,那么问题就迎刃而解了。

实际上,确实是这样的解决思路,那么具体是如何操作的呢?操作方法就是放大像素值之间的差距,让这部分图像的像素值的梯度变得更大,当然如果放大得过多,图像的像素梯度反而会变小,因为我们知道像素值最大是255,当像素之间的差距被放大的时候,较大的像素只会逼近255,所以,在放大像素梯度的时

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值