首页 > 其他分享 >FPGA/ZYNQ:Sobel边缘检测

FPGA/ZYNQ:Sobel边缘检测

时间:2024-06-20 09:20:58浏览次数:13  
标签:begin Sobel FPGA Gy 边缘 灰度 图像 rst ZYNQ

一、简述
边缘检测是图像处理和计算机视觉中的基本问题,边缘检测的目的是标识数字图像中亮度变化明显的点。图像边缘检测大幅度地减少了数据量,并且剔除了可以认为不相关的信息,保留了图像重要的结构属性。所谓边缘是指其周围像素灰度急剧变化的那些像素的集合,它是图像最基本的特征。边缘存在于目标、背景和区域之间,所以,它是图像分割所依赖的最重要的依据。由于边缘是位置的标志,对灰度的变化不敏感,因此,边缘也是图像匹配的重要的特征。边缘大致可以分为两种,一种是阶跃状边缘,边缘两边像素的灰度值明显不同;另一种为屋顶状边缘,边缘处于灰度值由小到大再到小的变化转折点处。索贝尔算子(Sobel operator)主要用作边缘检测,在技术上,它是一离散性差分算子,用来运算图像亮度函数的灰度之近似值。在图像的任何一点使用此算子,将会产生对应的灰度矢量或是其法矢量。
sobel卷积因子:

该算子包含两组 3x3 的矩阵,分别为横向及纵向,将之与图像作平面卷积,即可分别得出横向及纵向的亮度差分近似值。如果以 A 代表原始图像,Gx 及 Gy 分别代表经横向及纵向边缘检测的图像灰度值,其公式如下:

图像的每一个像素的横向及纵向灰度值通过以下公式结合,来计算该点灰度的大小:

通常,为了提高效率,使用不开平方的近似值,但这样做会损失精度,迫不得已的时候可以如下这样子:

如果梯度 G 大于某一阀值,则认为该点(x,y)为边缘点。
二、实现方法
首先通过获取33矩阵(在前面博客中有介绍)来得到相应模板与视频图像做融合,再将相应的横、纵像素值与卷积模板相乘,再将得到的Gx与Gy求取绝对值(该方法在计算上相对易于实现,减少时钟周期,也可以通过平方开根号的方法得到该值),最后将Gx与Gy相加,得到相应G值,再将该值与阈值做判断,得到边界线。
三、实现过程
首先对3
3矩阵内的值与卷积核相乘,此处将横、纵轴同时计算可节省时钟周期。

always @(posedge clk or negedge rst_n) begin
    if(!rst_n) begin
        Gx1 <= 'd0;
        Gx3 <= 'd0;
        Gy1 <= 'd0;
        Gy3 <= 'd0; 
    end
    else begin
        Gx1 <= matrix_11 + (matrix_21 << 1) + matrix_31;
        Gx3 <= matrix_13 + (matrix_23 << 1) + matrix_33;
        Gy1 <= matrix_11 + (matrix_12 << 1) + matrix_13;
        Gy3 <= matrix_31 + (matrix_32 << 1) + matrix_33; 
    end
end

再求取Gx和Gy的绝对值:

    if(!rst_n) begin
        Gx <= 'd0;
        Gy <= 'd0;
    end
    else begin  //也可判断bit[7]来确定
        Gx <= (Gx1 > Gx3) ? (Gx1 - Gx3) : (Gx3 - Gx1);
        Gy <= (Gy1 > Gy3) ? (Gy1 - Gy3) : (Gy3 - Gy1);
    end
end

最后再求取该3*3模板的G值,并将其与阈值作比较:

always @(posedge clk or negedge rst_n) begin
    if(!rst_n) begin
        G <= 'd0;
    end
    else begin
        G <= Gx + Gy;
    end
end

assign sobel_data = (G > value) ? 24'h000000 : 24'hffffff;

对sobel的处理总共耗费三个时钟周期,所以要对其他信号做延迟处理:

always @(posedge clk or negedge rst_n) begin
    if(!rst_n) begin
        video_de_r    <= 4'b0;
        video_href_r <= 4'b0;
        video_vsync_r <= 4'b0;
    end
    else begin  
        video_de_r    <= {video_de_r[1:0],    video_de};
        video_href_r <= {video_href_r[1:0], video_href};
        video_vsync_r <= {video_vsync_r[1:0], video_vsync};
    end
end

assign sobel_de    = video_de_r[2];
assign sobel_href = video_href_r[2];
assign sobel_vsync = video_vsync_r[2];

四、实验总结
本次实验效果较好,能够准确识别相应物体的边界线。
五、参考资料
正点原子领航者sdk——ov7725的sobel边缘检测
博客园——咸鱼IC
(本博客用于学习记录,如有侵权请告知)

标签:begin,Sobel,FPGA,Gy,边缘,灰度,图像,rst,ZYNQ
From: https://www.cnblogs.com/ppptwlearning/p/18258038

相关文章

  • 基于FPGA的超声波(HC-SR04)测距系统设计---第一版
    欢迎各位朋友关注“郝旭帅电子设计团队”,本篇为各位朋友介绍基于FPGA的超声波(HC-SR04)测距系统设计---第一版 功能说明: 1.利用HC-SR04超声波模块进行测距。 2.在数码管上面显示测量出来的距离。 3.数码管显示精度为cm。  4.测量结果进行滑动均值处理(窗口长度为:4)......
  • 关于FPGA对 DDR4 (MT40A256M16)的读写控制 3
    关于FPGA对DDR4(MT40A256M16)的读写控制3语言:VerilgHDL、VHDLEDA工具:ISE、Vivado、QuartusII关于FPGA对DDR4(MT40A256M16)的读写控制3一、引言二、DDR的功能性描述三、SDRAM设备中模式寄存器的可编程性四、重要的模式寄存器之MR0(1)BurstLength、Type、Order......
  • 使用芯片为ZYNQ—7020,基于野火FPGA ZYNQ开发板
    使用芯片为ZYNQ—7020,基于野火FPGAZYNQ开发板肤色模型简介YCrCb也称为YUV,主要用于优化彩色视频信号的传输。与RGB视频信号传输相比,它最大的优点在于只需占用极少的频宽(RGB要求三个独立的视频信号同时传输)。其中“Y”表示明亮度(Luminance或Luma),也就是灰阶值;而“U”和“V”......
  • 【总线】AXI总线:FPGA设计中的通信骨干
    目录        AXI4:高性能地址映射通信的基石AXI4-Lite:轻量级但功能强大的通信接口AXI4-Stream:高速流数据传输的利器结语:AXI总线在FPGA设计中的重要性   大家好,欢迎来到今天的总线学习时间!如果你对电子设计、特别是FPGA和SoC设计感兴趣,那你绝对不能错过我......
  • 自动驾驶、AI、高端医疗……芯驿电子携 FPGA 创新成果亮相 2024 上海国际嵌入式展
      6月12日至14日,2024上海国际嵌入式展(embeddedworldChina)在上海世博展览馆正式举行。本届展会以“智慧赋能,科技全球”为主题,旨在打造嵌入式系统全产业链交流与合作平台。 作为中国嵌入式技术领域领先的FPGA方案商,芯驿电子科技(上海)有限公司携多款FPGA新品和行业方案......
  • ZynqMP PL固件通过U-BOOT从指定位置加载FPGA BIT
    原因PL固件可能经常修改,而BOOT.BIN和文件系统、内核实际上基本不会变,在一个平台上可以用同一份。如果每次修改都要重新打包PL固件到BOOT.BIN,操作起来非常麻烦。所以希望PL的固件可以直接从指定位置加载。典型的可以从SD卡的FAT32分区加载。https://xilinx-wiki.atlassian.net/......
  • (056)FPGA时钟--->(006)时钟不确定性
     (006)时钟不确定性1目录(a)FPGA简介(b)Verilog简介(c)时钟简介(d)时钟不确定性(e)结束1FPGA简介(a)FPGA(FieldProgrammableGateArray)是在PAL(可编程阵列逻辑)、GAL(通用阵列逻辑)等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既......
  • (055)FPGA时钟--->(005)时钟偏斜
     (005)时钟偏斜1目录(a)FPGA简介(b)Verilog简介(c)时钟简介(d)时钟偏斜(e)结束1FPGA简介(a)FPGA(FieldProgrammableGateArray)是在PAL(可编程阵列逻辑)、GAL(通用阵列逻辑)等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定......
  • 关于FPGA对 DDR4 (MT40A256M16)的读写控制 I
    关于FPGA对DDR4(MT40A256M16)的读写控制I语言:VerilgHDLEDA工具:ISE、Vivado关于FPGA对DDR4(MT40A256M16)的读写控制I一、引言二、DDR4的特性(MT40A256M16)(1)电压和电源管理(2)内部参考电压生成(3)命令/地址延迟(CAL)(4)写入均衡(WriteLeveling)(5)自刷新模式(SelfRef......
  • 数字调制解调技术的MATLAB与FPGA实现-数字通信及FPGA概述 【1.2】
    2.信道带宽        接下来再讨论一下通信中经常碰到的信道带宽的概念。从电子电路角度的出发,带宽本意指的是电子电路中存在一个固有通频带。这个概念或许比较抽象,我们有必要做进步的解释。大家都知道,各类复杂的电子电路无一例外都存在电感、电容或相当功能的储能元件,......