FPGA设计——图像处理(Sobel边缘检测)

简介:

1. 概述

本设计采用FPGA技术,实现CMOS视频图像的边缘检测(sobel),并通过以太网传输(UDP方式)给PC实时显示。

2. 硬件系统框图

CMOS采用MT9V011(30万像素),FPGA采用ALTERA公司的CYCLONE IV,以太网卡采用REALTK公司的100M网卡芯片,硬件框图如下:

4e0e74234373ead60101736c9470b6da.png-wh_

硬件平台采用ETree的FPGA开发板,如下图所示:

8144d773562567aa278dc40b2e93fd18.jpg-wh_

3. 算法原理

索贝尔算子(Sobel Operator)主要用作边缘检测,它是离散差分算子。在图像上的任何一点使用此算子,将会产生对应的灰度矢量或是法矢量。

Sobel提供了水平方向和垂直方向两个方向的滤波模板G_X 和G_Y,分别如下图所示。

40a854f1088272efe970605a6e964826.png-wh_

2989e6ff003680494c0d0f8828d76474.png-wh_

Sobel算子根据像素点上下、左右邻点灰度加权差,在边缘处达到极值来检查边缘。Sobel算子优点是计算简单、速度快,但由于只采用了2个方向的模板,因此对纹理较为复杂的图像效果不是很好。当对精度要求不高时,Sobel算子是一种较为常用的边缘检测算法。

在计算得出gxy后,对其进行阈值操作,认为大于阈值的像素点为边缘点。


4. 算法实现

在Sobel算子中有负系数,使用数值比较的方式避开负数表示,具体代码如下。

1
2
3
4
5
6
assign sum0_gx = ({3 'b000,taps0x_r1} + {2' b00,taps1x_r1,1 'b0}) + {3' b000,taps2x_r1};
assign sum1_gx = ({3 'b000,taps0x} + {2' b00,taps1x,1 'b0}) + {3' b000,taps2x};                 
assign sobel_gx = (sum0_gx>=sum1_gx)?(sum0_gx-sum1_gx):(sum1_gx-sum0_gx);
assign sum0_gy = ({3 'b000,taps0x} + {2' b00,taps0x_r0,1 'b0}) + {3' b000,taps0x_r1};
assign sum1_gy = ({3 'b000,taps2x} + {2' b00,taps2x_r0,1 'b0}) + {3' b000,taps2x_r1};
assign sobel_gy = (sum0_gy>=sum1_gy)?(sum0_gy-sum1_gy):(sum1_gy-sum0_gy);

关于开方运算,Quartus II为我们提供了现有的IP可以使用,参数配置如下图所示。

fa30abd0fd3376fcde0a22c584f3fcdf.png-wh_

5. 最终效果

下图为原始图片效果。

710afd78dd5f28661d18bda2b1bab1cc.png-wh_

经过Sobel边缘检测后效果图如下所示,由于在热光灯下噪声还是比较多。

36859160d6a9120e268ff4f23ca13a16.png-wh_


本文转自 shugenyin 51CTO博客,原文链接:http://blog.51cto.com/shugenyin/1976976


相关文章
|
1月前
|
监控 算法 安全
基于颜色模型和边缘检测的火焰识别FPGA实现,包含testbench和matlab验证程序
本项目展示了基于FPGA的火焰识别算法,可在多种应用场景中实时检测火焰。通过颜色模型与边缘检测技术,结合HSV和YCbCr颜色空间,高效提取火焰特征。使用Vivado 2019.2和Matlab 2022a实现算法,并提供仿真结果与测试样本。FPGA平台充分发挥并行处理优势,实现低延迟高吞吐量的火焰检测。项目包含完整代码及操作视频说明。
|
3月前
|
算法 异构计算
FPGA强化(10):基于Sobel算法的边缘检测(二)
FPGA强化(10):基于Sobel算法的边缘检测(二)
52 0
|
3月前
|
算法 异构计算
FPGA强化(10):基于Sobel算法的边缘检测(一)
FPGA强化(10):基于Sobel算法的边缘检测
29 0
|
10月前
|
算法 异构计算
基于FPGA的图像sobel锐化实现,包括tb测试文件和MATLAB辅助验证
基于FPGA的图像sobel锐化实现,包括tb测试文件和MATLAB辅助验证
|
11月前
|
算法 异构计算
基于FPGA的图像sobel边缘提取算法开发,包括tb测试文件以及matlab验证代码
基于FPGA的图像sobel边缘提取算法开发,包括tb测试文件以及matlab验证代码
|
机器学习/深度学习 算法 C语言
FPGA图像处理之边缘检测算法的实现
边缘检测是图像处理和计算机视觉中的基本问题,边缘检测的目的是标识数字图像中亮度变化明显的点。图像属性中的显著变化通常反映了属性的重要事件和变化。这些包括(i)深度上的不连续、(ii)表面方向不连续、(iii)物质属性变化和(iv)场景照明变化。边缘检测是图像处理和计算机视觉中,尤其是特征提取中的一个研究领域。
FPGA图像处理之边缘检测算法的实现
|
算法 计算机视觉 异构计算
FPGA图像处理之rgbtogray算法的实现
Ycbcrr或Y'CbCr有的时候会被写作:YCBCR或是Y'CBCR,是色彩空间的一种,通常会用于影片中的影像连续处理,或是数字摄影系统中。Y'为颜色的亮度(luma)成分、而CB和CR则为蓝色和红色的浓度偏移量成份。Y'和Y是不同的,而Y就是所谓的流明(luminance),表示光的浓度且为非线性,使用伽马修正(gamma correction)编码处理。
|
算法 计算机视觉 异构计算
FPGA图像处理(高斯滤波)仿真篇
高斯滤波是一种低通平滑滤波,常用于模糊处理和减少噪声信号,其中模糊处理常用于预处理,即在提取目标之前去除图像中的一些细节等,这有利于高通处理。对于二维的数字图像信号,一般通过线性滤波器和非线性滤波器的模糊处理来减少强噪声信号。平滑滤波器就是用滤波掩模确定的邻域内的像素与加权值相卷积后得到的灰度均值来代替每个像素的值,这就很容易使用硬件实现。 GAUSS 滤波算法克服了边界效应,因而滤波后的图像较好。
|
算法 计算机视觉 异构计算
基于FPGA的图像sobel边缘提取算法实现,包含testbench和matlab验证程序
基于FPGA的图像sobel边缘提取算法实现,包含testbench和matlab验证程序
223 0
|
5月前
|
机器学习/深度学习 算法 异构计算
m基于FPGA的多通道FIR滤波器verilog实现,包含testbench测试文件
本文介绍了使用VIVADO 2019.2仿真的多通道FIR滤波器设计。展示了系统RTL结构图,并简述了FIR滤波器的基本理论,包括单通道和多通道的概念、常见结构及设计方法,如窗函数法、频率采样法、优化算法和机器学习方法。此外,还提供了Verilog核心程序代码,用于实现4通道滤波器模块,包含时钟、复位信号及输入输出接口的定义。
151 7

热门文章

最新文章