FPGA图像处理(六)------ 图像腐蚀and图像膨胀

默认迭代次数为1,只进行一次腐蚀、膨胀

一、图像腐蚀

1.相关定义 

2.图像腐蚀效果图

 

3.fpga实现 

彩色图像灰度化,灰度图像二值化,图像缓存生成滤波模块(3*3),图像腐蚀算法

`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Description: 图像腐蚀 (前景色是黑色(0),背景色是白色(1)  腐蚀黑色)
//////////////////////////////////////////////////////////////////////////////////
module image_erode(
   input wire           clk             ,
   input wire           reset           ,
   
   input wire [10:0]    img_width       ,
   input wire [9:0]     img_height      ,
   
   input wire           valid_i         ,
   input wire [23:0]    last_line_data  ,
   input wire [23:0]    cur_line_data   ,
   input wire [23:0]    next_line_data  ,
   
   output reg           valid_o         ,
   output reg [23:0]    img_data_o
);
    //常量声明
    parameter N = 3; //窗口大小
    //结构系数模版为{1,1,1,
    //              1,1,1,
    //              1,1,1}
 
    //变量声明
    reg         valid_d1;
    reg [23:0]  last_line_data_d1, last_line_data_d2;
    reg [23:0]  cur_line_data_d1 , cur_line_data_d2 ;
    reg [23:0]  next_line_data_d1, next_line_data_d2;

    //中心点位置,为cur_line_data_d1
    always@(posedge clk or posedge reset) begin
        if(reset) begin
            valid_d1 <= 0;
            {last_line_data_d1, last_line_data_d2} <= 0;
            {cur_line_data_d1 , cur_line_data_d2 } <= 0;
            {next_line_data_d1, next_line_data_d2} <= 0;
        end else begin
            valid_d1 <= valid_i;
            last_line_data_d1 <= last_line_data;
            last_line_data_d2 <= last_line_data_d1;
            cur_line_data_d1  <= cur_line_data;
            cur_line_data_d2  <= cur_line_data_d1;
            next_line_data_d1 <= next_line_data;
            next_line_data_d2 <= next_line_data_d1;
        end
    end

    //模板窗口范围内判断,前景色是黑色,背景色是白色,腐蚀处理就是前景色黑色减少
    //简单理解也就是,3*3窗口中所有像素值都是0时,才能将当前像素值为0输出

    always@(posedge clk or posedge reset) begin
        if(reset) begin
            valid_o <= 0;
            img_data_o <= 0;
        end 
        else if(valid_d1) begin
            if({last_line_data_d2, last_line_data_d1, last_line_data,
                cur_line_data_d2 , cur_line_data_d1 , cur_line_data ,
       
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值