引言:前端
做为消费者,咱们对于各类形式的视频系统都已经很是熟悉了。可是从嵌入式开发人员的角度来看,视频就好像是一张纷繁复杂的网络,里面充满了各类不一样的分辨率、格式、标准与显示等。算法
视频源微信
一、模拟视频源网络
一个视频解码器芯片能够将模拟视频信号(例如NTSC、PAL、CVBS、S-Video)转换为数字视频信号(通常为ITU-R BT.601/656 YcbCr 或RGB格式及其变种)。这是一个很是复杂的、多级处理的过程,其中涉及的操做有:从输入数据中提取定时信息,分离亮度和色度信号,将色度信息分离为Cr和Cb份量,采样输出数据,以及为数据分配适当的格式等。经过一些串行接口,例如SPI和I2C,能够对解码器的操做参数进行配置。下图是常见的解码器框图。ide
视频解码方框图性能
数字视频源:编码
CCD和CMOS传感器 当今视频信号源基本上都是以电荷耦合器件(CDD)和CMOS技术为基础的。这两种技术均可以将光线转换为电信号,可是二者的具体转换机理有所不一样。spa
在CCD器件中,传感器的表面覆盖着一层光敏材料,由数百万个感光像素点构成一个感光阵列。在光线下暴露以后,整个CCD像素整列上积累的电荷被读出到器件的一端,而后经过模拟前端(Analog Front End,AFE)芯片或者CCD处理器进行数字化转换。而CMOS传感器则能够直接将每个像素点上暴露的光线强度进行数字化转换。视频
CCD与CMOS原理对象
CCD与CMOS传感器
通常来讲,CCD具备更高的成像质量和更高的噪声性能,但比计耗电。而CMOS传感器则更容易制造,而且具备更低的耗能,可是成像质量不过高。部分缘由是每个像素点上的晶体管会阻塞一部分光线。不过,目前的CMOS技术已经开始在成像质量上和CCD技术很是接近了,如今,愈来愈多的中档相机传感器都是基于CMOS技术的。
无论采用什么样的技术,传感器阵列上的全部光感点都是对灰度级敏感的,灰度级从最暗(黑色)到最亮(白色)。这些感光点对灰度级敏感到何种程度被称为”位深度”。所以,8比特的像素能够分辨出28即256个渐变的灰度,而12比特的像素则能够分辨出4096个渐变的灰度。整个感光阵列上面有几层色彩过滤材料,将每个像素的感光点分为几个对颜色敏感的”子像素”。这种安排方式容许对每个像素感光点测量不一样的颜色强度。这样,每个像素感光点上的颜色就能够看做该点的红色、绿色和蓝色通道透光量的叠加和。位深度越大,则能够产生的RGB空间内的颜色也就越多。例如,24位颜色(RGB各占8位)能够产生224即大约1 670万种颜色。
部分24位颜色编码
Bayer pattern 为了恰当的描绘彩色的图像,传感器须要每一个像素位置有3个颜色样本——最多见的是红、绿和蓝。可是,若是在每一个相机里面放置3个独立的传感器,在成本方面又是没法接受的(尽管后来这种技术愈来愈实用化)。更重要的是,当传感器的分辨率增长到5~10百万像素时,就越加有必要利用某种图像压缩算法来避免在每一个像素位置输出3字节(或者更坏的状况,对于更高分辨的传感器,可能要输出3个12比特的字)。
不过别担忧,由于一些相机制造商已经发明了一些很聪明的方法来减小须要的颜色样本数量。最经常使用的方法是使用颜色过滤阵列(Color Filter Array,CFA),这个阵列仅仅测量像素点的一个颜色份量。而后,经过图像处理器进行插值获得其余颜色份量的值,看起来好像是每一个像素点测量了3中颜色。
Bayer pattern图像传感排列
当今最流行的CFA是Bayer pattern,如上图,这种方法是由柯达(Kodak)公司发明的,利用人眼对绿色的分辨率要高于对红色和蓝色的分辨率这一现象。所以,在Bayer颜色过滤阵列里,绿色的过滤点是蓝色或红色过滤点的两倍。这就产生了一种输出格式,通俗的讲,就是”4:2:2 RGB”格式,即每发送两个红色和蓝色像素值就要发送4个绿色像素值。
链接图像传感器
CMOS 传感器一般会输出一个并行的像素数据流,格式通常为YCbCr或RGB,同时还有水平和垂直同步信号以及一个像素时钟。有时候,也能够由外部时钟信号以及同步信号来控制图像的数据从传感器中输出。
另外一方面,CCD通常要搭配一个AFE芯片(如AD9948)。该类芯片负责处理模拟输出信号,将其数字化,并产生适当的时序去扫描CCD成像阵列。处理器为AFE芯片提供同步信号,而AFE芯片则用这些控制信号去管理CCD成像阵列。从AFE芯片输出的数字化后的并行输出数据流多是每像素10比特或12比特的分辨率。
LVDS(Low-Voltage Differential Signaling,低电压差分信号)已经成为并行数据总线的一种重要替代方案。LVDS 是一种低成本、低引脚数、高速串口借口,比标准的并行接口具备更好的抗干扰性能和更低的功耗。这是很重要的特性,尤为是随着传感器分辨率和颜色深度的不断提升,以及便携式多媒体应用日益普遍。
图像流水线
固然,拍照的过程并非在传感器处结束了,正相反,它才刚刚开始。咱们来看看,一幅原始图像在变成显示器上的一幅漂亮的图片以前要经历哪些步骤。有时候,这些是在传感器电子模块内部完成的(尤为是用CMOS传感器时),而有些时候这些步骤则必须由媒体处理器来执行。在数码相机中,这一系列处理阶段被称做”图像处理流水线”,简称为”图像流水线”。
图像处理流水线举例
机械反馈控制
在松开快门以前,对焦和曝光系统连同其余机械相机组件一块儿根据场景的特征控制镜头位置。自动曝光算法测量各个区域的亮度,而后经过控制快门速度和光圈大小对过分曝光或者曝光不足的区域进行补偿。这里的目标是保持图像中不一样的区域内具备必定的对比度,并达到一个目标平均亮度。
自动对焦
自动对焦算法分为两类。主动方法利用红外线或超声波发射器/接收器来估计相机和要拍的对象之间的距离。被动方法则是根据相机接收图像作出对焦决策。
在这两个子系统中,媒体处理器经过PWM输出信号控制各个镜头和快门马达。对于自动曝光控制,也要调整传感器自动增益控制(Automatic Gain Control ,AGC)电路。
自动对焦
预处理
正如咱们前面讨论的,传感器的输出须要通过伽马校订才能用于显示,同时也对传感器的采集响应进行补偿。
因为传感器一般都会有一些有缺陷的像素点,所以一种经常使用的预处理技术是经过中位数滤波消除这些缺陷,原理就是像素与像素之间出现急剧的变化是不正常的,由于光学处理过程稍微模糊了图像。
滤波与图像补偿
这组算法考虑了镜头的物理特性,也就是镜头会在必定程度上歪曲用户看到的实际景象。不一样的镜头可能引发不一样的失真,例如广角镜头会产生”桶状”或”膨胀”效应,而长焦镜头则会产生”收缩”效应。镜头的阴影失真下降了周围图像的亮度。色差会引发周围出现条纹。为了纠正这些天真,媒体处理器须要运用数学变换来处理图像。
曝光补偿
预处理的另外一个用处是图像的稳定性补偿,或者称为防抖动。这时,处理器会根据接收图像的平移运动调整,固然这经常要借助于外部传感器,也就是实时感知传感器的运动。
高斯低通滤波
白平衡
预处理的另外一个阶段是白平衡。当咱们看见一个场景时,无论光照条件如何,咱们的眼睛老是会把眼睛看到的一切调整到同一组天然颜色下的状态。例如,无论咱们是在室内荧光灯下,仍是在室外阳光底下,一个深红色的苹果,咱们看来都是深红色。可是,图像传感器对颜色的”感知”却极大地依赖于光照条件,因此咱们必须将传感器得到的图像映射为”与光照无关”才能最终输出。这种映射处理能够手动也能够自动完成。
在手动系统中,你能够用相机指定要进行”白平衡”的对象,而后相机将调节整幅图像的”色温”以知足这种映射。另外一方面,自动白平衡(Automayic White Balance,AWB)利用图像传感器的输入和额外的一个白平衡传感器共同决定应该将图像中哪一部分做为”真正的白色”。这其实是调整了图像中R、G、和B通道之间的相对增益。很显然,AWB要比手动方法多一些图像处理的过程,这也是厂商专属算法的另外一个目标。
白平衡
拜耳(Bayer)插值
对拜耳数据插值,多是图像处理流水线中最重要的、数值计算最多的操做。每个相机制造商通常都有本身独特”秘方”,不过通常来说这些方法最终能够分为主要的算法大类。
非自适应算法,例如双线性插值或者双三次插值,是其中实现最简单的方法,在图像的平滑区域内这些算法工做的很好。可是,边缘和纹理较多的区域则对这些直接实现的方法提出了巨大的挑战。自适应算法,能够根据图像局部的特征自动改变行为,其结果会更好。
自适应算法的一个例子是边缘指导重构(edge-directed reconstruction)。该算法会分析某个像素周围的区域,而后在决定在哪一个方向插值。若是算法发现附近有一个边缘,则会沿着边缘进行插值,而不会穿越这个边缘。另外一种自适应算法则假定一个完整的物体具备恒定的颜色,这样能够防止在当个物体内颜色出现突变。
除此以外,还有不少的插值方法,其中有些涉及频域分析、贝叶斯(Bayesian)几率估计,甚至还与神经网络有关。
颜色变换
在这个阶段,插值后的RGB被转换到目标颜色空间(若是还不是在正确的颜色空间中)。为了压缩或者在电视上显示,一般还会涉及一个RGB -YcbCr的矩阵转换,另外还须要一个伽马校订阶段来适应目标显示。在这个阶段,也可能将YCbCr输出数据进行色度下采样造成标准的4:2:2格式,以较小的视觉损失达到减少带宽的目的。
后处理
在这个阶段,经过各类滤波操做使图像更加完美,而后就能够发送到显示器或者储介质上。例如,边缘加强、像素的阈值降噪、人工颜色移除等在这个阶段都是很是广泛的。
显示/压缩/存储
一旦图像处理完毕,图像处理流水线将分为两个不一样的分支。首先,通过后处理的图像会输出到显示器件上,通常是LCD屏幕(但有时候也有多是NTSC或PAL电视显示器,固然这是在特定的相机模拟下)。第二,图像被发送到媒体处理器中进行压缩处理,在图像存储到本地的存储介质(通常是非易失性闪存卡)中以前,先用工业标准的压缩技术(例如JPEG)进行处理。
版权全部权归卿萃科技,转载请注明出处
做者:卿萃科技ALIFPGA
原文地址:卿萃科技FPGA极客空间 微信公众号
扫描二维码关注卿萃科技FPGA极客空间