首页> 中国专利> 基于FPGA的图像高斯滤波方法

基于FPGA的图像高斯滤波方法

摘要

本发明公开了一种基于FPGA的图像高斯滤波方法,包括:对摄像头内部的寄存器进行配置;设计摄像头SCCB接口时序;通过摄像头采集图像;对采集的图像进行灰度化预处理;利用高斯滤波算法对预处理后的图像进行处理;对处理好的图像进行缓存并通过显示器显示。本发明滤除了噪声、保留了图像的细节,并且基于FPGA的高度并行性,满足实时的图像处理,采用模块化设计和流水线技术,节省了硬件资源,其处理速度也远远高于软件方法。

著录项

  • 公开/公告号CN112651895A

    专利类型发明专利

  • 公开/公告日2021-04-13

    原文格式PDF

  • 申请/专利权人 南京理工大学;

    申请/专利号CN202011637052.1

  • 发明设计人 汪贵华;金韬韬;

    申请日2020-12-31

  • 分类号G06T5/00(20060101);G06T7/90(20170101);

  • 代理机构32203 南京理工大学专利中心;

  • 代理人岑丹

  • 地址 210094 江苏省南京市玄武区孝陵卫200号

  • 入库时间 2023-06-19 10:35:20

说明书

技术领域

本发明属于计量检测技术领域,具体为一种基于FPGA的图像高斯滤波方法。

背景技术

随着人工智能、计算机网络技术、大数据科学研究的迅猛发展,数字图像捕获和处理技术正在向更高层次的方向发展,人们对图像处理系统提出了新的要求,图像处理系统的硬件体积越来越小,实时性也越来越好。特别是在最近几年,图像的分辨率和扫描频率都有了较大范围的提升,传统的基于软件平台的图像处理系统已经很难满足要求,由于图像处理算法的天然并行性,FPGA的加入给图像处理带来的新的活力,特别是针对图像处理底层一些并行性的图像处理算法。

作为人类获取的最重要的信息之一,图像在采集和传送的过程中,不可避免的会引入噪声这将影响图像的视觉效果,因此非常有必要先消除噪声。图像的去噪算法可以用软件或者硬件来实现,由于底层的图像预处理算法的数据量庞大,用一般的软件实现会比较慢,对于实时性要求高的就更不适合了。ASIC是专用集成电路,比较适合解决实时的图像处理并且速度快与FPGA,但是其开发周期长、成本且其灵活性差。

发明内容

本发明的目的在于提出了一种基于FPGA的图像高斯滤波方法。

实现本发明目的的技术解决方案为:一种基于FPGA的图像高斯滤波方法,具体步骤为:

步骤1:对摄像头内部的寄存器进行配置;

步骤2:设计摄像头SCCB接口时序;

步骤3:通过摄像头采集图像;

步骤4:对采集的图像进行灰度化预处理;

步骤5:利用高斯滤波算法对预处理后的图像进行处理;

步骤6:对处理好的图像进行缓存并通过显示器显示。

优选地,对采集的图像进行灰度化预处理的具体方法为:

将采集的RGB565格式图像转换为RGB888格式图像,转换方法高位补低位;

将RGB888格式图像转为YCbCr图像,具体的公式为:

Y=0.299R+0.587G+0.114B;

Cb=-0.172R-0.339G+0.5118+128;

Cr=0.511R-0.428G-0.083B+128;

式中,R、G、B分别代表着色彩三基色红、绿、蓝的三分量的像素值,而Y代表着亮度,Cb和Cr代表着色度。

优选地,利用高斯滤波算法对预处理后的图像进行处理的具体公式为:

式中,f(x,y)为滤波模板的权值,g(i,j)为原图像数据,w(i,j)为权值。

优选地,权值具体为:

w(i,j)=w

式中,ws为空间权值,wr为亮度权值。

优选地,空间权值、亮度权值分别具体为:

式中,(x,y)表示当前像素点位置,(i,j)表示中心点的位置,δ

本发明与现有技术相比,具有以下优点:

(1)本发明图像去噪能力强;

(2)本发明采用了模块化设计和流水线的设计,节省了硬件资源,提高了处理速度,能够满足图像的实时处理;

(3)本发明通过Quartus prime和Modelsim的综合和仿真表明,使用FPGA进行图像去噪不仅能够获得良好的处理效果,其处理速度也远远高于软件方法。

下面结合附图对本发明作进一步的详细描述。

附图说明

图1是FPGA开发流程图。

图2是CMOS摄像头OV7670的内部结构图。

图3是SCCB接口的三阶段写传输时序图。

图4是摄像头采集的时序图。

图5是VGA的时序图。

图6是SDRAM状态机转移图。

图7是滤波后得到的效果图像。

图8是本发明的功能原理图。

具体实施方式

如图1、8所示一种基于FPGA的图像高斯滤波方法,具体步骤为:

步骤1、对摄像头OV7670内部的寄存器根据数据手册进行配置,具体方法为:

根据数据手册编写寄存器配置表模块,一共要对164个寄存器进行配置,配置表的代码结构如下;

一共18位的add_wdata,前2bit表示表示读写属性:0(00)表示不操作;1(2’b01)表示写操作;2(2’b10)表示读操作;3(2’b11)表示先写后读操作。中间8bit表示地址,最后8bit表示数据。例如:add_wdata的值为{2’b11,16’h1204}表示写指令,写数据为8’h04,写地址8’h12;然后再产生读命令,读地址为8’h12。

步骤2、如图3所示,设计摄像头SCCB接口时序,具体方法为:

SCCB协议类似II协议,但是其比IIC总线多了一根SCCB_E信号线,表示选中对应器件(低电平有效),还有两根SIO_C,SIO_D线。

一个基本的数据传输要素为一个阶段,SCCB有三种传输方式分别是三相写传输周期,两相写传输周期以及两相读传输周期。

每一个阶段包含九位,其中八位数据部分,以及第九位X数据,具体X是Don’t-Care数据还是NA数据取决数据传输是读操作还是写操作。其中IP address传输的是从机设备的ID,sub-address是具体从机设备的寄存器的地址,write data表示写的具体数据。两相读时钟周期包含两个阶段,分别是读取从机设备地址,读取数据,最后发送NA位置。

步骤3、配置完成的摄像头通过按键控制其进行图像采集,具体时序如图4所示。方法为:

OV7670摄像头传输的是8位数据,若要存取16位RGB565格式数据,需要在FPGA建立图像捕捉模块,将摄像头采集到的数据合成16bit。具体操作就是当HREF同步信号为高时,需要2个pclk时钟,输出一个RGB565格式的像素,具体时序原理如图5所示

步骤4、采集输出的图像格式为RGB565,进行灰度化预处理,具体方法为:

将RGB565格式转换为RGB888格式,转换方法高位补低位,再将RGB888格式转为YCbCr,具体的算法公式如下:

Y=0.299R+0.587G+0.114B;

Cb=-0.172R-0.339G+0.5118+128;

Cr=0.511R-0.428G-0.083B+128;

FPGA在进行浮点运算时,可能会导致处理异常过程中需要很多的逻辑和布线资源,影响时序收敛,即对浮点数采取先乘以256将结果取整,最后右移8位除以256的做法。为了提高运算速度,采用流水线的设计方法,第一级完成所有的乘法运算,第二级完成所有的加法运算,正负极分开加法运算,第三极完成所有的和运算。充分利用FPGA的并行运算的特点,使运算速度相对于传统的串行处理器提高了三倍。

步骤5、利用改进的高斯滤波算法对预处理后的图像进行处理,具体方法为:

改进的高斯滤波算法借鉴了双边滤波的理论,既平滑了图像也保持了图像的细节。该滤波模板由两部分构成,一部分是根据距离中心像素的距离远近得到,即空间权值,另一部分由模板内其它像素与中心像素值决定,即亮度权值,新的滤波模板权值计算如下:

式中,f(x,y)为滤波模板的权值,g(i,j)为原图像数据;w(i,j)为权值;

进一步地,权值具体为:

w(i,j)=w

w

步骤6、将处理完成的图像经过SDRAM存储缓存,具体方法为:

如图6所示,采用的SDRAM型号是-是IS42S16400F芯片,存储容量为64M,拥有4个bank,每个bank存储32Mbit数据,拥有16位的数据位宽。SDRAM控制器设计包括:

(1)SDRAM初始化模块:当时钟上电且稳定执行100us的空操作(NOP),然后执行一次预充电(PRECHARGE),所有的bank必须被充电。在至少两个自动刷新时间后,bank会处于空闲状态,准备进入加载模式寄存器配置。模式寄存器配置根据各个个位与具体模式功能的对应关系进行配置。

(2)刷新模块:SDRAM的刷新是对一个bank或者所有bank进行操作,包括自动刷新和自刷新。为了保证SDRAM内部的数据不被丢失,两次的刷新的时间之间的最大间隔为15us.因为根据SDRAM的数据手册可知电容存储电量时间为64ms,就将所有行刷新一遍,一共有4096行,即每隔64_000us/4096=15.625us就要刷新一次。

(3)写操作:在进行写操作状态之前,通过激活命令(Active)激活特定的行和bank,即对列地址进行操作。Active命令触发后开始写入数据,写完一行需要重新给Precharge命令,此后重新激活Active命令,以此循环,直到写数据完成。

(4)读操作:读操作和写操作类似,在读操作状态之前,先要经过激活命令,不同在于读操作从存储单元到传输接口存在一定的潜伏期,即列地址脉冲选通潜伏期(CAS)设计中假如状态机同时收到读写请求,首先进行写操作请求,随后在进行读操作请求。

整个SDRAM设计状态机的过程如下图所示:

步骤7、通过设计VGA接口设计在显示器上实时的显示出来,如图7所示。

显示屏采用的分辨率为640*480,其刷新速率为60Hz,每幅图像为525行,每行800个值,即完成一个像素需要1s/60/525/800=40ns,因此接口选用25MHz最合适,而FPGA的晶振为50MHz,可以通过PLL分频得到。显示器的扫描方式为:逐行从屏幕的左上角一点开始,从左向右逐点扫描,每扫描一行,电子束回到屏幕的左边的下一行起始位置,在这期间,CRT对电子束进行消影,每行结束时,用行同步信号进行行同步;当扫描完所有的行,形成一帧,用场同步信号进行场同步,并使扫描回到屏幕的左上方,同时进行场隐,开始下一帧。通过VGA接口的设计能够通过显示器得到实时的去噪后的图像。

而FPGA可以根据需求,通过设计完成不同功能的硬件电路,在设计上可采用流水线和并行处理的技术,使其在算法的处理上具有高效性,并且其开发周期相对于ASIC开发周期短,易于维护和拓展应用,在实时的图像处理方面具有很大的优势,因此选用FPGA作为主控芯片对图像进行处理可以保证其实时性、准确性及其智能性。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号