硬件研发网|技术阅读
登录|注册

您现在的位置是:硬件研发网 > 技术阅读 > FPGA实现Sobel算法进行边沿检测

FPGA实现Sobel算法进行边沿检测

一. 简介


本例将在上例的基础上,添加一个简单的图像处理算法---边缘检测(Sobel算法)。串口助手发送图片过来之后,结果边缘检测算法处理之后再输出到VGA进行显示。


边沿检测算法主要是针对灰度图进行处理的,所以模块内部还需要添加个RGB565转灰度的功能。边缘检测算法有很多种,例如Sobel、Canny、Prewitt等等,各有其优缺点。本次选择Sobel进行学习,主要是因为其相对而言比较简单,FPGA易于实现。


二. Sobel算法


Sobel主要是利用图像两个方向的梯度来与阈值进行对比,大于阈值的点,被认为是边缘点。算法步骤大体如下


  • 求x,y方向的梯度dx,dy

  • 求出近似梯度G = dx2 + dy2开根号,也可以近似为 G = |dx| + |dy|,方便FPGA处理

  • 与阈值进行对比,大于阈值则为边缘,将该像素赋值为255,否则为0

可以看出算法的核心是如何计算图像两个方向的梯度。


(一). 梯度计算


梯度计算主要是用到了两个3x3大小的卷积核(如下图)。上图负责x方向,下图负责y方向。