发明内容
针对以上的不足,本发明提供了一种图像图处理效果更好,适用于多种输出方式的基于图像边缘信息的2D转3D的方法,它包括:1)对原始2D图像进行颜色空间转换,提取其亮度分量;2)对亮度图像进 行边缘检测,提取图像的边缘信息;3)采取划分条带的方法产生渐进深度图;4)根据深度图,将原图像的每个像素从原来的位置映射到新的位置,得到一个新图像;5)将新图像和原图像分别作为人眼的左右眼的图像。
所述步骤1)和步骤2)之间还包括步骤a)对亮度图像进行去噪处理。
所述步骤a)采用高斯滤波器对亮度图像进行去噪处理。
所述步骤a)高斯滤波器为各向同性的二维高斯滤波器。
所述步骤2)边缘检测采用Canny边缘检测方法,它包括:
21)梯度计算:用一阶偏导的有限差分来计算图像I(x,y)的梯度幅值A(x,y)和梯度方向D(x,y),
其中,x和y分别是I(x,y)的水平坐标和垂直坐标,fx(x,y)是I(x,y)在x方向的偏导数,fy(x,y)是I(x,y)在y方向的偏导数;
22)非极大值抑制:分别对各个方向进行非极大值抑制,若像素点(x,y)的梯度幅值A(x,y)不小于梯度方向上两个相邻像素点的梯度幅值,则该像素点为可能的边缘点,否则,该像素点不是边缘点;
23)双门限检测:使用累计直方图的方法计算两个阈值,分别为低阈值和高阈值,对经过上述处理后的图像进行双阈值化处理,使用低阈值,可以得到一个低阈值检测结果,使用高阈值,可以得到一个高阈值 检测结果,在高阈值结果中,连接边缘轮廓,当连接到端点时,则在低阈值结果中寻找邻域的弱边缘点,从而弥补边缘间隙,直到找不到与它相邻接的弱边缘点为止;
24)输出边缘图像。
所述步骤3)采取划分条带的方法产生渐进深度图的过程包括:
b1)采用垂直方向对边缘图像划分条带;
b2)分别统计各个条带包含边缘的数量;
b3)首先,对于第一个条带赋予一个初始的深度值,然后,从第二个条带开始,将当前条带的边缘数量与相邻上一条带的边缘数量进行比较,如果当前条带的边缘数量较多,则当前条带的深度值是上一条带的深度值减去一个合理值Δ,如果当前条带的边缘数量较少,则当前条带的深度值是上一条带的深度值加上一个合理值Δ,其中Δ为设定的一个固定值;
b4)形成垂直方向上渐变的深度图。
所述步骤3)采取划分条带的方法产生渐进深度图的过程包括:
c1)采用水平方向对边缘图像划分条带;
c2)分别统计各个条带包含边缘的数量;
c3)首先,对于第一个条带赋予一个初始的深度值,然后,从第二个条带开始,将当前条带的边缘数量与相邻上一条带的边缘数量进行比较,如果当前条带的边缘数量较多,则当前条带的深度值是上一条带的深度值减去一个合理值Δ,如果当前条带的边缘数量较少,则当前条带的深度值是上一条带的深度值加上一个合理值Δ,其中Δ,为设定的一个固定值;
c4)形成水平方向上渐变的深度图。
所述步骤3)采取划分条带的方法产生渐进深度图的过程包括:
d1)采用垂直方向对边缘图像划分条带;
d2)分别统计各个条带包含边缘的数量;
d3)首先,对于第一个条带赋予一个初始的深度值,然后,从第二个条带开始,将当前条带的边缘数量与相邻上一条带的边缘数量进行比较,如果当前条带的边缘数量较多,则当前条带的深度值是上一条带的深度值减去一个合理值Δ,如果当前条带的边缘数量较少,则当前条带的深度值是上一条带的深度值加上一个合理值Δ,其中Δ为设定的一个固定值;
d4)形成垂直方向上渐变的深度图;
d5)采用水平方向对边缘图像划分条带;
d6)分别统计各个条带包含边缘的数量;
d7)首先,对于第一个条带赋予一个初始的深度值,然后,从第二个条带开始,将当前条带的边缘数量与相邻上一条带的边缘数量进行比较,如果当前条带的边缘数量较多,则当前条带的深度值是上一条带的深度值减去一个合理值Δ,如果当前条带的边缘数量较少,则当前条带的深度值是上一条带的深度值加上一个合理值Δ,其中Δ,为设定的一个固定值;
d8)形成水平方向上渐变的深度图;
d9)对垂直方向上的深度图和水平方向上的深度图进行加权平均处理,以形成总的深度图。
本发明的有益效果:本发明只需要单图像即可以产生左右眼图像, 从而合成3D图像,相比需要多张参考图像输入的传统2D转3D方法,该发明降低了成本和代价;本发明可以全硬件实现,满足实时高清的3D显示;本发明利用了图像的边缘来获得细节信息,并从细节的丰富程度去估计景物的空间距离,可适用于绝大部分的图像;由于本发明产生的深度图在垂直方向和水平方向都是渐变式的,所以观众在观看3D影像的时候一般不会感到不适感,相比传统的2D转3D方法会带来晕眩,眼睛肿胀等不适感,有明显的优势;本发明并不依赖于输出方式,适用于现在主流的3D输出方式,如主动快门式、色分式和偏振光式。
具体实施方式
下面结合附图对本发明进行进一步阐述。
如图1和图2所示,本发明基于图像边缘信息的2D转3D的方法流程包括:
1)对原始2D图像进行颜色空间转换,从RGB空间转换为YUV空间,提取出亮度分量供后续处理。从RGB空间转换为YUV空间,采用以下公式进行:
Y=0.299R+0.587G+0.114B
U=-0.1687R-0.3313G+0.5B+128
V=0.5R-0.4187G-0.0813B+128
2)对亮度图像进行去噪处理:由于图像在获取和传输的过程中,不 可避免地会受到噪声影响,为了后续有效的处理,有必要对图像去噪,而高斯滤波器是广泛使用的去噪滤波器。由于噪声一般集中在高频,而二维高斯滤波器具有低通特性,可使图像变得平滑,从而抑制噪声,在这里,本发明采用的是各向同性的二维高斯滤波器,标准差σ为2,模板大小为7,模板系数矩阵为:
h=[1,2,3,4,3,2,1;
2,4,6,7,6,4,2;
3,6,9,11,9,6,3;
4,7,11,12,11,7,4;
3,6,9,11,9,6,3;
2,4,6,7,6,4,2;
1,2,3,4,3,2,1]
采用以上模板作为卷积核,与亮度图像进行卷积运算,遍历图像,则可以得到高斯平滑后的图像。
3)对亮度图像进行边缘检测,提取图像的边缘信息:经过高斯滤波后,本发明采用Canny算子提取图像的边缘信息。图像的边缘定义为像素点灰度值突变的地方,边缘点对应于一阶微分幅度的极大值点,也对应于二阶微分的零交叉点。Canny算子在边缘检测方面获得了良好的效果,对噪声不敏感,很快就成为了评价其他边缘检测方法的标准准则。
采用Canny算子提取图像的边缘信息,包括梯度计算、非极大值抑制、双门限检测和输出边缘图像等步骤:
31)梯度计算
用一阶偏导的有限差分来计算平滑后的图像I(x,y)的梯度幅值A(x,y) 和梯度方向D(x,y):
其中,x和y分别是I(x,y)的水平坐标和垂直坐标,fx(x,y)是I(x,y)在x方向的偏导数,fx(x,y)是I(x,y)在y方向的偏导数。
32)非极大值抑制
分别对各个方向进行非极大值抑制,若像素点(x,y)的梯度幅值A(x,y)不小于梯度方向上两个相邻像素点的梯度幅值,则该像素点为可能的边缘点,否则,该像素点不是边缘点。
33)双门限检测
使用累计直方图的方法计算两个阈值,分别为低阈值和高阈值,对经过上述处理后的图像进行双阈值化处理。使用低阈值,可以得到一个低阈值检测结果;使用高阈值,可以得到一个高阈值检测结果。在高阈值结果中,连接边缘轮廓,当连接到端点时,则在低阈值结果中寻找邻域的弱边缘点,从而弥补边缘间隙,直到找不到与它相邻接的弱边缘点为止。
34)输出边缘图像
经过以上处理后,可输出Canny算子检测到的边缘图像。
4)采取划分条带的方法产生渐进深度图:当相邻像素点的深度值差异较大时,渲染出的3D图像会包含很多的空洞,所以,为了避免这种情况,应使相邻像素点的深度值具有一致性,在这里,采取了划分条带的 方法去保持相邻像素点的深度值具有一致性。
边缘往往代表的是图像的细节信息,而在图像中,前景一般是细节信息比较丰富的区域,而背景一般是细节信息比较缺乏的区域。(在这里所说的前景,是指图像中的主体部分;而所说的背景,则是图像中除主体外的其他区域。)通过将图像在垂直方向和水平方向去划分条带,然后统计条带的边缘数量,则可一定程度上判断该条带在垂直方向和水平方向的空间位置,并在上一个条带的基础上,得到定量的深度值。而在3D图像中,一般零视差面定义为左右眼图像的重合部分所处的一个平面,偏离这个平面的距离越远,则视差越大。所以,在这里定义的深度值越大,则认为偏离零视差面的距离越远,所处的空间位置越靠后。
本发明可以采用垂直划分条带的方法产生垂直方向上渐进深度图;也可以采用水平划分条带的方法产生水平方向上的渐进深度图;还可以先产生垂直方向上的深度图和水平方向上的深度图,再对上述对垂直方向上的深度图和水平方向上的深度图进行加权平均处理,以形成总的深度图。
垂直方向上渐进深度图的形成过程为:1)在垂直方向对边缘图像划分条带。2)分别统计各个条带包含边缘的数量。3)首先,对于第一个条带赋予一个初始的深度值;然后,从第二个条带开始,将当前条带的边缘数量与相邻上一条带的边缘数量进行比较,如果当前条带的边缘数量较多,则当前条带的深度值是上一条带的深度值减去一个合理值Δ(如1);如果当前条带的边缘数量较少,则当前条带的深度值是上一条带的深度值加上一个合理值Δ。以上所述可以用如下式子表示:
其中,depthc是当前条带的深度值,depthl是上一条带的深度值,Δ是一个合理值,countc是当前条带的边缘数量,countl是上一条带的边缘数量。
经过上述的处理,可以得到一张垂直方向上渐变的深度图。
水平方向上渐进深度图的形成过程为:1)在水平方向对边缘图像划分条带。2)分别统计各个条带包含边缘的数量。3)首先,对第一个条带赋予一个初始的深度值;然后,从第二个条带开始,将当前条带的边缘数量与相邻上一条带的边缘数量进行比较,如果当前条带的边缘数量较多,则当前条带的深度值是上一条带的深度值减去一个合理值Δ(如1)如果当前条带的边缘数量较少,则当前条带的深度值是上一条带的深度值加上一个合理值Δ。以上所述可以用如下式子表示:
其中,depthc是当前条带的深度值,depthl是上一条带的深度值,Δ是一个合理值,countc是当前条带的边缘数量,countl是上一条带的边缘数量。
经过上述处理,可以得到一张水平方向上渐变的深度图。
总的深度图是垂直方向上的深度图和水平方向上的深度图的加权平均,可用下式表示:
depth=λdepthy+(1-λ)depthh(0≤λ≤1)
其中,depth是总深度值,depthv是垂直方向的深度值,depthh是水平方向的深度值,λ是加权系数。
5)根据深度图,将原图像的每个像素从原来的位置映射到新的位置, 得到一个新图像:
根据垂直方向上的深度图、水平方向上的深度图或者总深度图(本发明仅以总深度图作说明,其它雷同),则可将原图像的每个像素从原来的位置映射到新的位置,假设像素原来处于x位置上,该像素对应的深度是depth,,则新的位置x′可用下式计算:
x′=x-depth (左移时)
x′=x+depth (右移时)
6)将新图像和原图像分别作为人眼的左右眼的图像:当新图像是左眼图像时,原图像则是右眼图像;当新图像是右眼图像时,原图像则是左眼图像。根据输出方式去选择适当的合成方式,左右眼图像合成后输出3D图像。
以上所述仅为本发明的较佳实施方式,本发明并不局限于上述实施方式,在实施过程中可能存在局部微小的结构改动,如果对本发明的各种改动或变型不脱离本发明的精神和范围,且属于本发明的权利要求和等同技术范围之内,则本发明也意图包含这些改动和变型。