图像边缘检测算法的Simulink实现及改进*
2023-12-11彭双平
彭双平
(中国船舶集团有限公司第七一〇研究所 宜昌 443003)
1 引言
图像边缘检测是进行图像处理的一种方法。图像边缘检测常常用于人脸识别、医疗图像、车牌检测和工业检测等实际问题。边缘检测还在图像去噪、生物图像、红外图像、无人机图像、遥感图像处理中发挥着重要的作用[1~6]。现在图像边缘检测在各种软件环境下已经十分成熟[7~9]。但仍有很多技术难关需要突破,例如:图像边缘检测的实时性、边缘化处理、可移植性[10~12]。而这些技术难关可以联合FPGA 和Simulink 来进行技术突破。Xilinx 公司为了方便FPGA 开发推出System generator。System generator 将一些硬件模块融入到Simulink的库工具中,这样用户可以在Simulink 中进行算法的设计与实现,并且可以直接生成HDL 文件,或者生成网表,后期在Vivado 调用,可以直接生成比特流文件。这样可以大大提高FPGA 开发速度,将开发人员从枯燥的底层硬件开发中解放出来,可以专心放在算法设计与实现上。而FPGA 具有高并发性、功耗低等优点[13~15],还可以将算法移植到边缘计算中去[16],这样又极大地推动了算法的落地。
2 边缘检测算法原理与系统设计
边缘检测算法是计算机视觉常用来做图像处理的方法之一。边缘检测算法可以提取到图像中关键的边缘信息。图像的边缘信息是指图像中存在跳变的像素点集合。在现实应用中,最常见的边缘类型是台阶型、斜坡型和屋顶型。台阶型边缘的像素值变化容易检测。斜坡型的检测与梯度有很大的关系。屋顶型的点常常与噪点混淆,这种边缘增加了我们边缘检测的难度。如图1 为三种边缘的数学模型。按照其数学特性,我们可以借助微分来进行边缘检测。由此,借助一阶导数与二阶零点是确定图像边缘的关键。
图1 三种边缘的数学模型及导数
如图2 为本次Simulink实现的具体流程,在实现的过程中,关键为进行问题分析,将现实中的问题数学化,转化为算法。算法设计的优劣决定了Simulink实现算法的效果。
图2 Simulink实现流程
图3 Roberts算子Simulink实现
3 算法实现
本文在Simulink 中实现了Roberts、Prewitt、Sobel、Laplace边缘检测算法和高斯滤波算法。
3.1 Roberts
Roberts 是一种基于局部差分的边缘检测的算子,利用交叉差分的梯度算法计算,梯度的值就代表边缘变化的强度。梯度的方向与边缘的方向正交。
梯度算子的计算方式:
进一步简化,梯度算子可简化为
图像离散化可得Roberts算子:
在Simulink的实现流程如下:
1)将串行数据转化为2*2矩阵输入。
2)进行矩阵与算子的卷积计算。
3)数据转化整理。
4)图像输出。
3.2 Prewitt与Sobel的Simulink实现
Prewitt 与Sobel 都是利用像素点的上下、左右邻点的灰度差来进行边缘检测。但Sobel算子结合了高斯平滑,在Prewitt算子的基础上对相邻点卷积计算增加了权重的概念,从而实现图像锐化并突出边缘轮廓。如图4为两种算子的卷积模板。
图4 Prewitt与Sobel算子
在Simulink中实现的流程如下:
1)将数据由串行数据转化为3*3矩阵输入。
2)四个方向并行与对应的卷积因子进行卷积运算。
3)梯度综合。
4)阈值对比。
5)输出图像。
如图5 为Simulink实现Prewitt 算子总设计图。整个过程充分利用并行计算。原有一个卷积处理的时间,在算法设计中可以实现四个卷积处理。效率整整提高三倍。
图5 Simulink实现Prewitt算法总电路图
3.3 Laplace
Laplace 算子是一种二阶微分算子。在计算的过程中,利用二阶导数零交叉特性来进行边缘检测。如图6为Laplace算子。
图6 Laplace算子
Laplace在Simulink中实现的流程如下:
1)将数据由一维串行数据转化为3*3 矩阵输入。
2)3*3 矩阵与卷积因子进行卷积运算。
3)数据综合
4)输出图像。
如图7所示,逻辑运算时,使用九路并行运算。运算速度提高了八倍。
图7 Laplace算法实现电路图
3.4 高斯滤波的Simulink实现
高斯滤波是一种典型的线性平滑滤波算法。采用加权平均法来对图像的像素点进行平滑处理和噪点消除。这个算法的关键是用加权平均代替原图中的像素点,各个方向的平滑程度是相同的。如图8为高斯滤波的卷积核模型。
图8 简化版高斯核
高斯滤波算法在Simulink的实现流程如下:
1)图像数据转化为3*3矩阵输入。
2)与卷积核进行逻辑处理。
3)数据处理(主要进行数值浮点的对齐)。
4)数据输出,图像显示。
如图9所示,在进行高斯滤波计算时可以进行三路并行计算。运行速度提高了两倍。高斯滤波可以有效地消除图像噪声。在边缘检测的过程中,可以根据需求将其加入其中。
图9 高斯滤波的Simulink设计与实现图
4 系统验证
算法在Simulink 中设计与实现后,在Matlab 中进行仿真验证。如图10为对应算法的实现效果图。
图10 边缘检测实现效果图
对实现的算法图像做进一步分析。如表1 为图像边缘检测算法的效果统计。由数据可知,经过边缘检测处理后,图像的信息熵有很大的降低,说明图像的不可控因素和随机因子有所降低。经过Roberts 边缘检测后,图像的平均梯度有所降低,根据实际效果图,也可以得出,Roberts 对图像的边缘检测是最弱的。Sobel 和Laplace 对图像边缘检测的效果极佳,平均梯度是其他方法的三到六倍。Sobel 和Laplace 可以清晰地绘制边缘轮廓。
表1 图像边缘检测效果统计
根据实验结果和参考文献,得出表2 各种边缘检测算子实现效果比较。
表2 多种算子比较
表3 高斯滤波效果统计
由图11 和图12所示,利用Simulink实现的高斯滤波算法可以消除椒盐噪声带来的影响。在进行边缘处理时,为了消除图像中的噪声,可以对图像先进行高斯滤波,在进行边缘检测。
图11 带有0.02的椒盐图像
图12 高斯滤波
高斯滤波处理后,图像的平均梯度有很大的降低,说明高斯滤波可以将图像中的噪声做平滑处理,将噪声对图像的影响降低。
5 结语
本文使用Simulink实现了当前热门的边缘检测算法。对Roberts、Prewitt、Sobel 和Laplace 等边缘检测算法的Simulink实现给出了详细的实现流程。为了更好地进行边缘检测,本文还给出了高斯滤波的Simulink实现方法和流程。用户可根据实际情况进行选取。本文也验证了Simulink 能够简单快捷地设计与实现算法,并且对后期应用于硬件提供了很大的便利。但本文的算法没有在多个场景进行实证研究,后续需要联合硬件来实现真正的边缘计算。