依靠视频预/后处理实现更出众的高清多媒体设计
扫描二维码
随时随地手机看文章
视频产品的差异化
高清数字视频编解码算法的标准化确保了不同产品之间的协同工作能力,标准编码器的输出必须能够被所有标准解码器解码。因此在编解码算法上没有太多的差异化空间。这对于终端产品设计者来说有好处,因为它利于芯片设计人员针对算法作出非常高效的设计;而对于那些希望自己的产品与众不同的设计者来说,则是个缺点。好在用于提高图像质量和色彩还原能力的视频预处理和后处理模块提供了产品差异化的机会,同时也对产品的可编程性提出了要求。
视频预处理算法
毫无疑问的,视频流不会以来自传感器的初始状态传输,在进行编码之前,会对原始码流进行一系列的变换处理。主要的预处理操作包括:
* 像素扫描/数据传输–这一步操作只是简单的从传感器得到图像。
* 拜尔格式解交织–现代视频图像技术用三色RGB拜尔滤波器替代了单色的图像传感器,因此来自传感器的数据流包括了红、绿、蓝的颜色信息。这些信息被分离后,变换为YCbCr的亮度与色度信息来表示图像。
* 噪声滤波–电子世界中总是会有噪声存在,而降低或消除噪声的最佳阶段是在进行编码之前。
* 抖动检测与补偿–抖动检测与补偿可以减小因相机抖动造成的图像质量下降。
* 局部动态范围补偿–在特定的模式下,图像的动态范围可能会超出传感器的极限。而照相机或摄像机应该具备智能调整曝光量从而扩展传感器基本动态范围的功能。
* 对焦调整(锐化)–图像传感器无法捕获连续的图像信息。它们将图像分解为一个个像素,然后根据不同的分辨率在像素间进行插值并重新组合成新的图像。这种操作会导致图像锐度的下降,但通过适当的预处理算法是可以纠正的。除此之外,锐化算法还可以使由于镜头原因轻微跑焦的图像看起来更锐利。
* 颜色校正–不同色温下的白光是有所不同的,这会影响到最终获取的图像。除此之外,不同的显示设备处理颜色的方法也不一样。视频系统中的颜色校正补偿功能可以纠正颜色偏移,特别是皮肤色调的偏移
* 人脸识别–在人物众多的图像中,拍摄者通常希望图像聚焦在人物的面部。照相机和摄像机的一个重要功能就是能够识别人脸并自动对焦。
* 立体图像–根据平面图像的密度信息来构建立体图像,这种预处理常用在融合了虚拟和真实图像的混合现实系统中。
图1是四种预处理算法的示例图像:噪声滤波、抖动检测与补偿、动态范围补偿和颜色校正。
图1: 四种预处理算法示例:噪声滤波、抖动检测与补偿、动态范围补偿和颜色校正。
[!--empirenews.page--]视频后处理算法
从标准视频解码器得到的图像并非完美无缺,视频后处理算法可以大大提高图像的质量,提高最终产品的附加值。视频后处理算法包括:
* 解块/解环路滤波器–在视频压缩和解压缩过程中会把图像分成小块,分别进行编码,解码时再把这些块组合成完整的图像。这种操作是有损的,而解块/去振铃滤波器可以降低其对图像造成的影响。
* 边界检测–边界检测算法用于缩放,解交织以及其他一些视频处理操作。除此之外,在安保,视频监视,交通管理和医学图像处理领域也起着重要作用。
* 图像缩放–从挂在墙上的平板电视到拿在手中的移动电话,视频设备的屏幕大小千差万别,这使得编码后的视频流尺寸和播放设备的屏幕尺寸多有不同。图像缩放算法可以调整视频流的尺寸以适应播放设备的屏幕。
* 解交织–视频交织是为了在电视屏幕上显示设计的,每一幅交织视频图像显示为两个连续的画面,每个画面包括了奇数或偶数条状视频线,这样交替的每个画面包含了对应图像的一半视频线。但是在电脑屏幕或液晶电视上显示时,每个画面都需要显示对应图像的所有视频线,这时交织视频在显示前就必须进行解交织处理。
* 帧率转换–在解码后的各帧图像间插值以提高视频帧率的方法可以增强运动图像的平滑度。这种能力对于高端的120fps视频和24fps电影视频的转换都非常重要。
* 噪声滤波–噪声会使视频图像的质量下降。而各种噪声滤波算法可以改善图像质量。
* 视频覆盖/透明效果–许多视频系统都会在播放视频的同时覆盖显示用户界面。
* 色彩空间转换/亮度/对比度/伽马校正–不同的显示设备有不同的动态范围,对颜色的处理也不相同(不同的颜色传输函数)。如果知道相应的参数,就可以选择适当的视频后处理算法。对于液晶显示来说伽马校正非常重要因为每个液晶面板都有独特的传输函数。
图2是四种后处理算法的示例图像:解块和去振铃、边界检测、图像缩放和解交织。
图2: 四种后处理算法示例:解块和去振铃、边界检测、图像缩放和解交织。
[!--empirenews.page--]视频预处理和后处理算法的实现
与视频编解码算法不同,预处理和后处理算法并没有统一的标准,各个产品采用的算法是不同的。此外,原有算法会不断升级,新的算法也会不断涌现,这些都要求预/后处理算法的硬件具有更高的可编程能力,因此专门针对这些算法优化过的可配置处理器是一个不错的解决方案。
你可能并不熟悉可配置处理器的概念,但你一定对固定指令集架构处理器有所了解,自片上系统诞生之日起就在使用它们。固定指令集架构处理器延续了自1971年Intel发明业界第一颗商用单片处理器4004以来一直使用标准处理器架构的传统。SOC的出现(其实就是内置处理器的ASIC)在90年代中期改变了微处理器的传统架构。既然用户可以根据特定应用定制硅片,那么同样也可以定制片上的处理器。但是过去由于缺乏专门的处理器设计人员和开发维护软件工具链的昂贵费用,定制处理器一直未能实现。
如今,自动化工具已经可以帮助逻辑设计和软件开发人员针对特定的任务来定制处理器,而不需要专门的处理器设计者参与了。由于增加了新的指令和寄存器以及将多条指令合并成单条指令,优化后的定制处理器实现目标算法的性能比通用处理器和DSP要高得多。因此,开发一个视频专用处理器来加速各种视频预/后处理算法就顺理成章了。有很多方法来实现视频算法,这里提到的办法很简单:用C语言来描述算法,在处理器上编译运行并进行性能分析,接下来就可以看到在不同处理器架构上的性能差异了。
表1列出了采用上述方法针对5种不同的视频算法分别在RISC处理器、DSP处理器、针对算法用自动化工具定制的处理器和设计人员手工定制的处理器上运行的结果。这里的RISC处理器是一款基于Tensilica Xtensa架构的RISC核,DSP处理器同样基于Tensilica Xtensa架构,但是增加了包括4路SIMD MAC和DSP专用ALU等一系列DSP扩展指令,能够执行4路或8路SIMD向量操作,该处理器还支持超长指令字功能,每个时钟周期能够发射3条独立的指令,这套扩展指令集被称作Vectra LX指令集。
表1中所列视频处理算法包括:
* 5x5像素2D滤波器:2维滤波器可用于包括图像锐化,模糊化和增加抖动等操作中。
* 5x5像素门限滤波器:门限滤波用黑白二值来表示图像像素,从而使每个像素只占用1bit。滤波结果中不包括灰度信息,用于噪声检测等算法中
* 中值滤波:中值滤波经常用于减小椒盐噪声和高斯噪声的影响。
* 帧采样:简单的图像缩小功能
* 帧求和:该算法用于衡量视频图像不同部位的光强,在降噪、曝光补偿中都有应用,也用于辅助视频压缩。
经过了SIMD/DSP扩展的Xtensa处理器比未扩展版本快很多,大多数视频处理算法的性能都得到了巨大提升,但增加的面积相对来说很小(在TSMC 65LP制程下大约0.4mm2)。
表1中“XPRES”列所示为采用Tensilica自动化工具XPRES定制的处理器执行5种算法的性能。
XPRES对C源代码进行性能分析并自动生成针对相应代码进行优化的处理器扩展指令。自动生成的处理器比扩展了Vectra LX指令集的处理器面积稍小,但在大多数算法的性能上却可以略胜一筹。
表1最后一列所示为手工定制扩展指令和IO接口来加速特定算法的处理器性能。我们可以看到5x5 2D滤波算法的性能比未定制处理器提高了170倍;5x5门限滤波算法的性能提高了225倍;帧求和算法的性能提高了44倍。
表1:视频算法性能结果:RISC处理器、DSP处理器和Tensilica自动化工具XPRES定制的处理器之间的性能比较。