随着多媒体技术的发展和完善,3D显示技术和3D视频技术取得了突破性的成就,未来的视频传输将不仅仅局限于二维视频。两年前《阿凡达》的上映,在国内掀起了3D电影的观影狂潮,因其结合IMAX电影放映系统,更加增强了电影的视觉震撼,这使得3D电影成为电影发展的趋势[1]。就在去年,国家广电总局也推出了我国首个3D电视试验频道,并于2012年元旦试播,春节正式播出。3D电视频道的首播也带动了3D电视的热销,其促进了新的文化消费,带动了电视机的更新换代,这将从一个方面促进我国经济的发展。我们可以预见,在未来3D视频技术将拥有着庞大的市场需求和应用前景[2]。
3D视频技术在很多行业领域都有所应用,如在数字电视、可视会议、工业领域、医疗卫生领域、建筑领域和军事国防领域都有着广阔的应用前景。
三维显示是传统二维显示技术的扩展和延伸,虽然二维图像中也隐含着深度信息,如当同一个物体在距离观察点不同时将具有不同的大小和清晰度,我们就可以据此判定物体的远近,但是这种深度信息是不精确的,它依赖于人眼的主观感受。三维视频最明显的特征就是在传统二维视频的基础上增加了场景的深度信息,这种深度信息将更加精确地描述场景内各物体的远近,以形成立体感受。在实际操作中,这种深度信息是通过深度图像进行表达的。
通过以上阐述我们可以推想,3D视频技术将成为未来视频技术中的主流,而基于深度图像的立体显示技术由于其真实感和临场逼真感,更将成为未来研究的重点和热点。目前,对于彩色图像和灰度图像的特性已经有很多成熟的研究方法,由于深度图像是通过不同的原理获得的(在1.3中将进行详细阐述),这些已有的方法是否仍然适用于深度图像呢?本文正是通过运用这些已有的方法对深度图像进行边缘特性、纹理特性及运动特性的分析,进而得出深度图像与彩色图和灰度图之间的异同。
随着人们对视觉要求的不断提高,3D立体显示技术逐渐成为了人们研究的热点。3D视频可以分为双视(双目)和多视(多目)3D视频。双视3D视频是指用两路摄像机对景物进行拍摄,经过后期的制作以及传输,最后显示在用户终端的屏幕上。观众需佩戴与3D显示器相配套的3D眼镜,使左右眼分别看到两路摄像机拍摄到的图像。由于人的双眼之间存在着一定的间距(平均值为6.3cm),因此当观看一个景物时,左右眼的相对位置是不同的,这就使双眼看到的景物存在差异,即产生了双目视差[3]。基于双目视差原理,观众就可以在脑中形成立体的图像。目前,大多数的3D显示都是基于这种同时提供两个视图的立体显示。除此之外,多视显示也逐渐得到大量的应用,其相比于双视显示可以提供更多的信息,显示的效果更好,并且可以提供裸眼立体显示,这就克服了观众接受3D视频的最大障碍。因为有些观众可能已经佩戴有眼镜,如果还需佩戴3D眼镜这无形之中就增加了观众的负担,并且更容易造成人眼的视觉疲劳和晕眩感[3]。多视3D视频可以带给用户前所未有的交互体验并使他们沉浸在立体的场景之中,当观众观看视频时,只要移动他们的位置就可以看到原先被物体遮挡的场景,而这种特性是多视显示独有的。多视点视频是由位于不同方位和角度的摄像机对同一场景同时拍摄得到的,其除了具有时间上的相关性外还具有视点间的关联,这就使多视点视频的数据量很庞大,存在大量的数据冗余。巨大的数据量已经成为制约其广泛发展的瓶颈,于是人们提出了多视点视频编码(MVC ,Multiview Coding)的概念,MVC主要致力于多视点视频的高效压缩编码,其传输过程如图1.1所示,这里只显示了两路摄像机输入的情况,当然发送端可以扩展为N路摄像机。#p#分页标题#e#
图像的边缘是图像的基本特征之一,两个具有不同灰度值的相邻区域之间总存在着边缘[6]。
边缘的本质是灰度值的不连续,这种不连续性常可以通过求导数方便的检测到,一般常用一阶和二阶导数来检测边缘。一阶导数在图像中区域由暗到明的位置处有一个向上的阶跃,而在其他的位置处都为零,这表明可用一阶导数的幅值来检测边缘的存在,而幅度峰值一般对应着边缘的位置;而二阶导数是对一阶导数的求导,则二阶导数的过零点处对应着图像的边缘点[6]。
尽管Canny算子计算边缘幅度的一阶导数,但它本质上是一种基于二阶导数的算子。八方向Kirsch算子是一种方向微分算子,它利用一组方向模板分别计算不同方向上的差分值,以最大值作为边缘强度,最大值的方向作为边缘方向[6]。
实际中,根据数字图像的特点,在图像中求导数是利用差分近似微分来进行的,差分可以通过算子模板与图像进行卷积实现。根据模板的大小和模板中每一个系数的差异会有不同的算子,它们在进行边缘检测时具有不同的性能。
Sobel算子的思想是邻近的像素点对当前像素点产生的影响是不等价的,所以距离不同的像素具有不同的权值,一般认为距离越大,产生的影响越小。其假定以当前像素为中心获取一个的邻域,将该邻域中的像素点分别与其模板中对应的权值相乘,再将各结果进行相加进而得到每个像素位置的偏导数。它的两个模板见图2.3,左边的模板可近似求得y方向的导数,右边的模板可近似求得x方向的导数,
如果取卷积值中的最大值的绝对值作为边缘强度,并且用最大值符号的方法来确定相应的边缘方向,则由于各模板的对称性只需要用前四个模板就可以了。
此外,Kirsch算子的方向模板也可以有不同的尺寸,如八方向模板;方向微分算子的方向也不仅限于8个[6]。
坎尼(canny)指出一个好的边缘检测算子应具有的三个指标:①低差错率,避免漏检或误检边缘;②精确定位,检测出的边缘应在的真正边界上,即找到中心点;③单像素宽,对每个边缘有惟一的响应。
Canny边缘检测的步骤是先用高斯平滑滤波器对图像进行滤波处理,以去除图像中的噪声 ,然后用某种一阶梯度算子计算滤波后图像中每个像素的梯度幅值,为了得到更加合理的边缘,其要对梯度的幅值进行“非极大值抑制”,以得到细化的边缘,最后用双阈值法选取两个阈值确定真正的边缘点。#p#分页标题#e#
如图2.7中第2行第2列的图像为Roberts算子对灰度图进行边缘检测的结果。由该结果我们可知Roberts算子可以检测出图像的大致轮廓,但是轮廓线比较淡,不很清晰,图像中比较细的边缘可能会被忽略掉。Roberts最大的优点就是计算简单并且计算量小、速度快,算子的定位精度高,但是由于没有进行平滑处理,就会对噪声比较敏感,不具有抑制噪声的能力,因此该算子适合对边缘清晰并且噪声较少的图像进行边缘检测。
如图2.8中第1行第2列的图像为Sobel算子对灰度图进行边缘检测的结果。将该结果与Roberts算子的检测结果进行对比我们可以发现Sobel算子检测出的边缘更加清晰,可以检测出更多的细节,但是边缘的线条较粗,包含了不少的伪边缘。Sobel算子中心系数使用权重2的思想是通过突出中心点的作用而达到平滑的目的,因此Sobel算子具有一定的平滑作用,能够滤除一些噪声,这就使其受噪声的影响比较小,但是这种平滑能力也平滑了一些真正的边缘。由于Sobel算子能够产生较好的检测效果且计算量不是很大,因此成为比较常用的边缘检测算子。
如图2.8中第2行第2列的图像为Kirsch算子对灰度图进行边缘检测的结果。我们可以发现Kirsch算子检测出的边缘较为模糊,线条相比于Sobel算子更粗,定位精度更低。通过比较我们可知Sobel算子边缘检测所产生的结果还是非常令人满意的,相较于Kirsch算子其产生的边缘更适度、更细致,而Kirsch算子生成的结果比较夸张。虽然Kirsch算子的计算量比较大,但是其可以检测出边缘的方向,并且对噪声较多、对比度较差的图像处理的效果会较好。
如图2.9中第2列的图像为Canny算子对灰度图进行边缘检测的结果。与上面讨论的算子不同的是这里的检测结果进行了二值化处理,但是不影响我们对其性能的分析。通过该结果我们可以发现Canny算子检测出的效果最好,能够检测出边缘中较细的部分,产生的边缘是单像素宽,非常符合边缘检测算子应具有的三个指标。与其他边缘检测算子的不同之处在于,Canny算子使用了高低两个阈值分别检测出强边缘和弱边缘,并且仅当弱边缘与强边缘相连时才将弱边缘包含在输出的图像中,由于噪声分布是随机性的出现在图像中,这就不容易使噪声被误检做边缘输出,更容易检测出真正的弱边缘。Canny算子的边缘定位准确,连续性较好,其采用高斯平滑函数对图像进行平滑滤波处理,因此具有较强的去噪能力。此外,选取的阈值越高检测出的边缘越少,因此在实际操作时我们需要一定的方法来判决阈值。
Novak等人发现,彩色图像和灰度图像大约有90%的边缘是相同的,这就是说,有10%的边缘在灰度图像中是检测不到的,而这些边缘来自颜色的变化[8]。#p#分页标题#e#
有些图像在局部区域中可能无规律可循,但在整体上却表现出某种规律性。习惯上,我们把这种局部不规则但是在宏观上却有规律的特性称之为纹理[9]。纹理可以认为是灰度(或颜色)在空间以一定的规律变化而形成的图案[6]。
图像的纹理分析已经在许多领域得到了广泛的应用,其因包含物体表面及其周围环境的信息,多用于图像检索和图像的分类中。如气象云图多是纹理型的对象,在分析云类(积云、卷云、积雨云、层云等)时我们就可以通过它们不同的纹理特征进行识别;对遥感图像进行纹理分析也已成为非常成熟的应用领域,不同的地形地貌在遥感图像中将呈现出不同的纹理图像,如河流、湖泊、农田、城市都可以通过纹理将它们区分开[10]。
纹理分析的方法可以归纳为3种:统计法、结构法和频谱法,本文主要应用纹理描述的统计方法中的灰度共生矩阵(GLCM,Gray level co-occurrence matrix)对图像进行纹理分析。图像的GLCM是一种用于确定纹理特性的很好的方法,广泛用于将图像的灰度值转换为纹理信息。
设为目标区域中具有特定空间联系的像素对的集合,表示一幅二维数字图像,灰度级别为,则共生矩阵中各元素可以定位为:
上式表示了具有某种特定空间关系、灰度值分别为和的像素对的个数(表示了集合中的元素个数),显然是的矩阵。若和之间的距离为,两者之间的坐标横轴之间的夹角为,则我们就可以得到各种间距及角度的GLCM ,通常取为0或1,为,,和四个方向[6]。
当两像素间的距离和角度等位置关系选定后,就可以生成相应的GLCM,如下式所示:
这样就将的空间坐标转换为了具有一定空间关系的两个像素的灰度级同时发生的概率(进行归一化处理后)。
在实际操作中,我们往往不是直接应用得到的GLCM,而是在其基础上获取二次统计量——纹理描述符进行分析。Haralick等人定义了14个用于纹理分析的特征量,但其中仅有4个是不相关的,一般用能量(又称角二阶矩)、熵、惯性矩(又称对比度)和相关性这四个量值来提取图像的纹理特征[11]。
事物总是处于不断的运动变化之中,对场景进行连续采集的图像序列能够反映出场景中物体以及场景的运动与变化,与运动信息有着密切的联系。运动信息既有大小也有方向,可以用矢量来表达,即运动矢量(MV,Motion Vector)。对图像进行运动分析就是对图像中的运动信息或运动矢量的检测。
视频图像的数据量十分惊人,但是图像序列在时间上有很强的相关性,因此需要通过各种方法有效降低图像的冗余度来减少数据量以便于图像序列的处理和传输。基于块的运动估计方法能够反映出图像序列相邻帧之间的运动信息,是实现视频压缩编码的重要技术,其可以有效地去除图像的帧间冗余度,获得较高的压缩比,广泛应用于各种视频压缩编码方案中[12]。#p#分页标题#e#
运动估计用来估计物体的位移,得到MV,运动补偿则根据得到的MV得到尽可能接近当前帧的预测帧。原理上,运动估计首先需要进行物体的划分,即划分图像中的静止区域和运动区域,但由于实际的图像序列内容变化繁多,将运动的物体从中划分出来非常困难,因此采用基于块的运动估计在活动图像编码中是一种变通可行的方法[13]。基于块的运动估计先把一幅图像分为互不重叠的个像素子块,然后以每个子块为单元计算MV,并将其编码发送到接收端。需要注意的一点是,在基于块的运动估计和运动补偿中有一个基本假设,即块内所有的像素具有相同的平移运动,这样子块的MV也就是子块内所有像素的MV了。
基于块的运动估计算法有很多,其中全搜索算法(FS,Full Search)是基本算法,虽然其性能最优,但是运算量却很大,耗时较长。视频信号的处理需要较高的实时性,尤其如视频会议等图像对实时性的要求更高,因此对视频图像序列处理的延时是有限的。在实际应用场合中我们一般需要采用运算量大为减少,耗时较短,但性能略低于全搜索的算法,三步搜索算法(TSS,Three Step Search)是目前应用广泛的快速运动估计算法之一,而菱形搜索算法(DS,Diamond Search)是目前快速算法中性能最优异的算法之一。基于块的运动估计算法有很多种,这里仅给出3种有代表性的估计算法。
(1)全搜索算法:
基于块的运动估计算法在估计一个子块的位移时,在前一帧图像中以当前子块为中心的一个范围内进行匹配运算,该范围称为搜索区。在搜索区中寻找一个与当前子块最匹配的子块,这两个子块中心的位移即为估计的MV。FS需要在整个搜索区进行匹配运算得到的平均绝对误差(MAD,Mean Absolute Differences)值,然后在所得的所有MAD值中找到最小值,该值所对应的子块与当前子块匹配得最好,两者之间的位移即对应最佳MV。假定搜索区水平和垂直方向的最大位移均为,那么FS需要次误差计算。
(2)三步搜索算法:
TSS搜索共需三步即可,三步搜索也因此得名,其搜索步长依次为4、2、1。步骤具体如下:①从当前子块的中心开始,以4为步长,在周围距离步长的8个点及中心点处进行匹配运算,求出最佳匹配子块的中心位置;②以前一步求出的最佳子块为中心,以2为步长,按照相同的方法找到最佳匹配子块的中心;③再以前一步求出的最佳子块为中心,以1为步长,按照相同的方法找到最佳匹配子块的中心,它与当前子块中心的位置偏移量即为估计的MV。可以看到,当时,三步搜索法仅需要次匹配,其比FS匹配的次数少多了。
(3)菱形搜索算法:#p#分页标题#e#
DS采用了两种搜索模板,分别是有9个搜索点的大模板和有5个搜索点的小模板。开始搜索时先用大模板进行匹配运算,找出最小块匹配误差点,然后以前一步得到的最小块匹配误差点为中心,按照同样的方法进行匹配运算,当最小块匹配误差点出现在中心点时,便可以将大模板换成小模板,再进行匹配运算,这时5个点中的最小块匹配误差点即为最佳匹配点,根据该点可以形成最终的MV [12]。
目前视频编码标准在对视频信号进行编码时,采用的是YUV的颜色编码方法,而非RGB格式。YUV分为三个分量,“Y”表示亮度,也就是灰度值,而“U”和“V”的表示两个色差分量。这样的表示方法是为了彩色电视向下兼容黑白电视,因为它将亮度信息(Y)与色差信息(UV)分离,没有UV分量一样可以显示完整的图像,只不过图像是黑白的。为了减少数据量,对色差信号的采样率是亮度信号的一半,因此在进行运动估计的时候我们可以只对灰度图像进行检测,即Y分量,而UV分量都可以通过Y分量的检测结果进行推算得到[14]。因此通过灰度图像的运动估计分析结果,彩色图像可以得出类似的结论,所以这里我们仅仅给出了灰度图像和深度图像运动估计的检测结果。