当前位置:网站首页>图像处理2:均值滤波
图像处理2:均值滤波
2022-07-23 07:20:00 【刘颜儿】
前言
正文
重点
- 生成一个3×3的矩阵
- 注意信号的同步
//均值滤波
module mean_filter
(
//global clock
input clk, //cmos video pixel clock
input rst_n, //global reset
//Image data prepred to be processd
input per_frame_vsync, //Prepared Image data vsync valid signal
input per_frame_href, //Prepared Image data href vaild signal
input per_frame_clken, //Prepared Image data output/capture enable clock
input [7:0] per_img_Y, //Prepared Image brightness input
//Image data has been processd
output post_frame_vsync, //Processed Image data vsync valid signal
output post_frame_href, //Processed Image data href vaild signal
output post_frame_clken, //Processed Image data output/capture enable clock
output [7:0] post_img_Y //Processed Image Bit flag outout(1: Value, 0:inValid)
);
//----------------------------------------------------
//Generate 8Bit 3X3 Matrix for Video Image Processor.
//Image data has been processd
wire matrix_frame_vsync; //Prepared Image data vsync valid signal
wire matrix_frame_href; //Prepared Image data href vaild signal
wire matrix_frame_clken; //Prepared Image data output/capture enable clock
wire [7:0] matrix_p11, matrix_p12, matrix_p13; //3X3 Matrix output
wire [7:0] matrix_p21, matrix_p22, matrix_p23;
wire [7:0] matrix_p31, matrix_p32, matrix_p33;
// 使用Shift_RAM_3X3 构建3X3的模板
Shift_RAM_3X3 Shift_RAM_3X3_inst
(
//global clock
.clk (clk), //cmos video pixel clock
.rst_n (rst_n), //global reset
.per_frame_vsync (per_frame_vsync), //Prepared Image data vsync valid signal
.per_frame_href (per_frame_href), //Prepared Image data href vaild signal
.per_frame_clken (per_frame_clken), //Prepared Image data output/capture enable clock
.per_img_Y (per_img_Y), //Prepared Image brightness input
//Image data has been processd
.matrix_frame_vsync (matrix_frame_vsync), //Prepared Image data vsync valid signal
.matrix_frame_href (matrix_frame_href), //Prepared Image data href vaild signal
.matrix_frame_clken (matrix_frame_clken), //Prepared Image data output/capture enable clock
.matrix_p11(matrix_p11), .matrix_p12(matrix_p12), .matrix_p13(matrix_p13), //3X3 Matrix output
.matrix_p21(matrix_p21), .matrix_p22(matrix_p22), .matrix_p23(matrix_p23),
.matrix_p31(matrix_p31), .matrix_p32(matrix_p32), .matrix_p33(matrix_p33)
);
//---------------------------------------------//
//step1:每行数据相加
reg [9:0] mean_value1;
reg [9:0] mean_value2;
reg [9:0] mean_value3;
[email protected](posedge clk or negedge rst_n)begin
if(!rst_n)
begin
mean_value1 <= 0;
mean_value2 <= 0;
mean_value3 <= 0;
end
else
begin
mean_value1 <= matrix_p11 + matrix_p12 + matrix_p13;
mean_value2 <= matrix_p21 + 8'd0 + matrix_p23;
mean_value3 <= matrix_p31 + matrix_p32 + matrix_p33;
end
end
//step2:3行数据相加
reg [11:0] mean_value;
[email protected](posedge clk or negedge rst_n)begin
if(!rst_n)
mean_value <= 0;
else
mean_value <= mean_value1 + mean_value2 + mean_value3;
end
//------------------------------------------
//lag 2 clocks signal sync
reg [1:0] per_frame_vsync_r;
reg [1:0] per_frame_href_r;
reg [1:0] per_frame_clken_r;
[email protected](posedge clk or negedge rst_n)begin
if(!rst_n)
begin
per_frame_vsync_r <= 0;
per_frame_href_r <= 0;
per_frame_clken_r <= 0;
end
else
begin
per_frame_vsync_r <= {
per_frame_vsync_r[0], matrix_frame_vsync};
per_frame_href_r <= {
per_frame_href_r [0], matrix_frame_href};
per_frame_clken_r <= {
per_frame_clken_r[0], matrix_frame_clken};
end
end
assign post_frame_vsync = per_frame_vsync_r[1];
assign post_frame_href = per_frame_href_r [1];
assign post_frame_clken = per_frame_clken_r[1];
assign post_img_Y = post_frame_href ? mean_value/16 : 8'd0;
endmodule
边栏推荐
- Learn about canvas
- 关于#redis#的问题:Redis设置数据持久化之后还是会有丢失数据的风险
- Running matlab program on GPU
- General contents of radar introduction column
- C#:in、out、ref关键字
- [ardunio] two methods to control the steering gear
- Tutorial on principles and applications of database system (040) -- MySQL query (II): set the column name or expression to be queried
- How to deal with the new development mode when doing testing?
- 数据库系统原理与应用教程(044)—— MySQL 查询(六):使用 LIMIT 选项实现分页查询
- 关于this指针
猜你喜欢
随机推荐
China leads the United States in another emerging technology field and stands at the commanding height of scientific and technological innovation
What should I do if I use PIP in the virtual environment by default
[play with FPGA in simple terms to learn 10 ----- simple testbench design]
4D antenna array layout design
Kotlin - suspend function
Wechat applet -- dynamically set the navigation bar color
Running matlab program on GPU
数据库系统原理与应用教程(038)—— MySQL 的索引(四):使用 EXPLAIN 命令分析索引
prometheus+node-exporter+grafana 监控服务器系统资源
LeetCode_491_递增子序列
ES6——周考题
决策树详解
数据库系统原理与应用教程(046)—— MySQL 查询(八):分组查询(GROUP BY)
十大券商开户风险性大吗,安全吗?
做测试如何应对新的开发模式?
关于#redis#的问题:Redis设置数据持久化之后还是会有丢失数据的风险
反常积分的审敛
一篇文章教会你使用kubernetes的基本使用
数据库系统原理与应用教程(042)—— MySQL 查询(四):使用通配符构造查询条件
Typora 修改表格宽度









