设计(论文)专用纸
图1-12
进入新建工程的项目属性,在“Setting”属性菜单下,把编译器、编译器、链接器等“Command”属性添加“arm-linux-”前缀:
第 16 页
设计(论文)专用纸
图1-13
这样在编译后生成的就是arm版本的可执行文件了。
1.2 Linux下的图像采集接口(V4L2)
Linux 中的Video4Linux 模块为视频应用程序提供了一套统一的API 接口,使得应用程序可以使用统一的API 函数操作不同的视频设备, 极大地简化了视频系统的开发和维护。由于V4L 有很多缺陷,Bill Dirks 等人对其进行了重新设计,并取名为Video for Linux Two(V4L2),最早出现于Linux2.5.x 版本。V4L2相比于V4L 有更好的扩展性和灵活性,并且支持的硬件设备更多。它向虚拟文件系统注册视频设备文件,应用程序通过访问视频设备文件实现对视频设备的操作。 V4L2可以支持多种设备,它可以有以下几种接口:
1. 视频采集接口(video capture interface):这种应用的设备可以是高频头或者摄像头.V4L2的最初设计就是应用于这种功能的。
第 17 页 2. 视频输出接口(video output interface):可以驱动计算机的外围视频图像设
设计(论文)专用纸
备--像可以输出电视信号格式的设备。
3. 直接传输视频接口(video overlay interface):它的主要工作是把从视频采集设备采集过来的信号直接输出到输出设备之上,而不用经过系统的CPU。
4. 视频间隔消隐信号接口(VBI interface):它可以使应用可以访问传输消隐期的视频信号。
5. 收音机接口(radio interface):可用来处理从AM或FM高频头设备接收来的音频流。
1.3 摄像头采集数据格式(YUV420)
YUV是指亮度参量和色度参量分开表示的像素格式,而这样分开的好处就是不但可以避免相互干扰,还可以降低色度的采样率而不会对图像质量影响太大。YUV是一个比较笼统地说法,针对它的具体排列方式,可以分为很多种具体的格式。
YUV(亦称YCrCb)是被欧洲电视系统所采用的一种颜色编码方法(属于PAL)。YUV主要用于优化彩色视频信号的传输,使其向后兼容老式 黑白电视。与RGB视频信号传输相比,它最大的优点在于只需占用极少的带宽(RGB要求三个独立的视频信号同时传输)。其中“Y”表示明亮度 (Luminance或Luma),也就是灰阶值;而“U”和“V”表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和 度,用于指定像素的颜色。“亮度”是通过RGB输入信号来创建的,方法是将RGB信号的特定部分叠加到一起。“色度”则定义了颜色的两个方面—色调与饱和 度,分别用Cr和CB来表示。其中,Cr反映了GB输入信号红色部分与RGB信号亮度值之间的差异。而CB反映的是RGB输入信号蓝色部分与RGB信号亮 度值之同的差异。
YUV 的优点之一是,色度频道的采样率可比 Y 频道低,同时不会明显降低视觉质量。有一种表示法可用来描述 U 和 V 与 Y 的采样频率比例,这个表示法称为 A:B:C 表示法:
YUV420格式,每像素占用12 位 ,YUV色彩模型来源于RGB模型,该模型的特点是第 18 页 将亮度和色度分离开,从而适合于图像处理领域。
设计(论文)专用纸
YUV420与RGB的换算关系:
Y'= 0.299*R' + 0.587*G' + 0.114*B'
U'= -0.147*R' - 0.289*G' + 0.436*B' = 0.492*(B'- Y') V'= 0.615*R' - 0.515*G' - 0.100*B' = 0.877*(R'- Y') R' = Y' + 1.140*V'
G' = Y' - 0.394*U' - 0.581*V' B' = Y' + 2.032*U'。
1.4 图像压缩格式(H.264)
H.264是一种高性能的视频编解码技术。目前国际上制定视频编解码技术的组织有两个,一个是“国际电联(ITU-T)”,它制定的标准有H.261、H.263、H.263+等,另一个是“国际标准化组织(ISO)”它制定的标准有MPEG-1、MPEG-2、MPEG-4等。而H.264则是由两个组织联合组建的联合视频组(JVT)共同制定的新数字视频编码标准, 所以它既是ITU-T的H.264,又是ISO/IEC的MPEG-4高级视频编码(Advanced Video Coding,AVC),而且它将成为MPEG-4标准的第10部分。因此,不论是MPEG-4 AVC、MPEG-4 Part 10,还是ISO/IEC 14496-10,都是指H.264。
H.264最大的优势是具有很高的数据压缩比率,在同等图像质量的条件下,H.264的压缩比 是MPEG-2的2倍以上,是MPEG-4的1.5~2倍。举个例子,原始文件的大小如果为88GB,采用MPEG-2压缩标准压缩后变成3.5GB,压 缩比为25∶1,而采用H.264压缩标准压缩后变为879MB,从88GB到879MB,H.264的压缩比达到惊人的102∶1!H.264为什么有 那么高的压缩比?低码率(Low Bit Rate)起了重要的作用,和MPEG-2和MPEG-4 ASP等压缩技术相比,H.264压缩技术将大大节省用户的下载时间和数据流量收费。尤其值得一提的是,H.264在具有高压缩比的同时还拥有高质量流畅 的图像,正因为如此,经过H.264压缩的视频数据,在网络传输过程中所需要的带宽更少,也更加经济。
第 19 页 H.264是在MPEG-4技术的基础之上建立起来的,其编解码流程主要包括5个部分:
设计(论文)专用纸
帧间和帧内预测(Estimation)、变换(Transform)和反变换、量化(Quantization)和反量化、环路滤波(Loop FramedFilter)、熵编码(Entropy Coding)。
H.264/MPEG-4 AVC(H.264)是1995年自MPEG-2视频压缩标准发布以后的最新、最有前途的视频压缩标准。通过该标准,在同等图象质量下的压缩效率比以前的标准提高了2倍以上,因此,H.264被普遍认为是最有影响力的行业标准。
1.5 图像压缩实现(硬件压缩)
S3C6410中负责视频编码的MFC模块针对视频编码器的各功能模块均采用硬件实现,相对传统视频编码器的全软件实现,采用全硬件的视频编码器在编码速度上优势明显,并且对处理器的处理速度要求也进一步降低。下面分别说明S3C6410的MFC模块对H.264,MPEG4,H.263三种格式的硬件解码器的解码原理。
H.264视频格式的硬件编码器结构图1-14所示,与软件编码器不同的是,硬件编码器中的许多硬件功能模块内置缓冲区,这些缓冲区部分用于本模块数据处理;另一部分可以为下一功能模块缓存所需的输入数据。在图1-14中,运动估计模块一方面从外部SDRAM中读取参考帧宏块,从PrP模块中读取经旋转处理后的当前帧宏块,并对二者进行处理,计算出运动向量;另一方面又将缓存的当前帧宏块发送给残差模块,将缓存的参考帧亮度信号宏块发送给和运动发送给帧间预测模块。残差模块接收当前帧宏块,读取预测宏块缓冲区的中预测宏块,通过两者计算出差值宏块。这里的预测宏块是由帧内预测或帧间预测模式产生的。差值宏块经变换,量化后的变换系数一方面发送到系数缓存中进行重排序并缓存;另一方面被量化模块发送到反量化模块中进行反量化,反变换处理。系数缓存中经重排序后的系数和其它信息,如:运动向量,量化步长,宏块预测类型等,一起经BIT处理器的的CAVLC熵编码技术处理后的压缩数据流被写入外部SDRAM中。被量化模块发送给反量化模块的变换系数经反量化,反变换处理后再次得到差值宏块,但这里的得到的差值宏块由于经过了量化处理,所以与残差模块产生的差值宏块存在差异。差值宏块同存放在预测宏块缓冲第 20 页 得到未滤波的重构宏块,用于帧内预测。未区中的预测宏块一起经重构模块处理后,