具体实施方式
下面结合说明书附图和实施例对本发明做详细描述。
如图1所示,在本发明深度图提取方法中,以输入的待处理视频帧序列为源图像,通过对源图像进行边缘检测和目标识别,得到目标图像。根据目标图像判断视频场景是否发生切换。然后依据视频场景是否发生切换、目标图像像素点的亮度值在时间和空间上的变化、以及电视刷新频率计算某一像素点的深度值,根据所得深度值计算并提取深度图,输出深度图结果。
为了实现本发明深度图提取方法,依据目标图像和电视刷新频率计算某一像素点的深度值depth等于某位置处该像素点的亮度值在空间上的变化量与此位置处该像素点的亮度值在时间上的变化相除所得值。优选的具体公式为:,其)中,PY(x,为y)目标图像中某一像素点的亮度值,PY'(x,y)为上一帧图像中同一位置像素点的亮度值,PY(x+Width/2,y)为此像素点在水平方向上运动的下一坐标点的亮度值,PY(x,y+Height/2)为此像素点在垂直方向上运动的下一坐标点的亮度值;Width为电视宽度方向上的像素个数除以电视刷新频率后所得值,Height为电视高度方向上的像素个数除以电视刷新频率后所得值;当所得depth值大于255时depth的计数为255,当所得depth值有余数时进行四舍五入。
在计算深度图时,由于运动是连续的,所以其深度值的变化程度是一个累加的过程;而当视频场景切换时,连续的运动终止了,此时需要对累加的深度值进行清零,否则就会发生错误。所以,根据深度值计算并提取深度图时,如果Acountdepth+depth<255则Acount'depth=Acountdepth+depth;否则 其中,为之前累加的深度值,Acount'depth为新的深度值。
为了简化算法的复杂程度,本发明深度图提取方法还包括步骤:对所得源图像分别进行横向和纵向的第一次下采样,对第一次下采样后的图像进行边缘检测和目标识别,得到目标图像。其中,第一次下采样优选采用1/2下采样。
同样为了简化算法的复杂程度,本发明深度图提取方法还包括步骤:对目标图像分别进行横向和纵向的第二次下采样操作;依据视频场景是否发生切换、第二次下采样后的结果以及电视刷新频率进行深度图的计算与提取;输出深度图。其中,第二次下采样优选采用1/3下采样。
为了使生成的深度图像边缘数据更加准确、3D视频图像效果更好,本发明深度图提取方法还包括步骤:对目标图像提取边缘坐标,依据边缘坐标对计算与提取所得深度图的边缘进行优化校准,然后输出深度图结果。
在本发明深度图提取方法中,边缘检测优选的实现方法是通过计算某一位置的像素点与其四周相邻像素点的相关程度来实现:将中心点像素值与其相邻像素点分别相减,并取其绝对值;当相邻像素差值的绝对值小于设定的相关阈值时判定此两点相关;与四周相邻像素点都相关的像素点位于目标内部,与周围三个像素点相关的像素点位于目标边缘,与周围两个像素点相关的像素点位于目标边界交点。
边缘检测完成后,由目标内部的像素点、目标边缘的像素点和目标边界交点的像素点共同组成目标,实现目标识别。
在本发明深度图提取方法中,判断视频场景是否切换是很重要的一个步骤。现有判断方法依据的是灰度值的变化。为了提高判断的准确性和效果,本发明还公开了一种判断视频场景切换的方法,该方法至少包括下述步骤:输入待处理视频帧序列,得到源图像;对源图像进行边缘检测和目标识别,得到目标图像;根据目标图像得到目标对象的亮度值,在连续两帧画面中,相同位置像素点的亮度值不相关的个数超过设定值时判定视频场景发生了切换,否则判定视频场景未切换。
为了令视频场景切换的判定更加准确,本发明判断视频场景切换方法的优选实现方式包括下述步骤:
设当前帧中目标对象的个数为M,某一目标对象所包含的像素点总个数为N,PY(x,y)为此目标对象中的某一位置像素点的亮度值,PY'(x,y)为上一帧图像中同一坐标处像素点的亮度值,当|PY(x,y)-PY'(x,y)|<Threshold时计数器的计数值加一;
计算完当前帧中所有目标对象所包含的像素点与上一帧图像相同位置像素点的亮度差后,代入公式其中counter为计数器的计数值;
当Scene_change的值大于设定值时判定视频场景发生了切换,否则判定当前帧图像与上一帧图像是连续场景。
为了简化算法,本发明判断视频场景切换方法还包括下述步骤:对源图像分别进行横向和纵向的下采样;对下采样后得到的结果进行边缘检测和目标识别,得到目标图像。下采样优选采用1/2下采样。
现有深度图优化方法的一个缺点是没有对目标对象边缘处进行很好的处理,还会存在一些边缘模糊或重影的现象,以及深度图边缘与源图像边缘不能完全匹配的情况。为了解决这一问题,本发明还提供一种深度图边缘优化方法,该方法至少包括下述步骤:
对深度图进行边缘检测,得到边缘图,记录所有边缘点的坐标(xd,yd);
输入待处理视频帧序列,对源图像分别进行横向和纵向的1/2下采样,对所得结果进行边缘检测和目标识别,得到目标图像;对目标图像进行1/3下采样,记录新得到的边缘图像,位于目标边界交点的坐标记录为(xe,ye);
对(xd,yd)和(xe,ye)进行逐行逐点比较,如果(xd,yd)与(xe,ye)相同则继续比对下一点;否则,以(xe,ye)为基准,调整(xd,yd)及其邻域的深度值;
对得到的深度图进行平滑滤波,生成最终的深度图。
对深度图进行边缘检测的具体方法不限。为了达到良好的效果,边缘检测优选使用的是Canny算子。
在本发明深度图边缘优化方法中,边缘图中各点的具体表征方法不限,优选方式为:边缘点的值为1,其余点的值为0。
在本发明深度图边缘优化方法中,(xd,yd)及其周围相邻像素点的深度值的具体调整方法如下:
对(xd,yd)和(xe,ye)进行逐行逐点比较,如果(xd,yd)与(xe,ye)相同则继续比对下一点;如果两坐标不相同,说明深度图边缘与源图像边缘不匹配,需要进行校准并对其相邻像素点深度值进行调整。调整分为两部分进行:水平方向的深度值调整和垂直方向的深度值调整,两种调整方法是一样的,在此以水平方向的调整为例进行说明。
在水平方向上,若xd<xe,说明深度图的边界点(xd,yd)偏移到源图像的边界点(xe,ye)左边,需要将深度图边界点(xd,yd)处的深度值右移至源图像的边界点(xe,ye)的坐标处,同时将深度图中此边界点(xd,yd)至坐标(xe-1,ye)处的深度值赋值为(xd-1,yd)处的深度值。
垂直方向上的不匹配边缘点的相邻像素的深度值调整同上。
优选实施例一:将2D的电视图像作为源图像。假定该2D电视图像的一帧画面中某一中心点P的坐标为(x,y),如图2所示,其周围相邻像素点的坐标分别为(x-1,y),(x+1,y),(x,y-1),(x,y+1),计算该像素点与其上下左右相邻像素点的相关程度。
将中心点像素值与其相邻像素点分别相减,并取其绝对值。如果某一方向上相邻像素差值的绝对值小于设定的相关阈值,则认定此两点是相关的,将目标对象表中(x,y)位置的值加0x01;否则,不做处理。依次计算其余的相邻像素点后,此时目标对象表中(x,y)位置的值表征了源视频图像中此坐标的点与其相邻像素点的相关程度。计算结果如表1所示,目标对象表中的值为0x04的代表目标内部,0x03的代表目标边缘,0x02的代表目标边界交点。
图1 目标对象表
0x02 |
0x03 |
0x03 |
0x03 |
0x02 |
0x03 |
0x04 |
0x04 |
0x04 |
0x03 |
0x03 |
0x04 |
0x04 |
0x04 |
0x03 |
0x03 |
0x04 |
0x04 |
0x04 |
0x03 |
0x02 |
0x03 |
0x03 |
0x03 |
0x02 |
完成边缘检测和目标识别后,根据目标图像的亮度变化程度进行判断,发现视频场景未发生切换。
依据目标图像和电视刷新频率来计算该一帧画面中P点的深度值,其中电视刷新频率为60HZ,视频图像源的尺寸为1920×1080。需要处理的图像宽为W,高度为H,则认为连续两帧中相同目标的最大运动幅度在水平和竖直方向上分别不超Width=W/60=32,Height=H/60=18。
假定P点的亮度值为PY(x,y),为使深度图的提取更加准确,假定其运动的像素点个数为四舍五入后的Width/2,Height/2。即P点在水平方向上运动的下一坐标点的亮度值为PY(x+Width/2,y),其垂直方向上运动的下一坐标点的亮度值为PY(x,y+Height/2),则得到P点在空间上的一个亮度值变化:d_space=|PY(x+Width/2,y)-PY(x,y)|+|PY(x,y+Height/2)-PY(x,y)|。
然后计算P点亮度值PY(x,y)在时间跨度上的变化:计上一帧P点同一坐标处的亮度值为PY'(x,y),那么P点在时间跨度上的亮度值变化为:d_time=|PY(x,y)-PY'(x,y)|。
由P点在时间空间上经过1/f秒后亮度值的变化计算得到一个灰度级,以此来表示此点的深度值,计算公式如下:
计算得到depth的计数为175,根据所得深度值计算并提取深度图,输出深度图结果。
本优选实施例中以电视刷新频率为元素计算并提取深度图,使计算得到的深度图更加准确,让最终渲染出的3D视频图像效果更加理想。
优选实施例二:当优选实施例一中完成边缘检测和目标识别后发现视频场景发生了切换,连续的运动终止了,需要对累加的深度值进行清零,否则就会发生错误。P点经由上一步计算得到的深度值计为depth,之前累加的深度值计为Acountdepth,新的深度值为Acount'depth,即在进行深度值累加的过程中发现Acountdepth+depth≥255,为了避免造成深度值的流失累加公式使用 得到累加值为235。
本优选实施例中针对视频场景发生切换这一状况给出了后续计算的应对方法,充分地考虑到视频场景切换对深度图计算与提取所造成的影响,令所得深度图更加地准确。
优选实施例三:如图3所示,电视刷新频率为60HZ,视频图像源的尺寸为1920×1080。为了简化计算得复杂程度,对2D电视图像源图像先进行1/2下采样,然后再作边缘检测和目标识别的工作。在深度图的提取过程中对图像,为进一步减少计算量并且减少Width,Height的像素点的跨度、缩小深度图的计算误差,对经过1/2下采样的图像再经过1/3下采样,对得到的320×180图像进行深度图的提取。需要处理的图像宽为W,高度为H,则认为连续两帧中相同目标的最大运动幅度在水平和竖直方向上分别不超Width=W/60=5.3,Height=H/60=3。
如图4所示,假定P点的亮度值为PY(x,y),为使深度图的提取更加准确,假定其运动的像素点个数为四舍五入后的Width/2,Height/2。即P点在水平方向上运动的下一坐标点的亮度值为PY(x+Width/2,y),其垂直方向上运动的下一坐标点的亮度值为则得到P点在空间上的一个亮度值变化:
然后计算P点亮度值PY(x,y)在时间跨度上的变化:计上一帧P点同一坐标处的亮度值为PY'(x,y),那么P点在时间跨度上的亮度值变化为:d_time=|PY(x,y)-PY'(x,y)|。
由P点在时间空间上经过1/f秒后亮度值的变化计算得到一个灰度级,以此来表示此点的深度值,计算公式如下:
计算得到depth的计数为268,此时depth计数255,根据所得深度值计算并提取深度图,输出深度图结果。
优选实施例四:利用对目标对象亮度变化的变化对视频场景是否切换进行判断。设当前帧中目标对象的个数为M,某目标所包含的像素点总个数为N,PY(x,y)为此目标中的某一位置像素点的亮度值,PY'(x,y)为上一帧同一坐标处像素点的像素值。
若|PY(x,y)-PY'(x,y)|<Threshold,计数器counter就自动加一。计算完当前帧中所有目标对象包含的像素点与下一帧图像相同位置像素点的亮度差后,判别相邻两帧的视频场景是否发生切换,计算公式如下:
若计算出的Scene_change的值大于30%,表示前后两帧相同位置的像素点的亮度值不相关的个数超过30%,认定视频场景发生了切换。否则,认定当前帧与上一帧是相似的,仍是连续场景。
本发明判断视频场景切换的方法利用目标对象的亮度值作判断,有别于现有通过像素值来判断视频场景切换的方法。优点主要为:1.使用目标对象亮度值而非整个源图像的亮度值,减少了计算量;2.计算的是Y分量,而非YUV三个通道的分量和,降低算法复杂程度。令判断更加准确,使用更加方便。
优选实施例五:通过试验可知,同一目标对象在深度图和源图像中的空间位置是完全相同的,但不匹配的位置主要存在于目标对象的边缘。由于深度图源图像边缘不能够完全匹配,造成了视频图像2D转3D效果上的失真,影响观看质量。可以通过比对深度图和源图像中目标对象的边缘信息来对深度图像的边缘深度值进行修复,如图5所示。
首先,对深度图D_depth使用Canny算子进行边缘检测,得到其边缘图A。边缘图是一个二值图像,边缘点的值为1,其余点的值为0。记录下所有值为1的点的坐标(xd,yd)。
其次,步骤一中计算所用的图像为源图像的1/2下采样图像,对步骤一中计算得到的边缘图像再进行1/3下采样以对应深度图为源图像1/6下采样图像。记录得到的边缘图像即目标对象表中值为0x02的点的坐标(xe,ye)。
然后,逐行逐点比较。在边缘图像的(xe,ye)处寻找深度图中此坐标处是否存在(xd,yd):若存在,则边缘匹配,继续比对下一点;否则以(xe,ye)为基准,调整(xd,yd)及其周围相邻像素点的深度值。对(xd,yd)和(xe,ye)进行逐行逐点比较,如果(xd,yd)与(xe,ye)相同则继续比对下一点;如果两坐标不相同,说明深度图边缘与源图像边缘不匹配,需要进行校准并对其相邻像素点深度值进行调整。调整分为两部分进行:水平方向的深度值调整和垂直方向的深度值调整,两种调整方法是一样的,在此以水平方向的调整为例进行说明。
在水平方向上,若xd<xe,说明深度图的边界点(xd,yd)偏移到源图像的边界点(xe,ye)左边,需要将深度图边界点(xd,yd)处的深度值右移至源图像的边界点(xe,ye)的坐标处,同时将深度图中此边界点(xd,yd)至坐标(xe-1,ye)处的深度值赋值为(xd-1,yd)处的深度值。
垂直方向上的不匹配边缘点的相邻像素的深度值调整同上。
以上,仅为本发明的较佳实施例,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求所界定的保护范围为准。