首页 > 其他分享 >FPGA/ZYNQ:膨胀与腐蚀

FPGA/ZYNQ:膨胀与腐蚀

时间:2024-06-13 10:35:02浏览次数:22  
标签:begin FPGA always 腐蚀 ZYNQ 图像 rst 膨胀

一、简述
膨胀和腐蚀是数学形态学处理中的两个基本操作,主要针对的是二值化图像。膨胀与腐蚀都是针对白色像素块而言的,简单的理解就是膨胀将白色区域扩大,腐蚀将白色区域缩小。二者功能主要包括:消除噪声;
分割(isolate)出独立的图像元素,在图像中连接(join)相邻的元素;
寻找图像中的明显的极大值区域或极小值区域;
求出图像的梯度。
膨胀,就是将需要处理的图像与一个卷积核处理,该核可以是自定义的任何形状,将核放入图像后,只要能够与原白色区域有连接,即可将该核的锚点(anchorpoint)膨胀,这种操作有利于连接断开的领域。

腐蚀,与膨胀类似,不过只有自定义的核能够完全放入原图像中时,该核锚点才为白色像素点,将原图像的其余白色像素点变为黑色像素点,这种操作可以将孤立的噪点消除。

二、实现方法
先通过33矩阵(33矩阵建立已经在前面博客中介绍)建立33的处理模板,再将该模板与输入图像遍历,腐蚀先将33中每一行做与运算,再将上一步三次与运算的结果再做一次与运算;膨胀则是在相同操作上做或运算。
腐蚀:

膨胀:

三:具体操作
腐蚀:
step1:先将3*3的每一行做与运算

always @(posedge clk or negedge rst_n)begin
    if(!rst_n)begin
        erode1 <= 1'b0;
        erode2 <= 1'b0;
        erode3 <= 1'b0;
    end
    else begin  
        erode1 <= filter_11 && filter_12 && filter_13;
        erode2 <= filter_21 && filter_22 && filter_23;
        erode3 <= filter_31 && filter_32 && filter_33;
    end
end

step2:再将上一步的三个值做与运算

always @(posedge clk or negedge rst_n)begin
    if(!rst_n)begin
        erode <= 1'b0;
    end
    else begin
        erode <= erode1 && erode2 && erode3;
    end
end

assign erode_data = erode?24'hffff:24'h0;

总共消耗两个时钟,再对相关信号做延迟

always @(posedge clk or negedge rst_n)begin
    if(!rst_n)begin
        erode_de_r <= 2'b0;
        erode_href_r <= 2'b0;
        erode_vsync_r <= 2'b0;
    end
    else begin 
        erode_de_r <= {erode_de_r[0] ,clken};
        erode_href_r <= {erode_href_r[0] ,href};
        erode_vsync_r <= {erode_vsync_r[0] ,vsync};
    end
end

膨胀:
step1:先对3*3的行做或运算

always @(posedge clk or negedge rst_n)begin
    if(!rst_n)begin
        dilate1 <= 1'b0;
        dilate2 <= 1'b0;
        dilate3 <= 1'b0;
    end
    else begin  
        dilate1 <= filter_11 || filter_12 || filter_13;
        dilate2 <= filter_21 || filter_22 || filter_23;
        dilate3 <= filter_31 || filter_32 || filter_33;
    end
end

step2:再对上一步的结果做或运算

always @(posedge clk or negedge rst_n)begin
    if(!rst_n)begin
        dilate <= 1'b0;
    end
    else begin
        dilate <= dilate1 || dilate2 || dilate3;
    end
end

消耗2个时钟,再对相关信号做延迟处理

always @(posedge clk or negedge rst_n)begin
    if(!rst_n)begin
        dilate_de_r <= 2'b0;
        dilate_href_r <= 2'b0;
        dilate_vsync_r <= 2'b0;
    end
    else begin 
        dilate_de_r <= {dilate_de_r[0] ,clken};
        dilate_href_r <= {dilate_href_r[0] ,href};
        dilate_vsync_r <= {dilate_vsync_r[0] ,vsync};
    end
end

四、总结
本实验实现了对视频的膨胀和腐蚀操作,效果较好。(如有不懂可私信)
五、参考资料
1.Fighting_FPGA-csdn
2.博客园——咸鱼IC:FPGA:腐蚀膨胀
(本文用作学习记录,如有侵权请告知)

标签:begin,FPGA,always,腐蚀,ZYNQ,图像,rst,膨胀
From: https://www.cnblogs.com/ppptwlearning/p/18245360

相关文章

  • FPGA/ZYNQ:中值滤波
    一、简述滤波是图像处理领域应用非常广泛的工具之一,它可以改善图像质量,包括去除高频噪声与干扰、图像平滑等。我们常见的空间滤波有中值滤波和均值滤波。图像可以看成是一个定义在二维平面上的信号,该信号的幅值对应像素的灰度(彩色图像对应RGB三个分量)。图像的频率指的是空间频......
  • 中端 20 纳米 FPGA:10AX115N4F45E3LG、10AX115N2F45I2LG、10AX115N2F45I1SG、10AX115N1
    Arria®10器件系列包括高性能,低功耗的20nm中端FPGA和SoC。Arria®10器件系列实现了:比上一代中高端FPGA更高的性能。通过一套综合节能技术来降低功耗。Arria®10器件专为各领域中高性能、功耗敏感的中端应用而设计。Arria®10GX1150FPGA系列器件:10AX115H3F34E2LG10A......
  • 关于计算核心先进性和稳定性的差异以及CPU/MCU/PLC/工控机/DSP/FPGA/PAC/SOC/GPU/NPU/
    各种名称的关系PLC分为组合式和一体式,整体上落后于个人商用主机主要使用梯形图语言(LD)、指令表语言(IL)、功能模块图语言(FBD)、顺序功能流程图语言(SFC)、结构化文本语言(ST)编程为什么PLC贵为什么PLC使用的处理器都比较低端?(比如低端赛扬甚至STM32)PLC无需进行多任务处理CPU越......
  • (16)DAC接口--->(001)FPGA实现AD5601接口(一)
     (001)FPGA实现AD5601接口(一)1目录(a)FPGA简介(b)IC简介(c)Verilog简介(d)FPGA实现AD5601接口(一)(e)结束1FPGA简介(a)FPGA(FieldProgrammableGateArray)是在PAL(可编程阵列逻辑)、GAL(通用阵列逻辑)等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半......
  • RGMII接口--->(011)FPGA实现RGMII接口(十一)
     (011)FPGA实现RGMII接口(十一)1目录(a)FPGA简介(b)IC简介(c)Verilog简介(d)FPGA实现RGMII接口(十一)(e)结束1FPGA简介(a)FPGA(FieldProgrammableGateArray)是在PAL(可编程阵列逻辑)、GAL(通用阵列逻辑)等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种......
  • FPGA数字信号处理之:PID调节算法的实现
    一、定义        PID控制是经典控制理论中控制系统的一种基本调节方式,是具有比例、积分和微分作用的一种线性调节规律,它基于对被控对象的测量值与设定值之间的差异进行调整来实现稳定和精确的控制。        PID控制器由比例单元(P)、积分单元(I)和微分单元(D)组成,......
  • 基于FPGA的图像直方图均衡化处理verilog实现,包含tb测试文件和MATLAB辅助验证
    1.算法运行效果图预览FPGA的仿真图如下:   将数据导入MATLAB,对比结果如下:  2.算法运行软件版本MATLAB2022a vivado2019.2 3.部分核心程序  `timescale1ns/1ps////Company://Engineer:////CreateDate:2023/01/1901:47:15//DesignNa......
  • 搬运文档+个人总结:FPGA和ZYNQ的上电启动时序(编辑中)
    ZYNQ的上电时序主要参考的UG585。PS_POR_B复位引脚解除断言后,硬件立即对引导带引脚进行采样,并可选择启用PS时钟PLL。然后,PS开始执行片上ROM中的BootROM代码以启动系统。POR会重置整个设备,而不会保存先前的状态。非POR类型的复位也会导致BootROM执行,但硬件不会对......
  • FPGA数字信号处理之:小波变换算法的实现
    一、定义        小波变换(wavelettransform,WT)是一种新的变换分析方法,它继承和发展了短时傅立叶变换局部化的思想,同时又克服了窗口大小不随频率变化等缺点,能够提供一个随频率改变的“时间-频率”窗口,是进行信号时频分析和处理的理想工具。它的主要特点是通过变换能够......
  • 含税仅498元起!复旦微ARM + FPGA SoC全国产工业核心板,性价比真高!
     ......