发明名称 一种虚拟视点中像素点的获取方法
摘要 本发明公开了一种虚拟视点中像素点的获取方法,其将彩色图像中的一个像素点及其右相邻像素点投影到虚拟图像上,得到对应的两个投影点后,对包含在两个投影点之间的像素点选择多个进行插值计算得到像素值,运用这种方法能够填补多个像素点,因此本发明方法能够有效地避免因为深度信息不准确而在虚拟视点上产生的漏映射,从而减少了裂纹的产生,降低了后续空洞填补的难度,提高了虚拟视点的质量;在映射过程中裂纹处像素点被填补,在后续映射到裂纹处的像素点会与裂纹处像素点比较深度值,深度值越大表明离相机越近,处在前景区域,保留深度值较大的像素点,因此本发明方法能够消除背景区域覆盖前景区域的情况。
申请公布号 CN104378617B 申请公布日期 2016.04.20
申请号 CN201410596909.8 申请日期 2014.10.30
申请人 宁波大学 发明人 彭宗举;郑迪;陈芬;蒋刚毅;郁梅
分类号 H04N13/00(2006.01)I;H04N15/00(2006.01)I 主分类号 H04N13/00(2006.01)I
代理机构 宁波奥圣专利代理事务所(普通合伙) 33226 代理人 周珏
主权项 一种虚拟视点中像素点的获取方法,其特征在于包括以下步骤:①获取一个视点的彩色视频及对应的深度视频,并假设虚拟视点位于彩色视频与深度视频所在的视点的右侧;②以帧为单位,根据彩色视频中的每帧彩色图像中的每个像素点及深度视频中的每帧深度图像中的每个像素点,获取虚拟视点中的每帧虚拟图像中的每个像素点的像素值和深度值,具体过程为:②‑1、将彩色视频中当前待处理的一帧彩色图像定义为当前彩色图像,将深度视频中当前待处理的与当前彩色图像对应的一帧深度图像定义为当前深度图像;②‑2、将当前彩色图像中当前待处理的像素点定义为当前第一像素点,将当前第一像素点的右相邻像素点定义为当前第二像素点;②‑3、将当前第一像素点记为A,将当前第一像素点A的坐标位置记为(x<sub>1</sub>,y<sub>1</sub>),将当前第二像素点记为B,将当前第二像素点B的坐标位置记为(x<sub>2</sub>,y<sub>2</sub>),将当前第一像素点A与当前第二像素点B之间的空间位置距离定义为1个单位,其中,1≤x<sub>1</sub>≤W‑1,1≤y<sub>1</sub>≤H,2≤x<sub>2</sub>≤W,1≤y<sub>2</sub>≤H,W表示彩色视频中的彩色图像和深度视频中的深度图像的宽度,H表示彩色视频中的彩色图像和深度视频中的深度图像的高度,x<sub>2</sub>‑x<sub>1</sub>=1,y<sub>2</sub>=y<sub>1</sub>;②‑4、分别将当前第一像素点A和当前第二像素点B投影到虚拟视点中与当前彩色图像对应的虚拟图像上,将当前第一像素点A投影到虚拟图像上的投影点记为A',将当前第二像素点B投影到虚拟图像上的投影点记为B',将A'在虚拟图像中的坐标位置记为(x<sub>1</sub>',y<sub>1</sub>),将B'在虚拟图像中的坐标位置记为(x<sub>2</sub>',y<sub>2</sub>),其中,x<sub>1</sub>'=2×(x<sub>1</sub>+d<sub>1</sub>),x<sub>2</sub>'=2×(x<sub>2</sub>+d<sub>2</sub>),d<sub>1</sub>表示当前第一像素点A向虚拟图像映射时的视差,d<sub>2</sub>表示当前第二像素点B向虚拟图像映射时的视差;②‑5、在A'与B'的连接线段上找出所有像素点,如果不存在像素点,则直接执行步骤②‑7;如果存在若干个像素点,则统计找出的所有像素点的个数,若个数小于或等于设定的判定阈值T,则计算找出的每个像素点在A'与B'的连接线段上的距离比;若个数大于设定的判定阈值T,则计算找出的离A'最近的<img file="FDA0000893870200000011.GIF" wi="93" he="142" />个像素点各自在A'与B'的连接线段上的距离比及离B'最近的<img file="FDA0000893870200000021.GIF" wi="107" he="143" />个像素点各自在A'与B'的连接线段上的距离比,其中,符号<img file="FDA0000893870200000022.GIF" wi="158" he="79" />为向下取整符号,对于上述任一个需计算距离比的像素点,记为C',将该像素点C'在A'与B'的连接线段上的距离比记为r<sub>C'</sub>,<img file="FDA0000893870200000023.GIF" wi="236" he="142" />0≤r<sub>C'</sub>≤1,L<sub>A'C'</sub>表示A'与该像素点C'之间的空间位置距离,L<sub>A'B'</sub>表示A'与B'之间的空间位置距离;所述的步骤②‑5中设定的判定阈值T取值为6;②‑6、对于步骤②‑5中已计算过距离比的所有像素点,获取每个像素点的像素值和深度值,针对任一个像素点C'进行以下操作:a、提取当前深度图像中与当前第一像素点A相同坐标位置的像素点的深度值,并提取与当前第二像素点B相同坐标位置的像素点的深度值,然后将提取出的两个深度值中值最大的深度值作为该像素点C'候选的深度值;b、判断该像素点C'是否已被赋予过像素值和深度值,如果已被赋予过像素值和深度值,则比较该像素点C'已被赋予的深度值和该像素点C'候选的深度值的大小,然后将值最大的深度值作为该像素点C'的深度值,并将值最大的深度值对应的像素值作为该像素点C'的像素值;如果未被赋予过像素值和深度值,则直接将该像素点C'候选的深度值作为该像素点C'的深度值,并根据当前第一像素点A的像素值、当前第二像素点B的像素值及该像素点C'在A'与B'的连接线段上的距离比r<sub>C'</sub>,采用线性空间移不变插值方法插值得到该像素点C'的像素值,记为f(C'),f(C')=ω×f(A)+(1‑ω)×f(B),其中,ω=1‑g(r<sub>C'</sub>),f(A)表示当前第一像素点A的像素值,f(B)表示当前第二像素点B的像素值,<math><![CDATA[<mrow><mi>g</mi><mrow><mo>(</mo><msub><mi>r</mi><msup><mi>C</mi><mo>&prime;</mo></msup></msub><mo>)</mo></mrow><mo>=</mo><mfenced open = "{" close = ""><mtable><mtr><mtd><mrow><msup><mn>0.5</mn><mrow><mn>1</mn><mo>-</mo><mi>n</mi></mrow></msup><mo>&times;</mo><msup><mrow><mo>(</mo><msub><mi>r</mi><msup><mi>C</mi><mo>&prime;</mo></msup></msub><mo>)</mo></mrow><mi>n</mi></msup></mrow></mtd><mtd><mrow><mn>0</mn><mo>&le;</mo><msub><mi>r</mi><msup><mi>C</mi><mo>&prime;</mo></msup></msub><mo>&le;</mo><mn>0.5</mn></mrow></mtd></mtr><mtr><mtd><mrow><mn>1</mn><mo>-</mo><msup><mn>0.5</mn><mrow><mn>1</mn><mo>-</mo><mi>n</mi></mrow></msup><mo>&times;</mo><msup><mrow><mo>(</mo><mn>1</mn><mo>-</mo><msub><mi>r</mi><msup><mi>C</mi><mo>&prime;</mo></msup></msub><mo>)</mo></mrow><mi>n</mi></msup></mrow></mtd><mtd><mrow><mn>0.5</mn><mo>&le;</mo><msub><mi>r</mi><msup><mi>C</mi><mo>&prime;</mo></msup></msub><mo>&le;</mo><mn>1</mn></mrow></mtd></mtr></mtable></mfenced><mo>,</mo></mrow>]]></math><img file="FDA0000893870200000024.GIF" wi="892" he="182" /></maths>n表示线性空间移不变核函数g()中的参数;在获得步骤②‑5中已计算过距离比的每个像素点的像素值和深度值后执行步骤②‑7;②‑7、将当前彩色图像中下一个待处理的像素点作为当前第一像素点,将当前第一像素点的右相邻像素点作为当前第二像素点,然后返回步骤②‑3继续执行,直至当前彩色图像中的所有像素点处理完毕;②‑8、将彩色视频中下一帧待处理的彩色图像作为当前彩色图像,将深度视频中下一帧待处理的与当前彩色图像对应的一帧深度图像作为当前深度图像,然后返回步骤②‑2继续执行,直至彩色视频中的所有彩色图像和深度视频中的所有深度图像处理完毕,得到虚拟视点中的每帧虚拟图像中的每个像素点的像素值和深度值。
地址 315211 浙江省宁波市江北区风华路818号