一种改进的sobel边缘检测(python代码实现)

一种改进的sobel边缘检测(python代码实现)

在这里插入图片描述

摘要:在图像处理中提出了一种新的边缘检测算法该算法首先对由 Otsu算法所得图像进行形态学的去除孤立像素和闭运算操作然后再用 sobel算子进行边缘检测最后将所得图像与用 sobel算子直接对原始图像进行边缘检测的图像相加。

1.改进原理与思想

针对经典 sobe算子对边缘具有很强的方向性特点提出了一种在 sobel算子上改进的算法其主要思想是先对图像进行全局阈值的分割处理‚因为 分割后的图像是二值图像此时进行边缘提取这就可以使各个方向的边缘都可以检测到。但也可能会丢失原本可直接用 sobel算子检测到的边缘。因此用处理后所得的图像与用 sobel算子直接对原 始图像进行边缘检测的图像相加,这一步就显得尤为重要。

本文综合利用边缘提取、阈值分割以及数学形 态学的方法和理论提出了一种新的边缘检测算法。
在这里插入图片描述
图1.理论框图

1.1 迭代法求阈值

根据图 1的理论框图, 先对图像进行阈值处理,这里采用的是用迭代法求全局阈值的方法。其具体的步骤如下:
i)为阈值 T T T 选一个初始估计值(建议初始估计值为图像中最大亮度值和最小高度值的中间值)。
ii)使用 T分割图像。这会产生两组像素:亮度值 ⩾ T \geqslant \mathrm{T} T 的所有像素组成的 G 1 \mathrm{G}_1 G1 ,高度值 < T <\mathrm{T} <T 的所有像素组成的 G 2 \mathrm{G}_2 G2
iii)计算 G 1 G_1 G1 G 2 G_2 G2 范围内的像素的平均亮度值 u 1 \mathrm{u}_1 u1 u 2 \mathrm{u}_2 u2
iv)计算一个新的阈值:

T = 1 / 2 ( u 1 + u 2 ) \mathrm{T}=1 / 2\left(\mathrm{u}_1+{ }{\mathrm{u}_2}\right) T=1/2(u1+u2)

v)重复步骤 i)到 iv),直到连续迭代中 T的差比预先指定的参数 T 0 \mathrm{T}_0 T0 小为止。

确定图像最佳的阈值 T 后,对分割图像进行二值化,得到用 Otsu 算法分割图像。

1.2 形态学的去除孤立像素和闭运算

形态学图像处理是以几何学为基础的它着重研究图像的几何结构这种结构可以是分析图像的 宏观性质也可以是分析图像的微观性质。而研究 图像几何结构的基本思想是利用一个结构元素去探测图像看是否能够将这个结构元素很好地填放到 图像的内部同时验证填放结构元素的方法是否 有效。

在上述目标分割的过程中可能存在把背景误当成目标的孤立像素此时用clean去除这种孤立 的像素最后再用闭运算。闭运算是对图像进行膨 胀后作腐蚀它能够填平小湖 (即小孔 )弥合小裂缝而总的位置和形状不变。

对用 Otsu算法分割的图像经过形态学处理后 再运用 Sobel算子进行边缘检测。

1.3 图像相加

由上述两节内容可知, 目前我们得到了两幅红外图像的边缘检测目标图,一幅为直接用 Sobel算子对原始图像进行边缘检测的图像,可用 A 表示。另外一幅为先经阈值分割再经形态学去除孤立像素和闭运算操作,最后用 Sobel算子进行边缘检测图像,可用 B表示。然后,将这两幅红外图像 A 与 B相加,即是最终输出目标的边缘检测图像。经过一系列的分析与处理的 B 图像弥补了 A图像的不足,但也同时丢失了 A 图像的部分细节,所以最后一步加运算所得的最终输出目标的边缘检测图像就会比 A 图像, 也就是直接用 Sobel算子进行边缘检测的图像有着更好的检测精度。

2.仿真结果

本文利用python 语言对该改进算法进行编程,实现其效果。以lena图像为例子:
在这里插入图片描述

参考文献

[1]袁春兰,熊宗龙,周雪花,等.基于Sobel算子的图像边缘检测研究[J].激光与红外,2009,39(01):85-87.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值