专栏首页FPGA开源工作室FPGA图像处理之高斯滤波仿真篇

FPGA图像处理之高斯滤波仿真篇

FPGA图像处理之高斯滤波仿真篇

作者:lee神

高斯滤波是一种低通平滑滤波,常用于模糊处理和减少噪声信号,其中模糊处理常用于预处理,即在提取目标之前去除图像中的一些细节等,这有利于高通处理。对于二维的数字图像信号,一般通过线性滤波器和非线性滤波器的模糊处理来减少强噪声信号。平滑滤波器就是用滤波掩模确定的邻域内的像素与加权值相卷积后得到的灰度均值来代替每个像素的值,这就很容易使用硬件实现。 GAUSS 滤波算法克服了边界效应,因而滤波后的图像较好。其

gauss滤波的算子为:

gauss滤波的数学公式为:

G(I,j) ={f(i-1,j-1)+f(i-1,j+1)+f(i+1,j-1)+f(i+1,j+1)+[f(i-1,j)+(i+1,j)+f(i,j-1)+f(i,j+1)]*2+f(i,j)*4}/16 ----------------------------------------------------(1)

以上是FPGA实现高斯滤波的思路:

模块结构结构

FPGA源码:

`timescale 1ns /1ps
modulegauss_filter(
       input clk,    //
               input rst_n,
               input [15:0] data_in,
               input en_data_in,
               output [15:0] data_out,
               output en_data_out
       );
wire [15:0] line0;
wire [15:0] line1;
wire [15:0] line2;
wire [33:0]  acc_result0;
wire [33:0]  acc_result1;
wire [33:0]  acc_result2;
line3x3line3x3_inst(
           .clken(en_data_in),
           .clock(clk),
           .shiftin(data_in),
           .shiftout(),
           .taps0x(line0),
           .taps1x(line1),
           .taps2x(line2)
);     
acc acc0_inst(
       .aclr3(),
       .clock0(clk),
       .dataa_0(line0),
       .datab_0(16'd1),
       .datab_1(16'd2),
       .datab_2(16'd1),
       .result(acc_result0)
       );
acc acc1_inst(
       .aclr3(),
       .clock0(clk),
       .dataa_0(line1),
       .datab_0(16'd2),
       .datab_1(16'd4),
       .datab_2(16'd2),
       .result(acc_result1)
       );
acc acc2_inst(
       .aclr3(),
       .clock0(clk),
       .dataa_0(line2),
       .datab_0(16'd1),
       .datab_1(16'd2),
       .datab_2(16'd1),
       .result(acc_result2)
       );
wire [31:0]gauss_data;
assign gauss_data= (acc_result0 + acc_result1 + acc_result2)>>4;
assign data_out =gauss_data[15:0];
endmodule

IP设置:

波形仿真:

不对之处敬请指出

本文分享自微信公众号 - FPGA开源工作室(leezym0317),作者:lee神

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-12-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 基于FPGA的二值图像的腐蚀算法的实现

    图1 a一幅大小为486x486的连线模板二值图像,图1b~d分别使用11x11,15X15和45X45的模板进行腐蚀。我们从这个例子看到,腐蚀缩小或细化了二值...

    FPGA开源工作室
  • 基于FPGA的二值图像的膨胀算法的实现

    二值图像(Binary Image)是指将图像上的每一个像素只有两种可能的取值或灰度等级状态,人们经常用黑白、B&W、单色图像表示二值图像。二值图像是指在图像中...

    FPGA开源工作室
  • 基于FPGA的5寸LCD显示屏的显示控制

    数字图像处理是指将图像信号转换成数字信号并利用计算机对其进行处理的过程。图像处理最早出现于 20 世纪 50 年代,当时的电子计算机已经发展到一定水平,人们开始...

    FPGA开源工作室
  • Python3操作Elasticsearch进行增删改查

    # -*- coding: utf-8 -*- from elasticsearch import Elasticsearch # 默认host为l...

    双面人
  • Golang语言社区--Go语言基础第二节变量

    大家好,我是社区主编cserli(或者大家叫我彬哥也可以),Golang语言社区一直致力于Go语言相关技术干货的分享,希望初学者可以少走些弯路,我...

    李海彬
  • 你看到了菜鸟LOGO更新,我看到了马云再造物流业的雄心

    5月22日,菜鸟网络在2017全球智慧物流峰会上发布了全新品牌标识——最近一年阿里经济体下业务品牌升级的不少,比如阿里云、飞猪等等,新logo都越来越酷。菜鸟的...

    罗超频道
  • python之文件对象

    文件系统是OS用于明确磁盘或分区上的文件的方法和数据结构—即在磁盘上组织文件的方法

    py3study
  • 1.HtmlAgilityPack 爬取优酷电影名

    爬虫的制作主要分为三个方面 1、加载网页结构 2、解析网页结构,转变为符合需求的数据实体 3、保存数据实体(数据库,文本等)

    小狐狸
  • C/C++黑魔法-利用include宏读文件

    Qt君
  • React 16 Roadmap

    其中,Concurrent Mode(之前叫Async Rendering)无疑是最值得期待的东西,或将引领变革(合作式调度机制可能泛化成为浏览器能力)

    ayqy贾杰

扫码关注云+社区

领取腾讯云代金券