一种立体图像重定位方法
技术领域
本发明涉及一种图像信号的处理方法,尤其是涉及一种立体图像重定位方法。
背景技术
随着立体显示技术的快速发展,各种具有不同立体显示功能的终端设备也广泛出现,但由于立体显示终端种类繁多,宽/高比规格不一,因此若将宽/高比一定的立体图像放在不同的立体显示终端上显示,则必须先对立体图像的尺寸进行调整,以达到立体显示的效果。传统的图像缩放方法是通过裁剪或者是按固定比例进行缩放,这样做可能会导致图像中的内容减少或者导致显著物体形变。
对于立体图像而言,以往采用传统的缝隙裁剪方法直接沿水平或垂直方向拉伸或缩小,然而这种方法存在以下问题:一方面,缝隙裁剪会在视觉重要区域引起不连续的重影;另一方面,由于视差保持的局限,因此这种方法难以进行深度调整,从而会引起立体深度感发生变化,严重时会导致视觉不舒适。因此,如何采用传统的缝隙裁剪的框架对立体图像的左视点图像和右视点图像进行缩放以减少图像形变;如何保证缩放后的左视点图像与右视点图像的视差/深度分布的一致性,从而降低视觉不舒适、增强深度感,是在对立体图像进行重定位过程中需要研究解决的问题。
发明内容
本发明所要解决的技术问题是提供一种立体图像重定位方法,其符合显著语义特征,且能够有效地调整立体图像的尺寸大小。
本发明解决上述技术问题所采用的技术方案为:1、一种立体图像重定位方法,其特征在于包括以下步骤:
步骤①:将待处理的宽度为W且高度为H的立体图像的左视点图像、右视点图像及左视差图像对应记为{L(x,y)}、{R(x,y)}及{dL(x,y)};其中,1≤x≤W,1≤y≤H,L(x,y)表示{L(x,y)}中坐标位置为(x,y)的像素点的像素值,R(x,y)表示{R(x,y)}中坐标位置为(x,y)的像素点的像素值,dL(x,y)表示{dL(x,y)}中坐标位置为(x,y)的像素点的像素值;
步骤②:计算{L(x,y)}中的每个像素点的密度能量值,将{L(x,y)}中坐标位置为(x,y)的像素点的密度能量值记为Eintensity(x,y,x*);并根据{dL(x,y)}计算{L(x,y)}中的每个像素点的显著能量值,将{L(x,y)}中坐标位置为(x,y)的像素点的显著能量值记为Estereo(x,y,x*);其中,x*表示坐标位置(x,y)的横坐标位置或与坐标位置(x,y)水平相邻的横坐标位置,x*∈{x-1,x,x+1};
步骤③:根据{L(x,y)}中的每个像素点的密度能量值和显著能量值,计算{L(x,y)}中的每个像素点的累计能量值,将{L(x,y)}中坐标位置为(x,y)的像素点的累计能量值记为M(x,y);然后根据{L(x,y)}中的每个像素点的累计能量值,并采用动态规划方法,找出{L(x,y)}的Ns条垂直缝隙,将{L(x,y)}的第i'条垂直缝隙记为再根据{dL(x,y)}和{L(x,y)}的Ns条垂直缝隙,找出{R(x,y)}的Ns条垂直缝隙,将{R(x,y)}的第i'条垂直缝隙记为其中,Ns>1,1≤i'≤Ns,表示在纵坐标位置为y时的横坐标位置,表示在纵坐标位置为y时的横坐标位置;
步骤④:为{L(x,y)}和{R(x,y)}中的每个像素点分配一个缝隙标记符号,将{L(x,y)}中坐标位置为(x,y)的像素点的缝隙标记符号记为IDL(x,y),如果坐标位置(x,y)属于{L(x,y)}的第i'条垂直缝隙,则IDL(x,y)=i',否则,IDL(x,y)=x1+Ns;将{R(x,y)}中坐标位置为(x,y)的像素点的缝隙标记符号记为IDR(x,y),如果坐标位置(x,y)属于{R(x,y)}的第i'条垂直缝隙,则IDR(x,y)=i',否则,IDR(x,y)=W-x2+Ns+1;其中,x1表示{L(x,y)}中坐标位置为(x,y)的像素点在将{L(x,y)}中所有落在{L(x,y)}的Ns条垂直缝隙内的像素点删除后得到的重定位图像中对应的坐标位置为(x1,y)的像素点的横坐标,1≤x1≤W-Ns,x2表示{R(x,y)}中坐标位置为(x,y)的像素点在将{R(x,y)}中所有落在{R(x,y)}的Ns条垂直缝隙内的像素点删除后得到的重定位图像中对应的坐标位置为(x2,y)的像素点的横坐标,1≤x2≤W-Ns;
步骤⑤:根据{L(x,y)}中的每个像素点的缝隙标记符号,计算{L(x,y)}中的所有具有相同缝隙标记符号的像素点的重要性能量值,将{L(x,y)}中的所有具有缝隙标记符号为j的像素点的重要性能量值记为同样,根据{R(x,y)}中的每个像素点的缝隙标记符号,计算{R(x,y)}中的所有具有相同缝隙标记符号的像素点的重要性能量值,将{R(x,y)}中的所有具有缝隙标记符号为j的像素点的重要性能量值记为其中,1≤j≤W;
步骤⑥:计算{dL(x,y)}经调整后的左视差图,记为其中,表示中坐标位置为(x,y)的像素点的像素值;
步骤⑦:采用尺度不变特征转换提取出{L(x,y)}中的所有特征点,将{L(x,y)}中的第k个特征点记为 然后根据{dL(x,y)},获取{R(x,y)}中与{L(x,y)}中的每个特征点匹配的特征点,将{R(x,y)}中与匹配的特征点记为 其中,1≤k≤Q,Q表示{L(x,y)}中的特征点的总个数,表示的横坐标位置,表示的纵坐标位置,表示的横坐标位置,表示的纵坐标位置,表示{dL(x,y)}中坐标位置为的像素点的像素值;
步骤⑧:计算{L(x,y)}中的所有具有相同缝隙标记符号的像素点的比例因子,将{L(x,y)}中的所有具有缝隙标记符号为j的像素点的比例因子记为同样,计算{R(x,y)}中的所有具有相同缝隙标记符号的像素点的比例因子,将{R(x,y)}中的所有具有缝隙标记符号为j的像素点的比例因子记为和通过求解min(ESP+λ×EDC)得到,min(ESP+λ×EDC)满足条件其中,min()为取最小值函数,符号“||”为取绝对值符号,λ为加权参数, 表示由和组成的特征点组,Ω表示{L(x,y)}中的所有特征点和{R(x,y)}中的所有特征点构成的集合,表示中坐标位置为的像素点的像素值,W'表示重定位后的立体图像的宽度,δ为阈值;
步骤⑨:根据{L(x,y)}中的所有具有相同缝隙标记符号的像素点的比例因子,对{L(x,y)}进行重定位操作,获得重定位后的左视点图像,记为同样,根据{R(x,y)}中的所有具有相同缝隙标记符号的像素点的比例因子,对{R(x,y)}进行重定位操作,获得重定位后的右视点图像,记为然后将和构成重定位后的立体图像;其中,1≤x'≤W',W'表示重定位后的立体图像的宽度,表示中坐标位置为(x',y)的像素点的像素值,表示中坐标位置为(x',y)的像素点的像素值。
所述的步骤②中,其中,x*表示坐标位置(x,y)的横坐标位置或与坐标位置(x,y)水平相邻的横坐标位置,x*∈{x-1,x,x+1},表示{L(x,y)}中坐标位置为(x,y)的像素点的水平密度能量值, 表示{L(x,y)}中坐标位置为(x,y)的像素点的垂直密度能量值,符号“||”为取绝对值符号,如果x-1≥1,则L(x-1,y)表示{L(x,y)}中坐标位置为(x-1,y)的像素点的像素值;如果x-1<1,则令L(x-1,y)=L(1,y),L(1,y)表示{L(x,y)}中坐标位置为(1,y)的像素点的像素值;如果x+1≤W,则L(x+1,y)表示{L(x,y)}中坐标位置为(x+1,y)的像素点的像素值;如果x+1>W,则令L(x+1,y)=L(W,y),L(W,y)表示{L(x,y)}中坐标位置为(W,y)的像素点的像素值;如果k≥1且y-1≥1,则L(k,y-1)表示{L(x,y)}中坐标位置为(k,y-1)的像素点的像素值;如果k≥1且y-1<1,则令L(k,y-1)=L(k,1),L(k,1)表示{L(x,y)}中坐标位置为(k,1)的像素点的像素值;如果k<1且y-1≥1,则令L(k,y-1)=L(1,y-1),L(1,y-1)表示{L(x,y)}中坐标位置为(1,y-1)的像素点的像素值;如果k<1且y-1<1,则令L(k,y-1)=L(1,1),L(1,1)表示{L(x,y)}中坐标位置为(1,1)的像素点的像素值;如果k+1≤W,则L(k+1,y)表示{L(x,y)}中坐标位置为(k+1,y)的像素点的像素值;如果k+1>W,则令L(k+1,y)=L(W,y),L(W,y)表示{L(x,y)}中坐标位置为(W,y)的像素点的像素值;如果y-1≥1,则L(k-1,y-1)表示{L(x,y)}中坐标位置为(k-1,y-1)的像素点的像素值;如果y-1<1,则令L(k-1,y-1)=L(k-1,1),L(k-1,1)表示{L(x,y)}中坐标位置为(k-1,1)的像素点的像素值;如果k≤W,则L(k,y)表示{L(x,y)}中坐标位置为(k,y)的像素点的像素值;如果k>W,则令L(k,y)=L(W,y)。
所述的步骤②中的Estereo(x,y,x*)的计算过程为:
步骤②_1:计算{L(x,y)}中坐标位置为(x,y)的像素点的深度能量值、归一化深度值和一致性能量值,对应记为Eenergy(x,y,x*)、Edepth(x,y)和Ecoherence(x,y),Ecoherence(x,y)=|L(x,y)-R(x+dL(x,y),y)|;其中,表示{L(x,y)}中坐标位置为(x,y)的像素点的水平深度能量值, 表示{L(x,y)}中坐标位置为(x,y)的像素点的垂直深度能量值,符号“||”为取绝对值符号,如果x-1≥1,则dL(x-1,y)表示{dL(x,y)}中坐标位置为(x-1,y)的像素点的像素值;如果x-1<1,则令dL(x-1,y)=dL(1,y),dL(1,y)表示{dL(x,y)}中坐标位置为(1,y)的像素点的像素值;如果x+1≤W,则dL(x+1,y)表示{dL(x,y)}中坐标位置为(x+1,y)的像素点的像素值;如果x+1>W,则令dL(x+1,y)=dL(W,y),dL(W,y)表示{dL(x,y)}中坐标位置为(W,y)的像素点的像素值;如果k≥1且y-1≥1,则dL(k,y-1)表示{dL(x,y)}中坐标位置为(k,y-1)的像素点的像素值;如果k≥1且y-1<1,则令dL(k,y-1)=dL(k,1),dL(k,1)表示{dL(x,y)}中坐标位置为(k,1)的像素点的像素值;如果k<1且y-1≥1,则令dL(k,y-1)=dL(1,y-1),dL(1,y-1)表示{dL(x,y)}中坐标位置为(1,y-1)的像素点的像素值;如果k<1且y-1<1,则令dL(k,y-1)=dL(1,1),dL(1,1)表示{dL(x,y)}中坐标位置为(1,1)的像素点的像素值;如果k+1≤W,则dL(k+1,y)表示{dL(x,y)}中坐标位置为(k+1,y)的像素点的像素值;如果k+1>W,则令dL(k+1,y)=dL(W,y),dL(W,y)表示{dL(x,y)}中坐标位置为(W,y)的像素点的像素值;如果y-1≥1,则dL(k-1,y-1)表示{dL(x,y)}中坐标位置为(k-1,y-1)的像素点的像素值;如果y-1<1,则令dL(k-1,y-1)=dL(k-1,1),dL(k-1,1)表示{dL(x,y)}中坐标位置为(k-1,1)的像素点的像素值;如果k≤W,则dL(k,y)表示{dL(x,y)}中坐标位置为(k,y)的像素点的像素值;如果k>W,则令dL(k,y)=dL(W,y),dmin表示{dL(x,y)}的最小视差值,dmax表示{dL(x,y)}的最大视差值,R(x+dL(x,y),y)表示{R(x,y)}中坐标位置为(x+dL(x,y),y)的像素点的亮度值;
步骤②_2:根据Eenergy(x,y,x*)、Edepth(x,y)和Ecoherence(x,y),计算Estereo(x,y,x*),Estereo(x,y,x*)=Eenergy(x,y,x*)+Edepth(x,y)+Ecoherence(x,y)。
所述的步骤③中,其中,min()为取最小值函数。
所述的步骤③中,{L(x,y)}的Ns条垂直缝隙的找出过程为:根据{L(x,y)}中的每个像素点的累计能量值,并采用动态规划方法找出{L(x,y)}中从y=1到y=H的Ns条成本最小的路径,将每条成本最小的路径作为{L(x,y)}的一条垂直缝隙;所述的步骤③中,其中,表示{dL(x,y)}中坐标位置为的像素点的像素值。
所述的步骤⑤中,的获取过程为:
步骤⑤_1a:采用基于图论的视觉显著模型提取出{L(x,y)}的显著图,记为{SML(x,y)};然后根据{SML(x,y)}和{dL(x,y)},获取{L(x,y)}的视觉显著图,记为{SL(x,y)},将{SL(x,y)}中坐标位置为(x,y)的像素点的像素值记为SL(x,y),其中,SML(x,y)表示{SML(x,y)}中坐标位置为(x,y)的像素点的像素值,表示SML(x,y)的权重,表示dL(x,y)的权重,
步骤⑤_2a:根据{dL(x,y)}中的每个像素点的像素值,判定{L(x,y)}中的每个像素点属于遮挡区域还是属于匹配区域,并确定{L(x,y)}中的每个像素点的掩膜值,对于{L(x,y)}中坐标位置为(x,y)的像素点,如果dL(x,y)=255,则判定{L(x,y)}中坐标位置为(x,y)的像素点属于遮挡区域,并确定{L(x,y)}中坐标位置为(x,y)的像素点的掩膜值MaskL(x,y)为0;如果dL(x,y)≠255,则判定{L(x,y)}中坐标位置为(x,y)的像素点属于匹配区域,并确定{L(x,y)}中坐标位置为(x,y)的像素点的掩膜值MaskL(x,y)为1;
步骤⑤_3a:根据{L(x,y)}中的每个像素点的缝隙标记符号和掩膜值,计算{L(x,y)}中的每个像素点的缝隙重要性,将{L(x,y)}中坐标位置为(x,y)的像素点的缝隙重要性记为
步骤⑤_4a:计算{L(x,y)}中的每个像素点的重要性能量值,将{L(x,y)}中坐标位置为(x,y)的像素点的重要性能量值记为IML(x,y),其中,α、β和γ均为加权参数;
步骤⑤_5a:计算
所述的步骤⑤中,的获取过程为:
步骤⑤_1b:采用基于图论的视觉显著模型提取出{R(x,y)}的显著图,记为{SMR(x,y)};然后根据{SMR(x,y)}和{dL(x,y)},获取{R(x,y)}的视觉显著图,记为{SR(x,y)},将{SR(x,y)}中坐标位置为(x,y)的像素点的像素值记为SR(x,y),其中,SMR(x,y)表示{SMR(x,y)}中坐标位置为(x,y)的像素点的像素值,表示SMR(x,y)的权重,表示dL(x,y)的权重,
步骤⑤_2b:根据{dL(x,y)}中的每个像素点的像素值,判定{R(x,y)}中的每个像素点属于遮挡区域还是属于匹配区域,并确定{R(x,y)}中的每个像素点的掩膜值,对于{R(x,y)}中坐标位置为(x,y)的像素点,如果dL(x,y)=255,则判定{R(x,y)}中坐标位置为(x,y)的像素点属于遮挡区域,并确定{R(x,y)}中坐标位置为(x,y)的像素点的掩膜值MaskR(x,y)为0;如果dL(x,y)≠255,则判定{R(x,y)}中坐标位置为(x,y)的像素点属于匹配区域,并确定{R(x,y)}中坐标位置为(x,y)的像素点的掩膜值MaskR(x,y)为1;
步骤⑤_3b:根据{R(x,y)}中的每个像素点的缝隙标记符号和掩膜值,计算{R(x,y)}中的每个像素点的缝隙重要性,将{R(x,y)}中坐标位置为(x,y)的像素点的缝隙重要性记为
步骤⑤_4b:计算{R(x,y)}中的每个像素点的重要性能量值,将{R(x,y)}中坐标位置为(x,y)的像素点的重要性能量值记为IMR(x,y),其中,α'、β'和γ'均为加权参数;
步骤⑤_5b:计算
所述的步骤⑥的具体过程为:
步骤⑥_1:根据{dL(x,y)},计算{L(x,y)}中的每个像素点在世界坐标系中的位置,将{L(x,y)}中坐标位置为(x,y)的像素点在世界坐标系中的位置记为(X,Y,Z),其中,e表示待处理的立体图像的左视点与右视点之间的水平基线距离,D表示待处理的立体图像的左视点和右视点与显示器之间的观看距离,Wd表示显示器的水平宽度,R表示显示器的水平分辨率;
步骤⑥_2:计算{L(x,y)}中的每个像素点的角视差,将{L(x,y)}中坐标位置为(x,y)的像素点的角视差记为DAD(x,y),其中,arccos()表示反余弦操作函数,
步骤⑥_3:计算{L(x,y)}中的每个像素点经调整后的角视差,将{L(x,y)}中坐标位置为(x,y)的像素点经调整后的角视差记为 其中,DF表示{L(x,y)}中的所有像素点的角视差中的最大值,DN表示{L(x,y)}中的所有像素点的角视差中的最小值;
步骤⑥_4:计算{L(x,y)}中的每个像素点经调整后的深度值,将{L(x,y)}中坐标位置为(x,y)的像素点经调整后的深度值记为通过求解得到;其中,
步骤⑥_5:获取将中坐标位置为(x,y)的像素点的像素值记为
所述的步骤⑨中,的获取过程为:
步骤⑨_1a:将{L(x,y)}中当前待处理的第p行定义为当前行,其中,p的初始值为1,1≤p≤H;
步骤⑨_2a:将当前行中待处理的第q列的像素点定义为当前像素点,并将中与当前行相同位置的一行中待处理的第q'列的像素点定义为当前重定位像素点,其中,q的初始值为1,1≤q≤W,q'的初始值为1,1≤q'≤W';
步骤⑨_3a:在当前行中搜索满足的最优列,将最优列的序号记为q*;然后计算当前重定位像素点的像素值,记为 其中,1≤q*≤W,表示{L(x,y)}中的所有具有缝隙标记符号为IDL(t,p)的像素点的比例因子,IDL(t,p)表示{L(x,y)}中坐标位置为(t,p)的像素点的缝隙标记符号,表示{L(x,y)}中的所有具有缝隙标记符号为IDL(q,p)的像素点的比例因子,IDL(q,p)表示{L(x,y)}中坐标位置为(q,p)的像素点的缝隙标记符号,L(q,p)表示{L(x,y)}中坐标位置为(q,p)的像素点的像素值,表示{L(x,y)}中的所有具有缝隙标记符号为IDL(q*,p)的像素点的比例因子,IDL(q*,p)表示{L(x,y)}中坐标位置为(q*,p)的像素点的缝隙标记符号,L(q*,p)表示{L(x,y)}中坐标位置为(q*,p)的像素点的像素值,L(t,p)表示{L(x,y)}中坐标位置为(t,p)的像素点的像素值;
步骤⑨_4a:令q=q*+1,q'=q'+1,重新确定当前像素点和当前重定位像素点,然后返回步骤⑨_3a继续执行,直至当前行中的所有像素点处理完毕;其中,q=q*+1和q'=q'+1中的“=”为赋值符号;
步骤⑨_5a:令p=p+1,重新确定当前行,然后返回步骤⑨_2a继续执行,直至{L(x,y)}中的所有行处理完毕,得到{L(x,y)}重定位后的左视点图像其中,p=p+1中的“=”为赋值符号;
所述的步骤⑨中,的获取过程为:
步骤⑨_1b:将{R(x,y)}中当前待处理的第p行定义为当前行,其中,p的初始值为1,1≤p≤H;
步骤⑨_2b:将当前行中待处理的第q列的像素点定义为当前像素点,并将中与当前行相同位置的一行中待处理的第q'列的像素点定义为当前重定位像素点,其中,q的初始值为1,1≤q≤W,q'的初始值为1,1≤q'≤W';
步骤⑨_3b:在当前行中搜索满足的最优列,将最优列的序号记为q*;然后计算当前重定位像素点的像素值,记为 其中,1≤q*≤W,表示{R(x,y)}中的所有具有缝隙标记符号为IDR(t,p)的像素点的比例因子,IDR(t,p)表示{R(x,y)}中坐标位置为(t,p)的像素点的缝隙标记符号,表示{R(x,y)}中的所有具有缝隙标记符号为IDR(q,p)的像素点的比例因子,IDR(q,p)表示{R(x,y)}中坐标位置为(q,p)的像素点的缝隙标记符号,R(q,p)表示{R(x,y)}中坐标位置为(q,p)的像素点的像素值,表示{R(x,y)}中的所有具有缝隙标记符号为IDR(q*,p)的像素点的比例因子,IDR(q*,p)表示{R(x,y)}中坐标位置为(q*,p)的像素点的缝隙标记符号,R(q*,p)表示{R(x,y)}中坐标位置为(q*,p)的像素点的像素值,R(t,p)表示{R(x,y)}中坐标位置为(t,p)的像素点的像素值;
步骤⑨_4b:令q=q*+1,q'=q'+1,重新确定当前像素点和当前重定位像素点,然后返回步骤⑨_3b继续执行,直至当前行中的所有像素点处理完毕;其中,q=q*+1和q'=q'+1中的“=”为赋值符号;
步骤⑨_5b:令p=p+1,重新确定当前行,然后返回步骤⑨_2b继续执行,直至{R(x,y)}中的所有行处理完毕,得到{R(x,y)}重定位后的左视点图像其中,p=p+1中的“=”为赋值符号。
与现有技术相比,本发明的优点在于:
1)本发明方法通过提取左视点图像中的每个像素点的密度能量值和显著能量值,找出左视点图像中的多条垂直缝隙,进而找出右视点图像中的多条垂直缝隙,再获取左视点图像和右视点图像各自中的所有具有相同缝隙标记符号的像素点的重要性能量值,通过这种方式使得获得的重定位后的立体图像能够较好地保留重要的显著语义信息。
2)本发明方法对左视点图像中的每个像素点的角视差进行调整,将经调整后的左视差图结合到左视点图像和右视点图像各自中的所有具有相同缝隙标记符号的像素点的比例因子的求取中,从而能够保证重定位后的立体图像的舒适性和深度感。
3)利用本发明方法能够有效地调整立体图像的尺寸大小。
附图说明
图1为本发明方法的总体实现框图;
图2a为“Image1”的原始立体图像的“红/绿”图;
图2b为“Image1”的重定位到原始立体图像的宽度60%后的“红/绿”图;
图3a为“Image2”的原始立体图像的“红/绿”图;
图3b为“Image2”的重定位到原始立体图像的宽度60%后的“红/绿”图;
图4a为“Image3”的原始立体图像的“红/绿”图;
图4b为“Image3”的重定位到原始立体图像的宽度60%后的“红/绿”图;
图5a为“Image4”的原始立体图像的“红/绿”图;
图5b为“Image4”的重定位到原始立体图像的宽度60%后的“红/绿”图。
具体实施方式
以下结合附图实施例对本发明作进一步详细描述。
本发明提出的一种立体图像重定位方法,其总体实现框图如图1所示,其包括以下步骤:
步骤①:将待处理的宽度为W且高度为H的立体图像的左视点图像、右视点图像及左视差图像对应记为{L(x,y)}、{R(x,y)}及{dL(x,y)};其中,1≤x≤W,1≤y≤H,L(x,y)表示{L(x,y)}中坐标位置为(x,y)的像素点的像素值,R(x,y)表示{R(x,y)}中坐标位置为(x,y)的像素点的像素值,dL(x,y)表示{dL(x,y)}中坐标位置为(x,y)的像素点的像素值。
步骤②:计算{L(x,y)}中的每个像素点的密度能量值,将{L(x,y)}中坐标位置为(x,y)的像素点的密度能量值记为Eintensity(x,y,x*);并根据{dL(x,y)}计算{L(x,y)}中的每个像素点的显著能量值,将{L(x,y)}中坐标位置为(x,y)的像素点的显著能量值记为Estereo(x,y,x*);其中,x*表示坐标位置(x,y)的横坐标位置或与坐标位置(x,y)水平相邻的横坐标位置,x*∈{x-1,x,x+1}。
在此具体实施例中,步骤②中,其中,x*表示坐标位置(x,y)的横坐标位置或与坐标位置(x,y)水平相邻的横坐标位置,x*∈{x-1,x,x+1},表示{L(x,y)}中坐标位置为(x,y)的像素点的水平密度能量值, 表示{L(x,y)}中坐标位置为(x,y)的像素点的垂直密度能量值,根据x*与坐标位置(x,y)的位置关系,有三种可能的取值,符号“||”为取绝对值符号,如果x-1≥1,则L(x-1,y)表示{L(x,y)}中坐标位置为(x-1,y)的像素点的像素值;如果x-1<1,则令L(x-1,y)=L(1,y),L(1,y)表示{L(x,y)}中坐标位置为(1,y)的像素点的像素值;如果x+1≤W,则L(x+1,y)表示{L(x,y)}中坐标位置为(x+1,y)的像素点的像素值;如果x+1>W,则令L(x+1,y)=L(W,y),L(W,y)表示{L(x,y)}中坐标位置为(W,y)的像素点的像素值;如果k≥1且y-1≥1,则L(k,y-1)表示{L(x,y)}中坐标位置为(k,y-1)的像素点的像素值;如果k≥1且y-1<1,则令L(k,y-1)=L(k,1),L(k,1)表示{L(x,y)}中坐标位置为(k,1)的像素点的像素值;如果k<1且y-1≥1,则令L(k,y-1)=L(1,y-1),L(1,y-1)表示{L(x,y)}中坐标位置为(1,y-1)的像素点的像素值;如果k<1且y-1<1,则令L(k,y-1)=L(1,1),L(1,1)表示{L(x,y)}中坐标位置为(1,1)的像素点的像素值;如果k+1≤W,则L(k+1,y)表示{L(x,y)}中坐标位置为(k+1,y)的像素点的像素值;如果k+1>W,则令L(k+1,y)=L(W,y),L(W,y)表示{L(x,y)}中坐标位置为(W,y)的像素点的像素值;如果y-1≥1,则L(k-1,y-1)表示{L(x,y)}中坐标位置为(k-1,y-1)的像素点的像素值;如果y-1<1,则令L(k-1,y-1)=L(k-1,1),L(k-1,1)表示{L(x,y)}中坐标位置为(k-1,1)的像素点的像素值;如果k≤W,则L(k,y)表示{L(x,y)}中坐标位置为(k,y)的像素点的像素值;如果k>W,则令L(k,y)=L(W,y)。
在此具体实施例中,步骤②中的Estereo(x,y,x*)的计算过程为:
步骤②_1:计算{L(x,y)}中坐标位置为(x,y)的像素点的深度能量值、归一化深度值和一致性能量值,对应记为Eenergy(x,y,x*)、Edepth(x,y)和Ecoherence(x,y),Ecoherence(x,y)=|L(x,y)-R(x+dL(x,y),y)|;其中,表示{L(x,y)}中坐标位置为(x,y)的像素点的水平深度能量值, 表示{L(x,y)}中坐标位置为(x,y)的像素点的垂直深度能量值,根据x*与坐标位置(x,y)的位置关系,有三种可能的取值,符号“||”为取绝对值符号,如果x-1≥1,则dL(x-1,y)表示{dL(x,y)}中坐标位置为(x-1,y)的像素点的像素值;如果x-1<1,则令dL(x-1,y)=dL(1,y),dL(1,y)表示{dL(x,y)}中坐标位置为(1,y)的像素点的像素值;如果x+1≤W,则dL(x+1,y)表示{dL(x,y)}中坐标位置为(x+1,y)的像素点的像素值;如果x+1>W,则令dL(x+1,y)=dL(W,y),dL(W,y)表示{dL(x,y)}中坐标位置为(W,y)的像素点的像素值;如果k≥1且y-1≥1,则dL(k,y-1)表示{dL(x,y)}中坐标位置为(k,y-1)的像素点的像素值;如果k≥1且y-1<1,则令dL(k,y-1)=dL(k,1),dL(k,1)表示{dL(x,y)}中坐标位置为(k,1)的像素点的像素值;如果k<1且y-1≥1,则令dL(k,y-1)=dL(1,y-1),dL(1,y-1)表示{dL(x,y)}中坐标位置为(1,y-1)的像素点的像素值;如果k<1且y-1<1,则令dL(k,y-1)=dL(1,1),dL(1,1)表示{dL(x,y)}中坐标位置为(1,1)的像素点的像素值;如果k+1≤W,则dL(k+1,y)表示{dL(x,y)}中坐标位置为(k+1,y)的像素点的像素值;如果k+1>W,则令dL(k+1,y)=dL(W,y),dL(W,y)表示{dL(x,y)}中坐标位置为(W,y)的像素点的像素值;如果y-1≥1,则dL(k-1,y-1)表示{dL(x,y)}中坐标位置为(k-1,y-1)的像素点的像素值;如果y-1<1,则令dL(k-1,y-1)=dL(k-1,1),dL(k-1,1)表示{dL(x,y)}中坐标位置为(k-1,1)的像素点的像素值;如果k≤W,则dL(k,y)表示{dL(x,y)}中坐标位置为(k,y)的像素点的像素值;如果k>W,则令dL(k,y)=dL(W,y),dmin表示{dL(x,y)}的最小视差值,dmax表示{dL(x,y)}的最大视差值,R(x+dL(x,y),y)表示{R(x,y)}中坐标位置为(x+dL(x,y),y)的像素点的亮度值。
步骤②_2:根据Eenergy(x,y,x*)、Edepth(x,y)和Ecoherence(x,y),计算Estereo(x,y,x*),Estereo(x,y,x*)=Eenergy(x,y,x*)+Edepth(x,y)+Ecoherence(x,y)。
步骤③:根据{L(x,y)}中的每个像素点的密度能量值和显著能量值,计算{L(x,y)}中的每个像素点的累计能量值,将{L(x,y)}中坐标位置为(x,y)的像素点的累计能量值记为M(x,y);然后根据{L(x,y)}中的每个像素点的累计能量值,并采用现有的动态规划方法,找出{L(x,y)}的Ns条垂直缝隙,将{L(x,y)}的第i'条垂直缝隙记为再根据{dL(x,y)}和{L(x,y)}的Ns条垂直缝隙,找出{R(x,y)}的Ns条垂直缝隙,将{R(x,y)}的第i'条垂直缝隙记为其中,Ns>1,在本实施例中Ns的具体值根据具体的测试立体图像确定,1≤i'≤Ns,表示在纵坐标位置为y时的横坐标位置,表示在纵坐标位置为y时的横坐标位置。
在此具体实施例中,步骤③中,其中,min()为取最小值函数。
在此具体实施例中,步骤③中,{L(x,y)}的Ns条垂直缝隙的找出过程为:根据{L(x,y)}中的每个像素点的累计能量值,并采用现有的动态规划方法找出{L(x,y)}中从y=1到y=H的Ns条成本最小的路径,将每条成本最小的路径作为{L(x,y)}的一条垂直缝隙;所述的步骤③中,其中,表示{dL(x,y)}中坐标位置为的像素点的像素值。
步骤④:为{L(x,y)}和{R(x,y)}中的每个像素点分配一个缝隙标记符号,将{L(x,y)}中坐标位置为(x,y)的像素点的缝隙标记符号记为IDL(x,y),如果坐标位置(x,y)属于{L(x,y)}的第i'条垂直缝隙,则IDL(x,y)=i',否则,IDL(x,y)=x1+Ns;将{R(x,y)}中坐标位置为(x,y)的像素点的缝隙标记符号记为IDR(x,y),如果坐标位置(x,y)属于{R(x,y)}的第i'条垂直缝隙,则IDR(x,y)=i',否则,IDR(x,y)=W-x2+Ns+1;其中,x1表示{L(x,y)}中坐标位置为(x,y)的像素点在将{L(x,y)}中所有落在{L(x,y)}的Ns条垂直缝隙内的像素点删除后得到的重定位图像中对应的坐标位置为(x1,y)的像素点的横坐标,1≤x1≤W-Ns,x2表示{R(x,y)}中坐标位置为(x,y)的像素点在将{R(x,y)}中所有落在{R(x,y)}的Ns条垂直缝隙内的像素点删除后得到的重定位图像中对应的坐标位置为(x2,y)的像素点的横坐标,1≤x2≤W-Ns。
步骤⑤:根据{L(x,y)}中的每个像素点的缝隙标记符号,计算{L(x,y)}中的所有具有相同缝隙标记符号的像素点的重要性能量值,将{L(x,y)}中的所有具有缝隙标记符号为j的像素点的重要性能量值记为同样,根据{R(x,y)}中的每个像素点的缝隙标记符号,计算{R(x,y)}中的所有具有相同缝隙标记符号的像素点的重要性能量值,将{R(x,y)}中的所有具有缝隙标记符号为j的像素点的重要性能量值记为其中,1≤j≤W。
在此具体实施例中,步骤⑤中,的获取过程为:
步骤⑤_1a:采用现有的基于图论的视觉显著(Graph-Based Visual Saliency,GBVS)模型提取出{L(x,y)}的显著图,记为{SML(x,y)};然后根据{SML(x,y)}和{dL(x,y)},获取{L(x,y)}的视觉显著图,记为{SL(x,y)},将{SL(x,y)}中坐标位置为(x,y)的像素点的像素值记为SL(x,y),其中,SML(x,y)表示{SML(x,y)}中坐标位置为(x,y)的像素点的像素值,表示SML(x,y)的权重,表示dL(x,y)的权重,在本实施例中取
步骤⑤_2a:根据{dL(x,y)}中的每个像素点的像素值,判定{L(x,y)}中的每个像素点属于遮挡区域还是属于匹配区域,并确定{L(x,y)}中的每个像素点的掩膜值,对于{L(x,y)}中坐标位置为(x,y)的像素点,如果dL(x,y)=255,则判定{L(x,y)}中坐标位置为(x,y)的像素点属于遮挡区域,并确定{L(x,y)}中坐标位置为(x,y)的像素点的掩膜值MaskL(x,y)为0;如果dL(x,y)≠255,则判定{L(x,y)}中坐标位置为(x,y)的像素点属于匹配区域,并确定{L(x,y)}中坐标位置为(x,y)的像素点的掩膜值MaskL(x,y)为1。
步骤⑤_3a:根据{L(x,y)}中的每个像素点的缝隙标记符号和掩膜值,计算{L(x,y)}中的每个像素点的缝隙重要性,将{L(x,y)}中坐标位置为(x,y)的像素点的缝隙重要性记为
步骤⑤_4a:计算{L(x,y)}中的每个像素点的重要性能量值,将{L(x,y)}中坐标位置为(x,y)的像素点的重要性能量值记为IML(x,y),其中,α、β和γ均为加权参数,在本实施例中取α=0.55、β=0.30和γ=0.15。
步骤⑤_5a:计算
在此具体实施例中,步骤⑤中,的获取过程为:
步骤⑤_1b:采用现有的基于图论的视觉显著(Graph-Based Visual Saliency,GBVS)模型提取出{R(x,y)}的显著图,记为{SMR(x,y)};然后根据{SMR(x,y)}和{dL(x,y)},获取{R(x,y)}的视觉显著图,记为{SR(x,y)},将{SR(x,y)}中坐标位置为(x,y)的像素点的像素值记为SR(x,y),其中,SMR(x,y)表示{SMR(x,y)}中坐标位置为(x,y)的像素点的像素值,表示SMR(x,y)的权重,表示dL(x,y)的权重,在本实施例中取
步骤⑤_2b:根据{dL(x,y)}中的每个像素点的像素值,判定{R(x,y)}中的每个像素点属于遮挡区域还是属于匹配区域,并确定{R(x,y)}中的每个像素点的掩膜值,对于{R(x,y)}中坐标位置为(x,y)的像素点,如果dL(x,y)=255,则判定{R(x,y)}中坐标位置为(x,y)的像素点属于遮挡区域,并确定{R(x,y)}中坐标位置为(x,y)的像素点的掩膜值MaskR(x,y)为0;如果dL(x,y)≠255,则判定{R(x,y)}中坐标位置为(x,y)的像素点属于匹配区域,并确定{R(x,y)}中坐标位置为(x,y)的像素点的掩膜值MaskR(x,y)为1。
步骤⑤_3b:根据{R(x,y)}中的每个像素点的缝隙标记符号和掩膜值,计算{R(x,y)}中的每个像素点的缝隙重要性,将{R(x,y)}中坐标位置为(x,y)的像素点的缝隙重要性记为
步骤⑤_4b:计算{R(x,y)}中的每个像素点的重要性能量值,将{R(x,y)}中坐标位置为(x,y)的像素点的重要性能量值记为IMR(x,y),其中,α'、β'和γ'均为加权参数,在本实施例中取α'=0.55、β'=0.30和γ'=0.15。
步骤⑤_5b:计算
步骤⑥:计算{dL(x,y)}经调整后的左视差图,记为其中,表示中坐标位置为(x,y)的像素点的像素值。
在此具体实施例中,步骤⑥的具体过程为:
步骤⑥_1:根据{dL(x,y)},计算{L(x,y)}中的每个像素点在世界坐标系中的位置,将{L(x,y)}中坐标位置为(x,y)的像素点在世界坐标系中的位置记为(X,Y,Z),其中,e表示待处理的立体图像的左视点与右视点之间的水平基线距离,D表示待处理的立体图像的左视点和右视点与显示器之间的观看距离,Wd表示显示器的水平宽度,R表示显示器的水平分辨率,在本实施例中的e、D、Wd和R的值根据具体的测试立体图像和观看条件确定。
步骤⑥_2:计算{L(x,y)}中的每个像素点的角视差,将{L(x,y)}中坐标位置为(x,y)的像素点的角视差记为DAD(x,y),其中,arccos()表示反余弦操作函数,
步骤⑥_3:计算{L(x,y)}中的每个像素点经调整后的角视差,将{L(x,y)}中坐标位置为(x,y)的像素点经调整后的角视差记为 其中,DF表示{L(x,y)}中的所有像素点的角视差中的最大值,DN表示{L(x,y)}中的所有像素点的角视差中的最小值。
步骤⑥_4:计算{L(x,y)}中的每个像素点经调整后的深度值,将{L(x,y)}中坐标位置为(x,y)的像素点经调整后的深度值记为通过求解得到;其中,
步骤⑥_5:获取将中坐标位置为(x,y)的像素点的像素值记为
步骤⑦:采用尺度不变特征转换(SIFT)提取出{L(x,y)}中的所有特征点,将{L(x,y)}中的第k个特征点记为 然后根据{dL(x,y)},获取{R(x,y)}中与{L(x,y)}中的每个特征点匹配的特征点,将{R(x,y)}中与匹配的特征点记为 其中,1≤k≤Q,Q表示{L(x,y)}中的特征点的总个数,表示的横坐标位置,表示的纵坐标位置,表示的横坐标位置,表示的纵坐标位置,表示{dL(x,y)}中坐标位置为的像素点的像素值。
步骤⑧:计算{L(x,y)}中的所有具有相同缝隙标记符号的像素点的比例因子,将{L(x,y)}中的所有具有缝隙标记符号为j的像素点的比例因子记为同样,计算{R(x,y)}中的所有具有相同缝隙标记符号的像素点的比例因子,将{R(x,y)}中的所有具有缝隙标记符号为j的像素点的比例因子记为和通过求解min(ESP+λ×EDC)得到,min(ESP+λ×EDC)满足条件其中,min()为取最小值函数,符号“||”为取绝对值符号,λ为加权参数,在本实施例中取λ=0.25, 表示由和组成的特征点组,Ω表示{L(x,y)}中的所有特征点和{R(x,y)}中的所有特征点构成的集合,表示中坐标位置为的像素点的像素值,W'表示重定位后的立体图像的宽度,δ为阈值,在本实施例中取δ=1。
步骤⑨:根据{L(x,y)}中的所有具有相同缝隙标记符号的像素点的比例因子,对{L(x,y)}进行重定位操作,获得重定位后的左视点图像,记为同样,根据{R(x,y)}中的所有具有相同缝隙标记符号的像素点的比例因子,对{R(x,y)}进行重定位操作,获得重定位后的右视点图像,记为然后将和构成重定位后的立体图像;其中,1≤x'≤W',W'表示重定位后的立体图像的宽度,表示中坐标位置为(x',y)的像素点的像素值,表示中坐标位置为(x',y)的像素点的像素值。
在此具体实施例中,步骤⑨中,的获取过程为:
步骤⑨_1a:将{L(x,y)}中当前待处理的第p行定义为当前行,其中,p的初始值为1,1≤p≤H。
步骤⑨_2a:将当前行中待处理的第q列的像素点定义为当前像素点,并将中与当前行相同位置的一行中待处理的第q'列的像素点定义为当前重定位像素点,其中,q的初始值为1,1≤q≤W,q'的初始值为1,1≤q'≤W'。
步骤⑨_3a:在当前行中搜索满足的最优列,将最优列的序号记为q*;然后计算当前重定位像素点的像素值,记为 其中,1≤q*≤W,表示{L(x,y)}中的所有具有缝隙标记符号为IDL(t,p)的像素点的比例因子,IDL(t,p)表示{L(x,y)}中坐标位置为(t,p)的像素点的缝隙标记符号,表示{L(x,y)}中的所有具有缝隙标记符号为IDL(q,p)的像素点的比例因子,IDL(q,p)表示{L(x,y)}中坐标位置为(q,p)的像素点的缝隙标记符号,L(q,p)表示{L(x,y)}中坐标位置为(q,p)的像素点的像素值,表示{L(x,y)}中的所有具有缝隙标记符号为IDL(q*,p)的像素点的比例因子,IDL(q*,p)表示{L(x,y)}中坐标位置为(q*,p)的像素点的缝隙标记符号,L(q*,p)表示{L(x,y)}中坐标位置为(q*,p)的像素点的像素值,L(t,p)表示{L(x,y)}中坐标位置为(t,p)的像素点的像素值。
步骤⑨_4a:令q=q*+1,q'=q'+1,重新确定当前像素点和当前重定位像素点,然后返回步骤⑨_3a继续执行,直至当前行中的所有像素点处理完毕;其中,q=q*+1和q'=q'+1中的“=”为赋值符号。
步骤⑨_5a:令p=p+1,重新确定当前行,然后返回步骤⑨_2a继续执行,直至{L(x,y)}中的所有行处理完毕,得到{L(x,y)}重定位后的左视点图像其中,p=p+1中的“=”为赋值符号。
步骤⑨中,的获取过程为:
步骤⑨_1b:将{R(x,y)}中当前待处理的第p行定义为当前行,其中,p的初始值为1,1≤p≤H。
步骤⑨_2b:将当前行中待处理的第q列的像素点定义为当前像素点,并将中与当前行相同位置的一行中待处理的第q'列的像素点定义为当前重定位像素点,其中,q的初始值为1,1≤q≤W,q'的初始值为1,1≤q'≤W'。
步骤⑨_3b:在当前行中搜索满足的最优列,将最优列的序号记为q*;然后计算当前重定位像素点的像素值,记为 其中,1≤q*≤W,表示{R(x,y)}中的所有具有缝隙标记符号为IDR(t,p)的像素点的比例因子,IDR(t,p)表示{R(x,y)}中坐标位置为(t,p)的像素点的缝隙标记符号,表示{R(x,y)}中的所有具有缝隙标记符号为IDR(q,p)的像素点的比例因子,IDR(q,p)表示{R(x,y)}中坐标位置为(q,p)的像素点的缝隙标记符号,R(q,p)表示{R(x,y)}中坐标位置为(q,p)的像素点的像素值,表示{R(x,y)}中的所有具有缝隙标记符号为IDR(q*,p)的像素点的比例因子,IDR(q*,p)表示{R(x,y)}中坐标位置为(q*,p)的像素点的缝隙标记符号,R(q*,p)表示{R(x,y)}中坐标位置为(q*,p)的像素点的像素值,R(t,p)表示{R(x,y)}中坐标位置为(t,p)的像素点的像素值。
步骤⑨_4b:令q=q*+1,q'=q'+1,重新确定当前像素点和当前重定位像素点,然后返回步骤⑨_3b继续执行,直至当前行中的所有像素点处理完毕;其中,q=q*+1和q'=q'+1中的“=”为赋值符号。
步骤⑨_5b:令p=p+1,重新确定当前行,然后返回步骤⑨_2b继续执行,直至{R(x,y)}中的所有行处理完毕,得到{R(x,y)}重定位后的左视点图像其中,p=p+1中的“=”为赋值符号。
为了进一步说明本发明方法的可行性和有效性,对本发明方法进行试验。
以下就利用本发明方法对Image1、Image2、Image3和Image4四幅立体图像进行重定位实验。图2a给出了“Image1”的原始立体图像的“红/绿”图、图2b给出了“Image1”的重定位到原始立体图像的宽度60%后的“红/绿”图;图3a给出了“Image2”的原始立体图像的“红/绿”图、图3b给出了“Image2”的重定位到原始立体图像的宽度60%后的“红/绿”图;图4a给出了“Image3”的原始立体图像的“红/绿”图、图4b给出了“Image3”的重定位到原始立体图像的宽度60%后的“红/绿”图;图5a给出了“Image4”的原始立体图像的“红/绿”图、图5b给出了“Image4”的重定位到原始立体图像的宽度60%后的“红/绿”图。从图2a至图5b中可以看出,采用本发明方法得到的重定位后的立体图像能够较好地保留重要的显著语义信息,同时又能保证左视点图像与右视点图像的一致性。