一、定义
边缘是图像的基本特征,包含了用于图像识别的有用信息,在计算机视觉、图像分析和图像处理等应用中起着重要作用。边缘检测,针对的是灰度图像,顾名思义,检测图像的边缘,是针对图像像素点的一种计算,目的是标识数字图像中灰度变化明显的点,图像的边缘检测,在保留了图像的重要结构信息的同时,剔除了可以认为不相关的信息,大幅度减少了数据量,便于图像的传输和处理。边缘检查的方法有多种,本文仅介绍基于Sobel 算法的图像边缘检测。
二、原理
Sobel检测算法比较简单,虽然准确度比较低但是在实际应用中效率较高,在一些对纹理要求不严格的场景下,这一算法是我们的首选。Sobel算法的核心是Sobel算子,该算子包含两组3×3的矩阵,如下图所示
对于图像而言,取 3 行 3 列的图像数据,将图像数据与对应位置的算子的值相乘再相加,得到 x 方向的 Gx,和 y 方向的 Gy,将得到的 Gx 和 Gy,平方后相加,再取算术平方根,得到 Gxy,近似值为 Gx 和 Gy 绝对值之和,将计算得到的 Gxy 与我们设定的阈值相比较,Gxy 如果大于阈值,表示该点为边界点,此点显示黑点,否则显示白点。具体见下图。
三、FPGA实现
使用system generator搭建算法模型如下:
四、实现效果
找到合适的阈值,从效果来看,sobel算法还是挺不错的。