默认迭代次数为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 ,

最低0.47元/天 解锁文章
9166

被折叠的 条评论
为什么被折叠?



