西南交通大学
研究生学位论文
基于FPGA的图像处理算法及 压缩编码的研究与实现
矩 姓
级 三Q Q望丝
名 堑!垦鋈
申请学位级别 王堂亟±
专 业 出鲎三堡
指导教师 高疃蓥丝蕉
二o o七年三月
摘要
本文以“机车车辆轮对动态检测装置”为研究背景,以改进提升装置性 能为目标,研究在Altera公司的FPGA(Field Programmable Gate
Array)芯片Cyclone上实现图像采集控制、图像处理算法、JPEG(Joint Photographic Expert
Group)压缩编码标准的基本系统。本文使用硬件描述语言Verilog,以 RedLogic的RVDK开发板作为硬件平台,在开发工具QUARTUS2
6.0和MODELSIM SE 6.1B环境中完成软核的设计与仿真验证。
数据采集部分完成的功能是将由模拟摄像机拍摄到的图像信号进行数字 化,然后从数据流中提取有效数据,加以适当裁剪,最后将奇偶场图像数据 合并成帧,存储到存储器中。数字化及码流产生的功能由SAA7113芯片完成,
由FPGA对SAA7113芯片初始化设置、控制,并对数字化后的数据进行操 作。
图像处理算法部分考虑到实时性与算法复杂度等因素,从装置的图像处 磐流程中有选择性地实现了直方图均衡化、中值滤波与边缘检测三种图像处 理算法。
压缩编码部分依据JPEG标准基本系统顺序编码模式,在FPGA上实现 了DCT(Discrete Cosine Transform)变换、量化、Zig--Zag扫描、直流系数 DPCM(Differential Pulse Code Modulation)编码、交流系数RLC(Run Length
code)编码、霍夫曼编码等主要步骤,最后用实际的图像数据块对系统进行了 验证。
关键词FPGA;图像处理;直方图均衡化;中值滤波;边缘检测;DCT
变换;霍夫曼编码
Abstract
With
the backgmund of“the dramatic inspect equir'merit of vehicle wheels”
and the aim of improving the performance of the equipment,this paper studies about the realization of image collection and control,image processing algorithm,
and
JPEG basic system
onthe chip Cyclone from the Altera company’s FPGA.
With the hardware platform of the Redlogic’s RVDK,it completes the design and the simulative confirmation of the soft
corewith t11e hardware descriptive 1anguage Verilog in the environment of the exploited t001
QUARTUS26,0 and MODELSIM—SE 6.1 B.
The function of the image collection part is
toconvert the analog data from the
analogcamera into the digital data,and then to pick up the useful data from the data flow,and fmally to incorporate也e odd
and evenfield into
aflame
andsave
it
to amemory after the appropriate cut.111e function produced by the digital data flow is completed bv SAA7 11 3 chip,however,FPGA chip initializes
andcontrols the SAA7 ll 3 chip.and manipulates the digital data
aswell.
1址ing account of some factors such
asreal time character complexity of algorithm,the image processing algorithm part chose three algorithms
torealize,
they were histogram equalization,median flter and edge inspection,
According to the order coding mode of the JPEG basic system,the compressed code part realized DCT
transforrn,quantized,Zig--Zag scan,DPCMencoding of direct
currenttoefficient,RLC encoding of alternating current
coefficient,Huffman encoding.Finally,allactual image data was used to validate the whole system.
Key words FPGA;image processing;histogram equalization;median filter;
edge inspection;DCT transform;Huffman encoding
亘蜜窑道盔兰亟圭塑塞圭掌焦筐塞 蔓!夏
第1章绪论
1.1课题研究背景及意义
“机车车辆轮对动态检测装置”是一种非接触式轮对动态自动检测装置
,采用光截图像测量技术和电磁超声探伤技术实现对车轮的外形尺寸和踏面 缺陷的自动检测。该装置于2003年9月通过了铁道部的科技成果鉴定,目前
正处于推广应用阶段【1J。
机车车辆轮对动态检测装置的车轮外形尺寸检测部分,使用了光截图像 测量技术来实现非接触式的在线检测。光截图像测量技术的原理是激光线光 源照射待测物体表面形成外形光截曲线;与光源成一定夹角的CCD摄像机拍 摄光截曲线,采集后对获得的曲线图像进行处理。为了提高检测精度,装置 采取对同一车轮进行多点测量,图像数据的吞吐量非常大,而且机车通过速
度越快,在单位时间内要采集、处理、传输的数据量就越大。如何高效、实
时地处理、传输采集到的大量图像数据,是提升装置性能的关键。目前,该 装置采用的是先存储采集到的图像数据,再利用计算机以软件方式完成图像 处理分析的任务。由于目前计算机自身性能的限制,完成数字图像处理的速 度有限,不能达到实时处理的目标。此外,装置对采集到的大量图像数据直 接进行存储,占用了大量存储空间,既增加了硬件成本,同时也使数据的传 输速度缓慢。如果将执行图像处理任务的计算机改用专用的硬件系统来实现,并对转储的数据进行压缩编码,将能有效提升设备的性能。
随着图像处理技术、压缩编码技术的不断发展和完善,以及VLSI(Very
Large Scale
Integration)技术的迅猛发展,使得用硬件电路实现实时图像处理成为可能。近年来不断涌现的各种高性能的专用芯片、数字信号处理器以及 超大规模可编程逻辑器件,使现代实时图像处理系统的设计变得更加方便灵 活。用硬件实现图像处理的方案有多种,可选的目标器件有4类:
DSP(Digital Signal
Processor)处理器ASICs(Application—Specific Integrated
Circuits)专用集成电路ASSPs(Application—Specific Standard
Prouc招)专用标准电路模块FPGA(Field Programmable Gate
Array)现场可编程门阵列西南交通大学硕士研究生学位论文
第2页 DSP处理器主要是指目前最常用的基于CPU(CentralProcessing UniO架
构的器件,通过软件指令的方式完成DSP算法,拥有多个硬件乘加器,使用 了环形叠代的方法进行乘法操作,且许多DSP处理器还拥有使用多乘法器的 并行指令,用于加速算术运算,但由于其顺序的工作方式、较低的数据处理 速率,只有在处理数据量小而算法比较复杂的情况下具有较明显的优势。ASSP和ASIC是专门针对完成某种DSP算法的集成电路器件,因此在 性能指标、工作速度、可靠性和应用成本上优于DSP处理器,但在功能重构,
以及应用性修正方面缺乏灵活性;ASIC虽然有一定的可定制性,但开发周 期长,而且有一个最小定制量,因此应用风险和开发成本过高,正在逐渐失 去其实用性12J。
直接使用FPGA完成DSP功能,则能在许多实用领域综合DSP处理器 与ASIC/ASSP器件的优点,再加上FPGA本身的诸多优势,即能有效克服 传统DSP系统的弱点。现代大容量FPGA以其相关的开发技术在可重配置的 DSP应用领域,以及DSP数据大吞吐量和数据的纯硬件处理方面,有独特的
优势。
本文所构建的专用硬件图像处理系统以FPGA芯片为核心,通过对轮对 图像获取环境及处理最终目的的分析,将适合于用FPGA芯片实现的一些预 处理算法及压缩编码予以实现,对“机车车辆轮对动态检测装置”的改进具 有借鉴意义。
1.2课题开发环境
本文以装有WINDOWS XP系统的计算机为软件开发平台,使用的软件 开发工具为QUARTUS2 6.0和MODELSIM
SE
6.1B。硬件部分基于一套 RVDK—CYlC20型的FPGA开发板,其核心芯片为ALTERA公司的 CYCLONE--EPlC20芯片。板内其它资源包括三片256K×16Bit的ISSI IS61L,V25616AL.10T的高速异步SRAM,一片64MBit的K4¥643232F.1℃60 的SDRAM,以及视频采集、输出板和VGA输出扩展板。开发板及其扩展板的俯视图如图1.1所示。
1,3课题研究内容
图1-1开发板及扩展板俯视图
本文以“机车车辆轮对动态检测装置”的车轮外形尺寸检测部分的图像 处理内容为研究对象,通过对轮对图像处理目的与处理过程的分析,并根据 FPGA芯片自身在图像处理中所具有的优势,将图像处理过程中适合用FPGA 实现的算法在FPGA上予以实现,同时还实现了对静止图像的JPEG压缩编 码,以期为设备今后的性能改进起到借鉴的作用。
本论文共六章:第1章是绪论,介绍了课题的研究背景、内容及意义,
课题的开发环境。第2章是对数字图像处理技术的简述,包括图像处理分类,
数字图像处理的内容及数字图像处理系统。第3章讲述图像数据的采集及前 期处理,包括摄像机工作原理及其信号输出格式,图像数字化,亮度信号提 取,奇偶场合并及图像尺寸裁剪。第4章讲述图像预处理算法的FPGA实现,
包括机车车辆轮对动态检测装置成像分析,图像处理算法流程,直方图均衡 化、中值滤波及边缘检测的原理及实现。第5章讲述静止图像压缩编码的 FPGA实现,包括JPEG压缩编码标准简介,JPEG基本系统压缩编码过程及
西南交通大学硕士研究生学位论文
第4页 实现,JPEG基本系统压缩编码过程,源图像数据特性,离散余弦变换,DCT 系数的量化,ZIG.ZAG扫描及编码。第6章对前两章中的图像处理算法及压 缩编码进行了实验与结果分析。最后对全文进行了总结。亘直至夔盔差塑±堡窒生堂丝迨塞 蔓!戛
第2章数字图像处理技术简述
2.1图像处理分类
图像,按照空间坐标和明暗程度的连续性可以分为模拟图像和数字图像。
模拟图像是空间坐标和明暗程度都是连续变化的,不能被计算机或其它数字 器件直接处理的图像。数字图像是指空间坐标和明暗程度均不连续的、用离 散的数字表示的图像。
图像处理,是对图像加工的各种技术方法的统称。图像处理的对象可以 是模拟图像,也可以是数字图像;图像处理的目的是使图像变成便于理解和 使用的形式,或是提取某些图像特征信息供进一步分析使用;图像处理方法 根据处理对象的不同可分为两种一一模拟图像处理与数字图像处理。
模拟图像处理包括光学图像处理和电子图像处理,主要是利用光学元件 或是模拟电子器件实现对模拟图像的处理。模拟图像处理的特点是处理速度 快,信息量大,但是精度差,灵活性差。
数字图像处理就是将图像转换成一个数据矩阵存放在图像存储器中,然 后再利用数字计算机或其它的大规模集成数字器件,对图像信息进行数字运 算或处理,以提高图像质量或达到人们所预期的其它效果。数字图像处理的 特点是精度高,处理方式灵活,但是由于目前计算机性能的限制,数字图像 处理的速度有限,对于一些有实时性要求的任务,必须利用DSP加速或构建 专用的硬件系统【列。
本论文研究的对象是数字图像,进行的图像处理操作属于数字图像处理 范畴,图像处理过程通过FPGA(Field
Programmable Gate
Array现场可编程 门阵列)芯片来实现。2.2数字图像处理的内容
数字图像处理的研究内容概括起来可包括以下五个方面。
(1)图像的摄取与数字化;研究如何进行图像获取并转换成适合计算机或 数字图像设备处理的数字信号。
西南交通大学硕士研究生学位论文
第6页(2)图像增强:增强图像中的有用信息,削弱干扰和噪声,以便对图像进 一步的处理和分析。
(3)图像恢复:将退化或模糊了的图像复原。
(4)图像编码:为便于图像存储和传输,在满足一定的保真度要求下,简 化表示图像的数据。
(5)图像特征描述:提取图像特征并予以描述,为图像识别、分析和理解 奠定基础。
本论文中的数字图像处理研究包含图像的摄取与数字化、图像增强、图 像编码三部分内容。其中,图像是用CCD摄像机来获取;图像的数字化用 一片SAA7113视频解码芯片完成:图像增强及压缩编码是用FPGA实现。
2.3数字图像处理系统
数字图像处理系统分为通用数字图像处理系统和专用图像处理系统。通 用数字图像处理系统一般指计算机加图像采集卡构成的系统;专用图像处理 系统一般指针对某一特定领域的应用所构建的图像处理系统。・
目前通用数字图像处理系统广泛采用的结构形式如图2.1所示,这是一 种面向计算机内存的图像处理系统。这个结构的接口为PCI(Pefipheml
Component
Interconnect:外设部件互连标准)总线,具有结构简单、图像传输 速度快、价格低的特点。采用这种结构的图像处理系统,微机再采用 MMX(MultiMedia eXtensions:多媒体扩展)技术,就可以形成一个高性能价格比的图像处理系统【3J。
图2-1通用图像处理系统结构
专用图像处理系统通常以数字信号处理芯片为核心,加上一些外围辅助 电路构成,其机构形式如图2-2所示。
耍塑奎亟盔堂塑主堑塞生堂丝迨塞 蔓Z夏
缓 数字信号处
缓
冲
——_.'———’
理芯片
冲
图2—2专用图像处理处理系统结构
本文所研究的是~种基于FPGA芯片,针对铁路检测领域中轮对尺寸检 测系统所获取的图像的专用图像处理系统,整体结构如图2-3所示。
图2-3轮对尺寸检测图像处理系统整体结构
出
亘塑窑夔盔堂亟主塑塞生雯垡迨塞 堇璺夏
第3章图像数据的采集及前期处理
3.1摄像机工作原理及其信号输出格式
3.1.1摄像机工作原理
摄像机是图像处理系统中获取图像的关键组件,其本质的功能就是将光 信号转变成为有序的电信号。
摄像机的核心部件称为图像传感器,目前摄像机常用的图像传感器有
CCD(Charge Coupled Device)和 CMOS(Complementary Metal-0xide
Semiconductor)两种。基于这两种感光芯片制成的摄像机分别称为CCD摄像 机与CMOS摄像机。CCD称为电荷耦合器件,CMOS称为互补金属氧化物半导体,两种图像 传感器的结构单元如图3-1所示。
CCD结构单元 CHOS结构单元
荫型放大镜片 入射光 分色阵列
电荷存储区 半导体感光区 电荷存储医
(上视图)
半导体感光区 放大电路 读开关 处理电路
电胥通路 电荷通路
图3-1图像传感器结构单元
CCD型和CMOS型图像传感器在光检测方面都是利用硅的光电效应原 理,在半导体感光区将入射光的光子转换为成比例数量的电子,电子的数量 被用来计算信号的电压,进入图像半导体的光子越多,电子产生的也越多,
从传感器输出的电压也越高。两者的不同点在于光生电荷的读出方式。在
西南交通大学硕士研究生学位论文
第9页 CCD传感器中,每一个感光元件都不对此作进一步的处理,而是将它直接输出到下一个感光元件的存储单元,结合该元件生成的模拟信号后再输出给第 三个感光元件,依次类推,直到结合最后一个感光元件的信号才能形成统一 的输出。由于感光元件生成的电信号实在太微弱了,无法直接进行模数转换
工作,因此这些输出数据必须做统一的放大处理——这项任务是由CCD传
感器中的放大器专门负责,经放大器处理之后,每个像点的电信号强度都获 得同样幅度的增大;但由于CCD本身无法将模拟信号直接转换为数字信号,因此还需要一个专门的模数转换芯片进行处理,最终以二进制数字图像矩阵 的形式输出给专门的DSP处理芯片。CMOS传感器中每一个感光元件都直接 整合了放大器和模数转换逻辑,当感光二极管接受光照、产生模拟的电信号 之后,电信号首先被该感光元件中的放大器放大,然后直接转换成对应的数 字信号。在CMOS传感器中,每一个感光元件都可产生最终的数字输出,所 得数字信号合并之后被直接送交DSP芯片处理。由于CMOS感光元件中的 放大器属于模拟器件,无法保证每个像点的放大率都保持严格一致,使放大 后的图像数据无法代表拍摄物体的原貌,致使最终的输出图像中出现大量的 噪声,品质低于CCD传感器。
本论文基于对两种摄像机成像质量的考虑,根据现有的实验条件,选择 了一台模拟的PAL制式彩色CCD摄像机完成对目标图像的摄取。
3.1.2摄像机信号输出格式
摄像机按照输出格式的不同可以分为模拟摄像机与数字摄像机。
模拟摄像机所输出的信号形式为标准的模拟量视频信号,需要经过模/
数转换才能为计算机或其它数字器件可以处理的数字信息。数字摄像机是在 内部集成了A/D转换电路,可以直接将模拟量的图像信号转化为数字信息。
本系统采用的是模拟摄像机,若想正确的提取出目标图像的灰度数据,
就要非常清楚模拟摄像机的信号输出格式。常用模拟摄像机输出信号格式有:
PAL(Phase.Alternative
Line:逐行倒相)NTSC(National Television Systems Committee)
SECAM(Sequentiel Couleur A
Memoire(法文):按顺序传送彩色与存储)S-VIDEO(Separate
Video:二分量视频接口)分量传输
西南交通大学硕士研究生学位论文
第10页 本文采用的模拟摄像机是PAL制式。在PAL制式中,一帧图像的总行 数为625,分两场进行扫描,先扫描奇数场,再扫描偶数场。行扫描频率是 15625赫兹,周期为64微秒;场扫描频率是50赫兹,周期为20毫秒;帧频 是25赫兹,是场频的一半,周期为40毫秒。在摄像机发送信号时,每一行 中传送图像的时间是52.2微秒,其余的lI.8微秒不传送图像,是行扫描的逆 程时间,同时作行同步及消隐用。每场的扫描行数为625/2-----312.5行,其中25行作回扫,不传送图像,传送图像的行数每场只有287.5行,因此每帧只
有575行有效图像显示。由于是彩色摄像机,输出的图像信号必然包含彩色信息。但是从CCD 中转移出来的三基色信号并没有直接传输,而是被转换成一个亮度信号与两 个色差信号。对于PAL制式,输出图像信号为YUv模式。其中Y为亮度信 号,u、V(常表示为Cb、cr)为色差信号,Y、u、V和三基色RGB的关系为:
Y=O.3R+0.59G+0.11B (3一1)
U=0.493(B-Y) (3-2)
V=O.877(R—Y)
(3-3)
其输出信号的完整表示为:
CVBS=Y+UsinCasct+Veos热rt
(3-4)
其中吐k为彩色副载波频率(CVBS:Composite
Video Broadcast
Signal复合电 视广播信号1。模拟摄像机的输出信号通过一根同轴电缆传输给模数转换芯片进行数字 化。
3.2图像数字化
由于摄像机输出的是模拟信号,不能用FPGA直接进行处理,所以在处 理之前要先将模拟信号转换成数字信号。本文采用SAA7113视频解码芯片来 完成A/D转换。
SAA7113是一种集成了解码、采样和量化于一体,并且支持隔行扫描、
多种数据输出格式的视频解码器,内置了A/D转换电路、预处理电路及
12C(Inter-Integrated
Circui0接口,通过IzC接口对内部寄存器进行配置,即可实现对芯片内部电路的控制。
SAA71
13的输入信号主要有:来自模拟摄像机的CVBS模拟信号,来自西南交通大学硕士研究生学位论文
第11页 FPGA的12C总线配置信号;输出为8位数字视频信号,像素时钟同步参考 信号及两个多功能复用管脚RTS0与RTSl。对SAA7113的配置使用FPGA完成,硬件原理图如图3_2所示。
s位致字视频输出
FPGA芯片 卜\
I控制信曼I
Si)A >一
y
r( 配置数据 l‘C
控制器 接口
SCL .视频解码芯片 像素时钟同步信号
SAA7113
t|墓 模拟输入
RTSl片内
RTs0RoM
图3—2 FPGA与S从7113接口原理图
在FPGA芯片内部,预先将SAA7113的配置数据存入一个片内
ROM(Read Only
Memory)中,然后通过IZC控制器模块将配置数据从ROM中 读出,连同控制信号一起传送给12C接口模块。12C接口模块在12C控制器的 控制信号作用下,产生符合IZC总线控制协议的串行数据信号SDA及串行时 钟信号SCL传递给SAA7113对应的12C接口,完成对SAA7113芯片的初始 化配置。SAA7113芯片经过初始化配置之后,处于工作状态,将来自模拟摄像机 的PAL制式的CVBS全电视模拟信号经.adD转换、模拟电路的预处理、亮 度色度信号的控制之后,按照初始化配置的输出格式输出8位的数字视频信 号;同时还产生一个与数字视频信号中的像素时钟同步的频率为27M赫兹的 时钟信号。SAA7113输出端的两个多功能复用管脚RTSl与RTS0,可通过 对子地址寄存器SAl2写入不同的控制字,将两输出管脚配置为行同步、帧
同步、奇偶场同步、行参考、场参考等不同的信号。本系统将SAA7113配置 为Yuv4:2:2格式输出,RTSl与RTS0分别输出行参考信号HREF与场参考 信号VREF。YUV4:2:2格式其实是一种采样方式。这种采样格式是指在每条 扫描线上每4个连续的采样点取4个亮度Y样本、2个红色差C,样本和2个 蓝色差Cb样本,平均每个像素用2个样本表示。图3.3说明了PAL制式625
行扫描系统中采样格式为4:2:2的YCbCr的样本位置。
314
●
2
315
3
图3-3 PAL制式扫描系统4:2:2采样格式样本位置
队L制式每一条扫描行采样864个样本,其中有效样本数为720个。每
一扫描行的采样结构如图3_4所示。
PAL制
图3—4 ITU—R BT.601的亮度采样结构
采样得到的样本值再经过量化,就转换成了数字信号。采样结构决定了量化 之后的数字信号的格式,即每行中的色差信号与亮度信号间隔排列。除了量 化数据本身之外,在SAA7113输出时,还为每行数据的头和尾嵌入了一段时 序参考代码,做为信号提取时的行定位的时序参考。每行数据头部嵌入的代 码段标记为SAV(Start
ofActive Video
range),每行数据尾部嵌入的代码段标 记为EAV(EndofActive Video
range)。SAV与EAV的代码结构如表3-l所示。表3-I SAV与EAV的代码结构
I
FF(占一字节) oo(占一字节) oo(占一字节) xY(占一字节)时序参考代码标志信息 含行定位信息
奇场与偶场、有效行与消隐行的时序参考代码中的XY字节内容各不相
亘查窑堕盔堂亟主亟塞兰兰焦堡塞 蔓!曼夏
同,其规律如表3-2所示。
表3-2时序参考代码
行
1.2l 22 23-309 310 31l 312 313—334 335 336-622 623 624 625号
s皤
AB AB 80 80 AB AB EC EC C7 C7 EC ECEAV B6 9D 9D B6 B6 F1 Fl DA DA F1 Fl B6
如何将有效的图像数据从数字化后的视频流中提取出来,就要根据每行 首尾的时序参考代码,对该行进行定位,以决定取舍。
3.3亮度信号提取
SAA7113输出的信号是分奇偶场传输的,先传奇数场,再传偶数场,奇
数场与偶数场构成一帧完整的图像信号。每场中有288行的有效图像信号,
其余行为场消隐信号。完整的一帧数据格式如图3.5所示。
消隐
.奇场有效数据
’
消隐
偶场有效数据
消隐
lJNE'
L删E23
UN£劓l
L|NE33搴
U釉E砬4
L删£625
图3-5 SAA7113输出的完整帧数据格式
每行图像信号占1728个像素时钟周期,其中含1440个周期的图像信号,
其余周期为行消隐信号与行标志信号。在1440个周期中,包含了720个像j薯;
的亮度信号与色差信号,且亮度信号与色差信号交替排列。每行的数据格王式
亘蜜窑鋈盔堂塑±塑塞生鲎焦迨塞 蔓!!垂
与时序关系如图3-6所示。
厂—‘‘——————’‘。‘————]!控制信号
本行敦据开始 行有效敦鼍开持 下一
£甜代码 洧辜 洲代码
F 9 0 X 0 1 8 '
二…3
F 03l寻 §I’吲7 ;I 7陶7 矗I
Y}l
F 0 0 Y 0 0 D B F 0
‘ Ⅲ 1埘
l掰
EA玑 SAV:
Y:
CB:
CR:
豇诅Of拙ive张deo
rStazt of Actire Video
霍耋j奏萎
ange r茁-Lge
仔
数字 视频流
图3-6行数据格式与其对应的时序关系
在本系统中,对图像的处理主要是针对亮度信号Y进行的,因此要把亮 度信号Y从数据流中提取出来。
一帧图像数据中,包含三种信息:一是消隐期数据,二是时序参考代码,
三是有效图像数据。在有效图像数据中又分为亮度信号与色差信号。正确的
提取出一帧图像中的亮度信号,首先要去除消隐期数据,然后从有效行信号 中提取亮度信号。在对SAA7113进行配置时,指定了RTS0与RTSl分别输 出水平参考信号HREF与垂直参考信号VREF,它们与各行数据的时序关系 如图3.7所示。f缸2 l‘n 1624 1625 i l——22 I∞l舶l格——310 131t 13n 1313——3格13拍[站'1--6zz 1623 l 624I
HREFlnn厂]n厂:一I门厂]n厂:一I几几n厂:一I厂1n厂I l厂]厂]厂
”2‘7——]童墨堕璺塑E———吾磊看聂丽]璺墅塑堕塑F———爵磊甭焉两广—]
m- l I
盎,『1厂1——————丁可-1rI『1-一————厂1厂可一二~『L
。。,『_———————————————————————————一
图3-7场时序图
其中,HREF可以确定每行数据中加在首尾时序参考代码之间的数据的 位置,而VREF可以确定每场数据的有效期。将两个信号相与之后所得到的 信号,就是每个有效行中的有效数据的位置。
为了每次都能够提取一帧完整的亮度图像数据,就要分别得到完整的奇 偶场数据。每一帧图像数据是先传奇场,再传偶场;奇场的有效数据是从第 23行开始的,所以,为了确保数据的完整性,必须确定23行的位置后才开
西南交通大学硕士研究生学位论文
第1 5页 始提取该帧图像数据。确定第23行的位置,就要根据每行时序参考代码中的 XY字节进行判断。对于每一行的有效数据,亮度信号Y与色差信号Cb,Cr的时序关系如 图3.8所示。
uREt厂——————————————]
DATA互><E(多∈≥互×互卜~(≥∈多玉姻
蹴广]厂]厂]厂]广]厂]I广]广]r]厂
蕊龋厂]厂] 二二厂]厂]
图3-8亮度信号Y与色差信号Cb,C,的时序关系
亮度信号Y是与Cb,C,间隔排列传输的,要提取出Y,就要产生~个 频率为像素时钟频率一半的信号,在其上升沿时,将Y从数据流中抽取出来。
经SAA7113芯片解码的图像像素时钟同步信号的周期为27M赫兹,用 于对亮度信号Y进行提取的信号为13.5M赫兹,这样取出的亮度信号Y的 频率也是13.5M赫兹。但是所选SDR SDRAM的读写速度为50M赫兹,两 者的时钟频率不同,不能直接进行写入,因此需要一个行缓冲存储器将每行 亮度信号先暂时存起来,然后再以50M赫兹的时钟信号取读取行缓存。在 FPGA内部,选用一个双端口RAM来完成行缓存的任务。先将提取出的每 行亮度信号Y以27M赫兹的速度写入到双端口RAM中,过一段时问之后,
再以50M赫兹的速度将亮度信号Y从双端口RAM中读出并按前面所述的顺 序写入SDRAM中。对于双端口RAM的写入与读取的时间间隔,只要保证 对每个数据的读取是发生在写入之后即可,时间间隔越紧凑,转储的延时就 越小。
根据SAA7113芯片的采样格式,其输出有效数据为576行,每行720 个像素点。为了方便后续图像处理,希望得到一幅512×512分辨率的数字化 图像,因此对双端口RAM中的720个像素数据进行读取时,并不全部读出,
而是选择中间位置的512个像素进行读取。读取范围从第26个像素开始,到 第615个像素结束。
用来表示亮度信号Y的数据位宽为8位,因此缓存720个像素点的数据 要用720个字节的空间。由于SDRAM中每个存储单元的容量为32位,占4 字节的存储空间,为了写入SDRAM时的方便,在从双端口RAM中读取其 中的512个像素点数据时,将每4个点分为一组,即每次读出4个点的数据,
西南交通大学硕士研究生学位论文
第1 6页 刚好对应存入SDRAM中的一个存储单元中。对双端口RAM来说,写入速 度为13.5M赫兹,每次写入一个字节(8位),而读取速度为50M赫兹,每次 读4个字节(32位),其读写时序如图3-9所示。图3-9片内双端口RAM控制信号读写时序图
、非,]]]]]]r]]]]]]]]]]]]]]]]]]
;_^一万 车,々0 II抽.5三一
。:,。,——㈩v.———w—————w。———㈣v^————v^———v.———蚤,:;.————v.———葛,;,。+{.———Ⅲv————西,,,.————w,———…w.———w————㈣v————w,———蚤
毛;盘昼罩薯
一
茸奢蘑最DZ暑{空霆露雌毒疑ⅢI罐
一
著m#骞誊l=盈贸闺×吲^㈧丫△呵国又㈥X剖金掣国又㈥苍㈤丫.厶呵禽义㈢苍…禽w向桫i金义目K葛一
爹至蓉赛匦又㈢X呵QV,A穹自爱彰苍髟焦义国舀孥◇;A眵国叉圆忐呵国袈…v;险掣国海吲茧
簿督菸吾
~÷|一宴÷奢擀瓣J堑离;,;,,;,摹引¨¨¨¨¨¨=_剐引引烈洲引蒯“¨¨¨¨¨¨¨引1.,,|一04÷鑫瓣篱J墼麝;。;,.+一
零;o¨尊誊霉两㈠㈠¨㈠㈠㈠㈠¨—u。,人¨㈠㈠㈠㈨㈠¨㈠㈠>‘n¨㈠㈠㈦㈠㈠㈠㈠V:-《n㈠㈠㈠㈧㈠㈠¨㈠Yn㈦…㈠㈠;八㈠㈠㈠㈧…¨㈠——V一
;;I.’¨霉簿赛八㈦㈠uH㈠…—¨———V。。似引H引引u引俐㈦㈥v胁㈧H㈦吲㈠㈦㈤㈧—吲,:。似吲㈠㈧㈦㈧㈦㈦㈩㈦v陵吲———㈧}A㈧㈠H㈣㈦㈧旧㈧—9—
1t^Ik fso三一
再罐jI寡磊;薄暑翌I.●●l●●●●●l
澎鬻抖辚÷嚣宙罄辱嚣器蓐革零斟,,,●●●●●●●●I÷I
}
罐盈叶鞯嚣2¨1、种胄薛lII薅肆蓐睾蕾a
}
¨¨—¨—¨—㈠—…㈣㈠¨㈠㈠㈠¨¨—¨¨¨v.—㈠㈧…¨w。.n㈠……¨v。n¨㈧㈦㈠¨v。n¨—————¨v,i..,.n㈠㈨…㈠v。n¨—Ⅲ—¨v.n—…—¨v。————㈠w。^¨¨㈠㈠㈠㈠—㈧—㈠㈠———¨—㈠㈠㈠
.1,。]]]]]],]]]]]]]]
亘童童适盍堂塑±塑窒生芏丝堡塞 蔓!璺夏 3.4奇偶场合并及图像尺寸裁剪
由于摄像机隔行扫描的工作方式,使数据流分奇偶场先后传输,为了得 到完整的一帧图像数据,就需要将两场数据合并。本文采用一片
SDR S
芯片做为帧缓存存储器。数据操作过程为:先将奇场数据以隔.DRAM行的方式存入SDRAM中,即奇场第一行数据存入SDRAM中第一行,奇场 第二行数据存入SDRAM中第三行,奇场第三行数据存入SDRAM中第五行,
直到奇场所有的288行数据存完为止;然后接收偶场数据时,将偶场数据的 第一行存入SDRAM中的第二行,将偶场数据的第二行存入SDRAM中的第 四行,直到偶场所有的288行数据存完为止。当偶场数据存储完,在SDRAM 中便形成了一帧完整的图像数据。奇偶场数据在SDRAM中的存储顺序如图 3.10所示。
‘
奇偶场数据在SDRAM中的存储顺序及位置
(灰色代表SDRAM未被使用区域)
bank3 nk2
l图3—10奇偶场数据在SDRAM中的存储顺序及位置(灰色代表SDRAM未被使用区域)
对图像的尺寸进行裁剪的目的是方便后续图像处理。我们将原始大小为
西南交通大学硕士研究生学位论文
第1 9页 576×720像素的图像裁剪为512X512像素大小的图像。裁剪的过程有两步。第一步就是对每行720个点进行裁剪,这一步是在从双端口RAM的读取时 进行的,每行只读取中间的512个像素点。第二步是在读取SDRAM中的整 帧数据时完成的。在第一步裁剪过后,SDRAM中实际上存储的图像大小为 576X512像素。当从SDRAM中读取数据时,我们对垂直方向进行裁剪,取 576行中间的512行数据,即从第33行开始读取,到第544行结束。
经过上述处理,最终从SDRAM中读出的图像数据大小为512×512像 素,数据位宽为8位,像素时钟为50M赫兹。
由SAA7113产生的数字信号及同步信号,由FPGA中的一个receiver模 块接收,并产生用于行缓冲目的的双端口RAM的写控制信号及用于奇偶场 合并成帧的SDRAM的读写标志信号。FPGA内部相关模块间的连接关系如 图3.1l所示。
SAA7113数字 化后的数据
___・・●
同步信号
S存DI赭认嚣M I
——一 +有效披据
型群l刊SDRAM!h 圄㈣口 !h;
竺悼 图像处理 模块
图3-11 FPGA内部相关模块问的关系
输出
酉直窑蕉盔堂塑±塑塞笙堂丝迨塞 蔓垫夏
第4章图像预处理算法的FPGA实现
4.1装置成像分析
“机车车辆轮对动态检测装置”安装在车辆途经线路上,对通过的待测 车辆检测部位进行实时图像获取。装置的现场工作环境如图4-1所示。
图4—1装置现场工作环境
轮对图像的获取是在室外进行的,各种环境因素直接影响着摄像机的成 像质量。其中首要考虑的环境因素就是环境光对成像质量的影响。当外界环 境光过亮时,可能引起摄像机曝光过度;而环境光过暗可能会引起曝光不足。
曝光过度与不足,都会降低图像质量,给后续处理带来困难。由环境光引起 的图像质量变化如图4-2所示:
理想图像 曝光不足 曝先过度 图4-2环境光对成像质量的影响
其次要考虑的因素是环境噪声。拍摄现场的雨、雪、雾、沙尘等都会使
摄像机的视野不清晰,在拍摄到的图像上就会引入噪声(摄像机本身也会引入 噪声),噪声的存在同样影响着检测结果。图4—3中显示了混入脉冲噪声后图 像效果。理想图像 舍噪图像
图4-3噪声对图像质量的影响
尽管“装置”在现场采取了一些抗干扰措施,但是完全消除环境对成像 质量的影响是不太可能的。为了使“装置”在恶劣的环境下仍能正确检测,
就要对被降质的图像进行一些预处理以降低或消除这些不利的影响,为后续 的处理提供方便。
4.2图像处理算法流程
由4.1节的分析可知,在正式提取图像信息之前,有必要对图像进行一 些预处理以提高图像质量,方便后续处理。对光线引起的图像偏暗或偏亮,
可由直方图均衡化的方法进行处理,使得降质图像得以改善。经过直方图均 衡化处理的图像既能在视觉上得到明显改善,又能为后续处理减小难度,降
低边缘检测时误判的概率。一组经直方图均衡化前后的对比如图4_4所示。
理想图像 理想图像直方图
曝光不足图像 曝光不足图像直方图
曝光不足均衡化后图像 曝光不足均衡化后图像直方图
曝光过度图像 曝光过度图像直方图
曝光过度均衡化后图像 曝光过度均衡化后图像直方图
图4—4直方图均衡化前后对比
亘妻窑鋈盔堂塑±堑塞生堂丝筻塞 蔓垫夏
对于含噪图像,我们希望使用的去噪算法既能有效取出噪声点,又能保 留图像细节。此处主要考虑脉冲噪声,选用中值滤波算法对图像进行处理。
对4.1节中的含噪图像进行中值滤波处理之后的效果如图4-5~4—7所示。
图4-5理想图像
图4—6含噪图像
图4—7中值滤波后图像
经过直方图均衡化及中值滤波后,即可按照装置的轮对部分的检测要求 对图像进行后续处理和分析,直到得到最终的结果。整个图像处理算法流程
亘壶窑湮盔堂塑主要塞生兰垡篓塞 蔓丝夏
如图4-8所示。
调整灰度级分布I l钝化强傍.消除噪声
数字化圈 翌
像数量l直方图 叫蒜磊
检。璧果f匹配
・叫蓦薪
计算、比较
中值 滤波
边缘检测
边缘增强 锐化图像。增强边缘
分割目标与背景
将边缘区域单像素化
得到连续完整边缘
图4-8图像处理算法流程
通过对图像处理算法流程中各算法的原理及实现过程的分析,结合FPGA 自身结构特点,本文选取流程中的直方图均衡化、中值滤波及边缘检测三种
图像处理算法来作为研究重点,详细阐述其原理羼在FGPA上的实现过程。
4.3图像预处理算法的FPGA实现
4.3.1直方图均衡化原理及其实现
直方图就是反映一幅数字图像中的每一灰度级与其出现的频率(该灰度 级的像素数目)间的统计关系的图形。从数学上说,它统计一幅图像中各个灰 度出现的次数或概率;从图形上说,它是一个二维图,横坐标表示图像中各 个像素点的灰度级,纵坐标为各个灰度级上图像像素点出现的个数或出现概 率。直方图是图像的重要特征,是图像灰度密度函数的近似,它表示图像中 具有某种灰度级的像素的个数,反映了图像中每种灰度出现的频率。
清晰柔和的图像的直方图灰度分布比较均匀。为使图像变得清晰,通常 可以通过变换使图像的灰度动态范围变大,并且让灰度频率较小的灰度级经 过变换后,其频率变得大一些,使变换后的图像灰度直方图在较大的动态范 围内趋于均化。直方图均衡化处理是一种修改图像直方图的方法,通过对直
憨 票蠢
西南交通大学硕士研究生学位论文
第25页 方图进行均衡化修正,可使图像的灰度间距增大或灰度均匀分布、增大反差,使图像的细节变得清晰。
设r,J分别表示被增强图像和变换后图像的灰度。假定所有像素的灰度 均己被归一化,即当,=S:--0时,表示黑色;r=s=l时表示白色;而r、
s∈[o,l】表示像素灰度在黑白之间变化。若一幅给定图像的灰度级分布在
0≤,s1范围内,可以对【0,1】区间内的任意个,值进行如下变换:占=r(r) (4—1)
通过上述变换,每个原始图像的像素灰度值,都对应产生一个s值。变换 函数r(,)应满足下列条件。
(1)在0≤r≤l区间内,r(r)值单调增a11.
(2)对于0≤,≤l,有0≤r(,)≤1。
这里的第一个条件保证了图像的灰度级从黑到白的次序不变,第二个条 件则保证了映射变换后的像素灰度值在允许的范围内。从s到,的反变换可用 下式表示:
,.=T。10)
(4.2)
可以认为,在一幅图傻中,灰度值是一个在【o,11之间取值的随机变量。
因此可用概率分布来描述其统计特性。由概率论理论可知,如果已知随即变 量善的概率密度函数为e(,),而随机变量r/是f的函数,即r/=丁(善),r/的 概率密度为只O),所以可由只(r)求出只(j)。因为s=r(r)是单调增加的,
所以它的反函数r=T_’(s)也是单调函数。在这种情况下,玎<J,且仅当毒<r 时,可以求得随机变量rl的分布函数为
‘(J)=p铆<s)=p(0=Lno)出
(4—3)对上式两边求导,即可得到随机变量叩的分布密度函数只0)为
p,(s)2肼(r)导∥(J)】=【n∽刍。1,,(4-4)t/¥ti'S 。…
由上式可知,通过变换函数丁(,)可以改变图像灰度的概率密度分布,从而改 变图像的灰度层次,这就是直方图修改的理论基础。
直方图均衡化处理是以累积分布函数变换法为基础的直方图修正法。假 定变换函数为
s=r(力=【P,(w)aw (4—5)
西南交通大学硕士研究生学位论文
第26页式中:W是积分变量,而【p,(w)dw就是,的累积分布函数。此处累积
分布函数是,的函数,并且单调地从0增加到1,所以这个变换函数满足关于 r(,)在0s r≤l内单调增加,对于0≤,≤1,有0≤T(r)≤1的两个条件。对(4.5)
式中的,求导,则_a-s=办(r),再把结果带/入.(4--4)式,则
ar
以垆[以r)象一广【pr(,)赤k一∽=(Pr(r)高】_1(4_6)
在变换后的变量s的定义域内的概率密度是均匀分布的。由此可见,用r 累积分布函数作为变换函数可产生一幅灰度级分布具有均匀概率密度的图 像。其结果扩展了像索取值的动态范围。
上面的修正方法是以连续随机变量为基础进行的。为了对图像进行数字 处理,要引入离散形式的公式。当灰度级是离散值的时候,可用频数近似代 替概率值,即
P,(珞)=二二主-0≤rk s1 k=O,l~2,.,L-1 (4—7)
.
胛
式中:L是灰度级数,P,(唯)是取第k级灰度值的概率,‰是在图像中 出现第k级灰度的次数,n是图像中像素总数。
式(4-5)的离散形式可由下式表示:
吼=r(‘)=∑詈;∑P(o) o≤rk≤1 k=O,1孔.,L一1 (4—8)
y=a’‘
其反变换式为
rk=T。0t) (4-9)
下面详述用FPGA实现直方图均衡化的过程。
对于图像处理模块的输入端数据源,均来自经过奇偶场合并存入 SDRAM中的图像数据,数据位宽为8位,图像大小为512×5t2像素,读取 时钟频率为50MHz。
直方图均衡化,实际上就是一个灰度映射的过程,将每个输入的灰度,
经过直方图均衡化模块之后,映射成另外的灰度值,而映射后的图像灰度为 均衡化的分布。在FPGA内部,有丰富的片内存储器,对于这种数值映射关 系,通常用查找表的方式来实现,即利用片内存储器存储事先计算好的映射 值,然后将要处理的图像灰度值做为片内存储器的读取地址,则存储器的对
西南交通大学硕士研究生学位论文
第27页 应输出值即为均衡化之后的灰度值。为了使设计达到实时处理的目的,在接 受来自SDRAM的图像数据时,开始计算统计直方图,并生成直方图均衡映 射表,然后在图像数据输出时将其原始灰度做为地址输入到映射表,输出即 为均衡化后的图像数据。直方图均衡化算法实现的总体机构框图如图4.9所 示。FPG。A
I SDRAM I
叫接口I I存储器卜
?
ISAATll3
ll
SDRAMI 直方图均衡化模块
l解码芯片I- -"1控制器P
J
I SRAM J
叫控翻嚣r—◆
I存储器I"-
图4-9直方图均衡化总体框图
由均衡化推导过程可知,归一化之后的灰度值均为小数,计算各灰度级 的出现频率涉及到小数运算,这在硬件实现上是非常消耗逻辑资源的。为了 避免小数计算,实现时并不对灰度值进行归一化处理,直接统计各整数灰度 值出现的次数,再对各灰度值出现的次数进行累加,最后将累加值乘以255 再除以图像总像素数,即得到最后的均衡化结果。直方图均衡化步骤如下:
设原始数字图像的灰度级为0~255(0~L.1),图像尺寸为n=512×512(像素)
原始图像灰度级为Sk,k=0,l,2,……,255:
均衡化后图像灰度级为Pk,k=0,l,2,……,255 步骤1统计0~255各灰度级所包含的像素的个数
比如:灰度为0的像素个数是:xO 灰度为1的像素个数是:xl
灰度为255的像素个数是:x255
本步骤基于一个双端口ram(hist buffer)及其控制器完成。该双端口ram的读 写速度设定为100M赫兹。目的是使得接收到一个50M赫兹的像素数据的
西南交通大学硕士研究生学位论文
第28页 20ns的时间内,完成一次该像素个数的统计。在这个20ns的前10ns的时间内,完成一次双端口rain的读取,读取地址为对应于该像素数据的ram地址;
在后10ns的时间里,将前10ns从双端口ranl中读出的数据加l,同时进行 一次双端口ram的写入,写入地址同样为该像素数据对应的地址,写入的数 据为加1后的数据。加l后的数据在作为双端口ranl的输入时,同时也作为 下一步要实现的灰度级累加的ram的输入。双端口ram读写时序如图4.10 所示。
读地址:一address二)《三至)(歪垂≥《垂至》≤至0《至三》∈量!;-《二
读使能信号;棚 r]n几n n几
读时钟信号:d-t00M几n几n几几几几n几几n几几n
写地址:wraddress
写使能信号;wm
写时钟信号:cIkl00M几几几几n几几几几几几几几几几
图4—10各灰度级像素统计时的双端I:tram读写时序图
步骤2对各灰度级进行累加比如:0
灰度级GO累加为:GO=x0
l
灰度级G1累加为:GI=xl+x0
2
灰度级G2累加为:G2=x2+x1+xO
3
灰度级G3累加为:G3=x3+x2+xl+x0
………●…●●…’……●●……
255灰度级G255累计为:G255=x255+x254+……+
x2+Xl+x0
灰度级累加也由一双端口ram(hist)及其控制器完成。在步骤1中,当接到一 个像素的后半个周期(20ns)内,产生了一个加1数据,将此数据同时存入灰 度级累加ram中。当所有的像素接收完毕,所有的灰度级所对应的象素数统 计完成后,灰度级累加ram中存储着各灰度级像素的个数。根据像素发送完 毕信号,开始顺序读取灰度级累加rarn。在控制器中设置一个寄存器,初始 值为零,每次读出的数据都加累加在这个寄存器中,同时将每次累加的结果
西南交通大学硕士研究生学位论文
第29页 传给下一级ram中(1ist)作为输入数据存储。当0~255的灰度级均累加完成后,下一级ram中存储的就是灰度级累加的结果。
步骤3对累计结果进行灰度映射
比如:0
灰度级映射为:P0=GO×(L-1)/nl
灰度级映射为:P1=G1X(L-1)/112
灰度级映射为:P2=G2X(L-1)/n255
灰度级映射为:P255=G255X(L-1)/n
经过步骤1,2后,灰度级累加已经完成,结果存在list中。当像素数据从外 部存储器输入直方图均衡化模块后,其像素数据就作为list的读地址,将其 对应的读出的数据乘以L一1,再除以n,得到的就是均衡化后的像素数据。
直方图均衡化模块的内部逻辑框图如图4.11所示。
图4-11直方图均衡化模块内部逻辑框图
4.3.2中值滤波原理及其实现
中值滤波是一种基于排序统计理论的可有效抑制噪声的非线性平滑滤 波。1971年图基(Tukey)在进行时间序列分析时提出中值滤波的概念,后来人
西南交通大学硕士研究生学位论文 第30页 们将其引入到图像处理领域中。这种滤波器的优点是运算简单而且速度快,
在滤除叠加自噪声和长尾叠加噪声方面显示出了极好的性能。中值滤波器在 滤除噪声(尤其是脉冲噪声)的同时能很好地保护信号的细节信息(例如边缘、
锐角等)。
中值滤波是一种邻域运算,它把邻域中的像素按灰度等级排序,然后选 择该组的中问值作为输出像素值。
中值滤波原理是:首先确定一个以某一像素尾中心点的邻域,一般为方 形邻域,然后将邻域中各个像素的灰度值进行排序,取其中间值作为中心点 像素灰度的新值,这个邻域通常被称为窗口;当窗口在图像中上下左右进行 移动后,利用中值滤波算法可以很好地对图像进行平滑处理。
中值滤波的输出像素是由邻域图像的中间值决定的,因而中值滤波对极 限像素值(与周围像素灰度值差别较大的像素)远不如平均值那么敏感,从而 可以消除孤立的点噪声,又可以使图像保留细节信息。二维情况下的中值滤 波定义如下:
g(m,聍)=Median∥(研一七,行一,),(Jj},,)∈爿,(4一lO)
』
式中:A为窗口;g(m,n)为窗口中心的灰度值;f(m-k,n.1)为窗口A的像素灰 度值。通常窗口内像素数为奇数,以便于有中间像素。若窗口内像素数为偶 数时,则中值取中间两像素灰度值的平均值。
二维中值滤波的窗口形状和尺寸对滤波效果影响较大。对不同的图像内 容和不同的应用要求,往往采用不同的窗口形状和尺寸。常用的二维中值滤 波窗口形状有直线形、方形、圆形、十字形及圆环形等,如图4.12所示。
图4—12中值滤波几种常用窗口图形
利用FPGA实现中值滤波,可按如下步骤完成:首先根据实际情况选择 合适的窗口形状;然后将窗口在图像中漫游,并将窗口中心与图像中某个像 素的位置重合,读取窗口下各对应象素的灰度值;最后将这些灰度值排序,
找出中问值并赋给对应窗口中心位置的像素。在FPGA中,由两个模块来完 成中值滤波处理,分别为3×3模板生成模块与中值滤波模块。3×3模板生 成模块的功能是按照模板形状将每个待处理的像素及其邻域内的所有像素点
西南交通大学硕士研究生学位论文
第31页 同时取出,交给中值滤波模块进行下一步处理:中值滤波模块接收3×3模板 的9个并行像素数据进行排序,找出中间值后输出。中值滤波算法的总体框图如图4.13所示。
图像数据漉
—-——-◆
旦-
盈-
固●
舀-
毯-
蹦-
腔-
瑚-
氆-
滤波后的
图像数据流--—--◆
图4-13图像中值滤波原理图
具体步骤如下:步骤1:选定3×3方形窗口作为中值滤波的滤波窗口。按照滤波窗口的形状
取出以某点为窗口中心,被窗口覆盖下的各对应像素的灰度值(3×3模板生 成模块)。取出示意图如图4一14所示。、h、~
●—、
—‰’‘~
\
\
\
\
\
\
、
\
、\
\
\
一幅原始的数字图像阵
中心点的邻
域像素
图4—14 3×3像素取出不惑图
由于硬件中图像数据是以数据流的方式传输,一个时钟周期传输一个像素数 据。如何实现在同一个时钟周期内同时获取到9个像素点,是关键问题。通 常采用行缓冲的方式来实现。比如,要获得的9个像素数据分别在相邻的3 行内,可以用两个行缓冲器(fifo)先分别存储前两行,等到第三行数据到来时,
再同时从第三行及前两个缓冲行内读取数据。这样就保证了每行内的三点数 据是同时获取的。然后再分别对获取到的各行内的三点数据进行分级寄存,
耍童童夔盔兰亟主塑塞生兰堕笙塞 蔓丝夏
在恰当的延时之后,便可将各行三点数据同时取出。结构如图4.15所示。
图像存储区
图4—15 3×3模板产生模块原理图
行延时的目的是将三行数据在时间上对齐,使能对三行数据同时获取;列延
时的目的是将从各行获取的像素数据进行列对齐之后,再输出;有效数据标
志信号产生模块的作用是产生一个电平信号指示输出数据Pl至P9何时有 效:当d out valuable为高电平时,输出数据有效,当d out valuable为低电 平时,输出数据无效。值得注意的是两个fifo的存储顺序:在第一有效行期间,line2的写使能 有效,将第一行数据写入line2,此时,line2的读使能信号为低,不进行读取,
line2被写满:在第二有效行到来的前一个周期,line2的读使能有效,开始读 取(fifo状态由满变为未满),一个周期之后,line2的写使能有效,开始同时 读写过程在line2读取的同时,linel的写使能信号有效,开始写入数据,经 过第二有效行后,linel被写满:在第三有效行到来的前一个周期,linel的 读使能信号有效,开始读取数据,一个周期后,linel的写使能信号有效,开 始同时读写的过程。
3×3模板生成模块接口如图4.16所示。
图4—16 3×3模板生成模块接口
其中:data ..01为从 SDRAM中读出的像素数据: data
valuable
为有效像.in[7素数据的标志信号;Pl[7..01~P9[7..O]为3×3模板覆盖下的对应的各像素数 据;d out valuable为输出数据的有效标志信号。
为了验证3×3模板生成模块的正确性,产生了一个100行×64列的二 维数组,作为3×3模板生成模块的输入测试数据。二维数组以串行方式从第
一行第一个数据开始输入,同时产生对应的有效数据标志信号作为输入。二
维数组示意图如图4.17所示。第1行 第2行 第3行 第4行 第5行 第6行
I I I I
第97行 第98行 第99行 第100行
图4-17二维测试数组
通过在Quartus2中进行仿真,其仿真波形如图4-18所示。
第“列 第。列 第酡列 一
一一 一 一 一 一 一 一 一 一 第3列 第:列 第,列
甜甜礤“甜甜 配诏酩酩∞硌
2 2 2 2 2 2 6 6 6 6 6
l} 6 6 6 6 6 6
印∞∞砷∞∞
6
●
●
●
●
●
●
l I l 1 l
i} l O O 0 O O O
i l
9 9 9 9 9 9 8 8 8 8 8 8 7 7 7 7 7 7 6 6 6 6 6 6 5 5 5 5 5 5 4 4 4 4 4 4 3 3
3—3 3 3 j
2
i
2 2
一
一
4 4 4 4 6 6 6 6 3 3 3 3 6 6 6 6 2 2 2 2 6 6 6 6 l l l 1 6 6 6
∞∞砷∞
6
t1
1■11
l l
t■T■l 0 O 0 O l l
1■l
q
9
9
9
8
8
8
8
7
7
7
7
6
6
6
6
5
5
5
5
4
4
4
4
3
3
3
3
2
2
2
2
l
l
l
l
_p dk
_p
htJ
移
圈Pl苗
圈P2移
囝r3移
团H移 团聆
函 囝砖
移
田”移
团踏囝 国帕
鼬 t甜t-鸭z口・缸・
图4一18 3×3模板仿真波形
上图中的d out valuable为低电平时表示数据输出数据无效,此时正在进行 行、列延时以对齐数据。d out valuable为高电平时,表示输出数据有效。在
d
out valuable为高电平之后的第一个时钟上升沿到来时,输出数据P1~P9 分别为1、2、3、l、2、3、l、2、3,这与二维测试数组中以第2行第2列 为窗口中心的3×3窗口所覆盖的各像素值相对应。后面每个时钟上升沿所对 应的一组输出数据对应情况都如此,验证了3×3模板生成模块的正确性。步骤2:对上步获得的9点像素值进行排序,选出中间位置的数据输出,输 出结果即为待滤波的像素点进行中值滤波处理后的结果(中值滤波模块)。排 序的工作主要是通过数值比较器来完成的。方法如图4.19所示。
图4-19中值产生算法
总共进行19次比较。为了保持数据的同步性(让同一个模板的9个数据时序