毕业论文:基于fpga的视频图像分割技术—系统设计
题目:基于fpga的视频图像分割技术—系统设计
院(系) 信息科学与工程学院
专 业 电子信息工程
届 别 2012届
摘 要
随着多媒体技术的发展 ,视频图像得到了广泛应用. 而视频分割技术更是为视频理解、视频编码等领域广泛应用. 所谓视频分割就是把视频中重要的或人们感兴趣的物体或对象 (Video Object, VO)与背景分割开来 ,或者说就是要划出分别具有一致属性的一个个区域 ,同时区分背景区域和前景区域.早期的多画面分割器设计使用了很多的模拟器件,这时的电路开发周期长,产品的调试,修改升级比较困难,成本较高。在这里采用FPGA芯片,完成图像的处理和硬件电路各个部分工作的协调,从而提高系统的集成度和性能。
本
论文首先根据视频信号的处理过程和典型视频图像处理系统的构成提出了基于FPGA的视频图像处理系统总体框图,主要由视频信号输入模块,视频信号处理模块和视频信号输出模块3个部分组成。然后分别具体介绍每个模块的结构功能:视频输入模块采用视频解码芯片AD9983A将采集的多路模拟视频信号转换成8位RGB数字信号送到FPGA,实现高分辨率视频图像的采集;视频处理模块主要由Lattice公司的 ECP2M系列LFE2M20SE芯片完成,根据需要对输入的数字视频信号进行处理,完成视频信号的分割与合成;视频输出模块将 FPGA 处理后的信号经过ch7301视频编码芯片驱动输出到显示器。
图像分割算法繁多,运动图像的分割可先分解为一帧帧图像,然后利用时-空图像的灰度和梯度信息进行分割。本文利用MAILAB,实现了简单背景下一帧图像的分割。
关键词:现场可编程逻辑门阵列;视频信号;图像分割与合成
ABSTRACT
With the development of multimedia technology, video is widely used. And video segmentation technology has a e*tensive use in the field of video understanding, and video coding applications .Video segmentation is to separate the mportant or interesting object ( Video Object, VO ) in the video from background.. Or that is to divide areas with the same attribute , and distinguish background and foreground regions . Early divider design use a lot of analog circuit, development cycle is very long . It is difficult for product to test and modify to upgrade . Cost is high. Here the FPGA chip help complete image processing and coordinate the hardware circuit ,so as to improve the system integration and performance.
In this paper according to the video signal processing and typical video signal image processing system,I design a video image processing system diagram which is based on FPGA.It mainly consists of input modular,a video signal processing modular and the video signal output modular. Then introducing structure and function of each modular. The video input modular uses AD9983A video decoder chip to collect the analog video signal and convert it into a 8 bit RGB digital signal for FPGA, achieving
high video signal capture resolution; Video processing modular is mainly composed of LFE2M20SE chip which belong to Lattice companys ECP2M series, completing video signal segmentation and synthesis to meet the need of digital video signal processing; Video output modular send the signal after FPGA processing to ch7301,
and drive the output to a monitor.
There are a lot of Image segmentation algorithm. Segmentation
……(新文秘网https://www.wm114.cn省略3976字,正式会员可完整阅读)……
176 144 25344
计算机图形 QVGA 320 240 76800
广播 CIF 352 288 101376
计算机图形 VGA 640 480 307200
广播 NTSC 720 480 345600
广播 PAL 720 576 414720
计算机图形 SVGA 800 600 480000
计算机图形 *GA 1024 768 786432
广播 HDTV 1280 720 921600
计算机图形 S*GA 1280 1024 1310720
计算机图形 U*GA 1600 1200 1920000
计算机图形 Q*GA 2048 1536 3145728
表1 常见的屏幕分辨率和帧率的比较
隔行扫描方式源于早期的模拟电视广播技术, 这种技术需要对图像进行快速扫描,以便最大限度地降低视觉上的闪烁感,但是当时可以运用的技术并不能以如此之快的速度对整个屏幕进行刷新。于是,将每帧图像进行“交错”排列或分为两场,一个由奇数扫描线构成, 而另一个由偶数扫描线构成。
NTSC/(PAL)的帧刷新速率设定为约 30/(25)帧/秒。于是,大片图像区域的刷新率为 60(50)Hz,而局部区域的刷新率为 30(25)Hz,这也是出于节省带宽的折中考虑,因为人眼对大面积区域的闪烁更为敏感。
隔行扫描方式不仅会产生闪烁现象,也会带来其它问题。例如,扫描线本身也常常可见。因为 NTSC 中每场信号就是 1/60s 时间间隔内的快照,故一幅视频帧通常包括两个不同的时间场。当正常观看显示屏时,这并不是一个问题,因为它所呈现的视频在时间上是近似一致的。然而,当画面中存在运动物体时,把隔行场转换为逐行帧(即解交织过程),会产生锯齿边缘。解交织过程非常重要,因为将视频帧作为一系列相邻的线来处理,这将带来更高的效率。
随着数字电视的出现,逐行(即非隔行)扫描已经成为一种具有更高图像品质的流行的输入和输出视频格式。在这种方式下,整幅图像将从上到下依次刷新,其扫描速率约为相应隔行系统的扫描速率的两倍, 这消除了隔行扫描产生的许多弊病。在逐行扫描中,由两场信号来表示一帧视频的方式不再使用。
1.1.3视频编码格式ITU‐R BT.601 和 ITU‐R BT656。
每个 BT.601 像素分量(Y、Cr 或 Cb)被量化为8或者10 bit 信息,NTSC 和PAL的有效视频画面中每行有 720 个像素。不过,它们在垂直分辨率方面存在差异。30 帧/s 的 NTSC 有 525 行(线)(包括垂直消隐或者回扫区),而PAL 有625 行线,25 帧/s 。
ITU-R BT.656 (前 CCIR-656) BT.601规划了对视频进行数字编码的方法, 而BT.656则实际定义了实施BT.601所必需的物理接口和数据流。它同时定
义了位并行和位串行模式。位并行模式只需要27MHz的时钟(在NTSC 30 帧/s条件下)以及8或10条连线(具体取决于像素的分辨率)。所有的同步化信号都嵌入到数据流中,因此无需额外添加硬件连线。
图1.1示出了ITU-R BT. 656中分别针对525/60 (NTSC) 和625/50(PAL) 系统的帧划分方法的特性 。
行数 F V H H
1-3,
311-312 1 1 1 0
23-310
264-282 0 1 1 0
20-263 0 0 1 0
283-525 1 0 1 0
垂直消隐
场1 有效视频
垂直消隐
场2 有效数据
525
垂直消隐
场1 有效视频
垂直消隐
场2 有效数据
垂直消隐
行数 F V H H
1-22,
266-282 0 1 1 0
4-19 0 0 1 0
313-315
624-625 1 1 1 0
336-623 1 0 1 0
1
图1.1 ITU-RBT.656帧划分
在BT.656标准中,水平(H) 、垂直(V)和场(F)信号作为嵌入到视频数据流中的一串字节来发送,这一串字节构成了一个控制字。有效视频起点(SAV)和有效视频终点(EAV)信号指示了每行读入的数据单元的开始和结束。SAV出现在H发生1-0切换时,EAV出现在H发生0-1切换时。 整个视频场由有效的视频+水平消隐(EAV和SAV代码之间的空间)以及垂直消隐(V=1的空间)组成。
视频的场从F位的切换开始。 “奇数场”由F=0表示,而F=1则表示偶数场。逐行扫描的视频并不区分场1和场2, 而隔行扫描的视频则要求专门对每个场进行独立的处理,因为每个场交替的扫描行组合起来最终形成实际的视频图像。
8-bit Data 10-bitData
D9 D8 D7 D6 D5 D4 D3 D2 D1 D0
Preamble 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
Control Byte 1 F V H P3 P2 P1 P0 0 0
表2更为详细地示出了SAV和EAV代码。请注意,视频数据有一个由三个字节构成的前导码(8bit视频是0*FF, 0*00,0*00,,而10bit视频则是0*3FF, 0*000, 0*000),后面跟随着*Y状态字,这个字除了包含F(场), V(垂直消隐) 和 H (水平消隐)位之外,还包含了4个保护位,以实现单位错误的检测和纠正。请注意,F和V只能作为EAV序列的一部分来变化(即,从H = 0切换到H = 1)。请注意,对于10bit视频来说,增加的两位实际上是最低位,而不是最高位。
表2 SAV/EAV前导码
•F = 0 ,场 1 •F = 1, 场 2
•V = 1 垂直消隐期间 •V = 0 未在垂直消隐期内
•H = 0 SAV •H = 1 EAV
•P3 = V *OR H •P2 = F *OR H
•P1 = F *OR V •P0 = F *OR V *OR H
1.1.4视频信号的处理过程
一幅平面图像可以看成是由许许多多的小单元组成,在图像处理系统中,这些组成画面的细小单元称为像素。像素越小,单位面积上的像素数目就越多,由
其构成的图像就越清晰。电视系统中把构成一幅图像的各像素传送一遍称为进行了一个帧处理,或称为传送了一帧。将组成一帧图像的像素,按顺序转换成电信号的过程称为扫描。在PAL制中,图像扫描是隔行的,即一帧图像分两次扫描,
扫描到的两幅图像分别称作奇数场和偶数场。视频图像信号的处理过程就是拍摄视频信号的逆过程。摄像头输出的是标准PAL制电视信号。摄像头通过光电转换实现图像到视频信号的转换,也就是扫描的过程。摄像头每扫描一行图像,加入一个行脉冲,每扫描完一场图像加入一个场同步信号。同时为了保证扫描逆程光栅不显示,应加入和同步信号同周期的消隐信号。对视频信号进行处理,需要先进行A/D转换、行/场同步信号的分离等步骤。采用专用的视频信号进行转换,然后再启用工具处理数字图像信号并得到需要的结果。最后将结果用适当的方式进行传输。
视频信号处理流程如下图1.2所示。
图1.2 视频信号处理基本流程
PAL制电视信号转化为数字视频信号后,控制信号有三个:场参考电压信号VREF,行参考电压信号HREF,奇偶场信号ODD。VREF高电平表示有效图像信号。ODD信号高电平表示为奇数场,低电平表示偶数场。H REF信号表示一行有效的图像数据,一行图像数据包括720个像素。
1.2视频图像分割处理系统设计
系统结构如图1.3所示,从系统结构图可以看出,系统主要包括视频信号输入模块,视频信号处理模块和视频信号输出模块等3个部分组成。各个模块主要功能为:视频输入模块将采集的多路视频信号转换成数字信号送到FPGA;视频处理模块主要由FPGA完成,根据需要对输入的数字视频信号进行处理;视频输出模块将FPGA处理后的信号输出到显示器。
实际电路板如下图所示:
第二章 具体电路设计分析
2.1视频源
本电路由两个VGA接口输入模拟视频信号,VGA接口是一种D型接口,上面共有15针空,分成三排,每排五个。VGA接口是显卡上应用最为广泛的接口类型,
多数的显卡都带有此种接口。接口实物图及引脚定义如表1所示:
管脚 定义
1 红基色red
2 绿基色green
3 蓝基色blue
4 地址码ID Bit(也有部分是RES,或者为ID2显示器标示位2)
5 自测试(一般为GND)
6 红地
7 绿地
8 蓝地
9 保留
10 数字地
11 地址码(ID0显示器标示位0)
12 地址码(ID1显示器标示位1)
13 行同步
14 场同步
15 地址码(ID3显示器标示位3)
模式 场扫描时序
刷新速率 像素时间 场周期 同步脉冲 后肩 有效时间 前肩
Pi*
width Frame
period Sync
pulse Back
porch Active
time Front
porth
O P Q R S
Hz us us lin us lin us lin us lin us lin
640*480 60 0.039683 16667 525 63 2 952 30 15365 484 286 9
640*480 72 0.032103 13889 520 80 3 694 26 12927 484 187 7
720*400 70 0.035352 14286 449 64 2 1018 32 12854 404 350 11
720*350 70 0.035352 14286 449 64 2 1814 57 11263 354 1145 36
800*600 56 0.027902 17857 625 57 2 571 20 17257 604 - -1
800*600 60 0.025132 16667 628 106 4 557 21 16030 604 - -1
800*600 72 0.020052 13889 666 125 6 438 21 12596 604 730 35
640*480 75 0.031746 13333 525 51 2 762 30 12292 484 229 9
640*480 66 0.033403 15152 525 87 3 1068 37 13968 484 29 1
模式 行扫描时序
分辨率 刷新
速率 像素
时间 行周期 同步脉冲 后肩 有效时间 前沿
A B C D E
Hz us us pi* us pi* us pi* us pi* us pi*
640*480 60 0.039683 31.75 800 3.81 96 1.786 45 25.635 646 0.516 13
640*480 72 0.032103 26.71 832 1.28 40 4.013 125 20.738 646 0.674 21
720*400 70 0.035352 31.82 900 3.82 108 1.803 51 25.666 726 0.530 15
720*350 70 0.035352 31.82 900 3.82 108 1.803 51 25.666 726 0.530 15
800*600 56 0.027902 28.57 1024 2.01 72 3.488 125 22.489 806 0.586 21
800*600 60 0.025132 26.54 1056 3.22 128 2.136 85 20.256 806 0.930 37
800*600 72 0.020052 20.85 1040 2.42 120 1.223 61 16.162 806 1.063 53
640*480 75 0.031746 25.40 800 3.05 96 1.429 45 20.508 646 0.413 13
640*480 66 0.033403 28.86 864 2.14 64 3.106 93 21.578 646 2.038 61
下面选一种最常用的VGA(640*480,60 Hz)图像格式的信号时序来分析解释:
(1)场扫描(又称为“垂直扫描” )周期
场扫描周期TVSYNC是指显示器扫描一帧完整画面需要的时间。该周期通过Vsync场同步信号来同步。每场有一个低电平场同步脉冲,该脉冲的宽度tWV=63μs(2行)。场周期=1s/60hz=16.683ms,每场525行(line)。其中480行(有些资料为484行)为有效显示行,45行(有些资料为41行)为场消隐期。场消隐期包括场同步时间(低电平场同步脉冲)tWV(2行)、场消隐前肩(又称“前沿”)tHV(13行)(有些资料为9行)、场消隐后肩(又称“后沿”)tVH(30行),共45行。
(2)行扫描(又称为“水平扫描”)周期
行扫描周期THSYNC是指显示器扫描一行需要的时间。该周期通过Hsync行同步信号来同步。每行有一个低电平行同步脉冲,该脉冲的宽度tWH=3.81μs(96像素)。行周期=16.683ms/525行=31.78μs,每行800像素(pi*)。其中640像素(有些资料为646像素)为有效显示区,160像素(有些资料为154像素)为行消隐期。行消隐期包括行同步时间(低电平行同步脉冲)tWH(96像素),行消隐前肩(又称“前沿”)tHC(19像素)(有些资料为13像素)和行消隐后肩(又称“后沿”)tCH(45像素),共160像素。
(3)复合消隐信号
复合消隐信号是行消隐信号和场消隐信号的逻辑与,在有效显示期复合消隐信号为高电平,在非显示区域它是低电平。
2.2视频输入模块
2.2.1 模数转换器AD9983
2.2.1.1主用芯片简介
AD9983(以下简称AD,如图2.1)为美国Analog Devices公司生产的3路8位模数转换器件,最大转换率达170MS/s(百万次采样/每秒),多用于捕获个人计算机或
工作站的RGB信号。近年来,在视频信号处理领域得到广泛的应用。AD内含60个寄存器00H-3CH,用来对AD进行初始化和控制。针对不同的应用环境,这些寄
图2.1 AD9983
存器需写入相应的值,才能使AD正常工作。AD的初始化是其工程应用的前提。AD初始化过程依靠AD9983的SDA(Pin 66)和SCL(Pin67)引脚进行,时序符合I2C总线的时序标准。我们可直接采用带有I2C总线接口的单片机对AD进行初始化,但是目前带有I2C总线接口的单片机数量较少并且价格普遍较高。对于不带I2C总线接口的单片机,我们可以采用模拟I2C总线技术使用其普通I/O口来模拟I2C总线时序,实现对外围器件的读、写操作。
2.2.1.2 、I2C总线传输协议简介
I2C是Philips公司推出的芯片间串行传输总线,以两根连线(SDA和SCL)即可实现完善的全双工同步数据传送,具有规范完整、结构独立和使用简单等特点。I2C总线的时钟线SCL和数据线SDA均为双向传输线。数据线上每传输一位数据都要求时钟线上有1个时钟脉冲与其相对应。
I2C总线数据传送包括三种重要的时序状态起始信号、终止信号和应答信号:
起始信号:在时钟线保持高电平期间,数据线出现由高电平向低电平变化时启动I2C总线;
终止信号:在时钟线保持高电平期间,数据线出现由低电平向高电平变化时停止I2C总线;
应答信号:I2C总线数据传送时,每传送一个字节数据后都必须有应答信号,应答信号在第9个时钟位上出现,接收器输出低电平为应答信号(A),输出高电平则为非应答信号(/A)。
2.2.1.3、AD进行初始化
采用单片机MSP430F135对AD进行初始化,必须解决以下几个问题:首先是产生I2C总线的时钟信号;其次是实现I2C总线的开始信号、停止信号、位传输信号和判断应答信号;再次是要确定AD9983A不同寄存器的设置数据。
1、I2C总线时钟的产生
一般情况下,FPGA的时钟频率较高,常为几十MHz,而I2C总线的时钟频率为几百kHz,用图2.2的方式可借助于FPGA的时钟获得I2C总线的时钟。需要说明的是,图中工作时钟的频率应为I2C总线时钟频率的M倍。这是因为系统中的任何一个I2C总线上的信号都是用M个工作时钟的周期来完成,而D触发器则是为了确保工作时钟的占空比为50%而设计的。【11】
图2.2 12C总线时钟产生图
假设FPGA时钟为125MHz,I2C总线时钟为200 kHz,M为8,则工作时钟为1.6 MHz,再考虑到D触发器相当于2分频,则
N= 125MHz/(200 kHz*8*2) = 391
2、关键信号的产生和传输
根据前面对I2C总线开始信号的讨论,利用8个工作时钟产生一个I2C总线信号,很容易设计出I2C总线的开始信号。即规定:第1个脉冲上升沿到第3个脉冲上升沿之间,SCL为低、SDA为高;第3个脉冲上升沿到第5个脉冲上升沿之间,SCL为高、SDA为高;第5个脉冲上升沿到第7个脉冲上升沿之间,SCL为高、SDA为低;第7个脉冲上升沿到第9个脉冲上升沿之间,SCL为低、SDA为低。这样经过8个脉冲周期,就可产生一个开始信号。【11】
停止信号也很容易照此设计,在此不再累赘。
而对于数据bit位的传输,根据I2C总线规范要求,在数据位的传输过程中,
SDA信号在SCL信号为高电平期间不容许发生跳变,可用SCL高电平期间的前、后各1个脉冲来作为数据的建立时间和保持时间。由此得到如图6所示的数据bit的传输设计。
3、 AD9983A寄存器的设置
对AD9983A进行初始化本质上是对AD9983A内部的每个寄存器的每一位写入相应的数值,AD9983A其中每个寄存器都有一个子地址。在对多个连续的寄存器进行操作时,寄存器地址有自动加1功能,所以确定第1个子地址后,可以不考虑地址的变化,顺序写入各寄存器的数值即可实现寄存器的连续设置。另外,在对AD9983A初始化时,还需要确定从地址,而从地址由硬件连接图决定,当芯片引脚A0(pin22)信号是低电平时,表示AD9983A的写地址为4CH。芯片的各个寄存器的意义可以参考附录AD9983A的文档资料 ……(未完,全文共62086字,当前仅显示11167字,请阅读下面提示信息。
收藏《毕业论文:基于fpga的视频图像分割技术—系统设计》)