图像编码方法及装置的制造方法

文档序号:10516182阅读:408来源:国知局
图像编码方法及装置的制造方法
【专利摘要】本发明提供了一种图像编码方法及装置,所述图像编码方法包括以下步骤:步骤S1:获取一景深图,该景深图包括多个像素,并且每一像素包含有景深值;确定在景深图中的对象的离观测点最近的像素所在的焦平面;确定在景深图中的对象的离观测点最远的像素所在的焦平面;步骤S2:比较对象的处于已确定的邻近的两个焦平面之间的像素分别与所述两个焦平面的距离,从而确定处于所述两个焦平面中间的焦平面、以及对象的处于该新确定的焦平面上的像素的景深值;步骤S3:将对象的已被确定了景深值的像素及其景深值依次存储下来,生成编码流。本发明的编码方法简单实用,在3D电影、3D电视以及3D渲染等领域有着广泛的应用前景。
【专利说明】
图像编码方法及装置
技术领域
[0001]本发明涉及编码方法,尤其涉及一种图像编码方法及装置。
【背景技术】
[0002]近年来,3D概念进入到我们的生活中,各类的影音娱乐商品也搭上了这股潮流,推出3D电影、3D游戏以及3D图片等。然而,目前,并没有一个通用的3D图片的存储标准,这点将造成影片的不相容,没办法在每一台终端设备上播放,对3D数位内容的推广造成了阻碍。

【发明内容】

[0003]本发明针对目前并没有一个通用的3D图片的存储标准,这点将造成影片的不相容,没办法在每一台终端设备上播放,对3D数位内容的推广造成了阻碍的问题,提供了一种图像编码方法及装置。
[0004]本发明就该技术问题提出以下技术方案:
[0005]本发明提供了一种图像编码方法,包括以下步骤:
[0006]步骤S1:获取一景深图,该景深图包括多个像素,并且每一像素包含有景深值;确定在景深图中的对象的离观测点最近的像素所在的焦平面;确定在景深图中的对象的离观测点最远的像素所在的焦平面;
[0007]步骤S2:比较对象的处于已确定的邻近的两个焦平面之间的像素分别与所述两个焦平面的距离,从而确定处于所述两个焦平面中间的焦平面、以及对象的处于该新确定的焦平面上的像素的景深值;
[0008]步骤S3:将对象的已被确定了景深值的像素及其景深值依次存储下来,生成编码流。
[0009]本发明上述的图像编码方法中,步骤S2和步骤S3之间还包括步骤S31:
[0010]重复步骤S2,直到景深图中的对象的所有像素的景深值都被确定为止。
[0011]本发明上述的图像编码方法中,步骤SI还包括步骤Sll:获取重复次数阈值;
[0012]步骤S2和步骤S3之间还包括:以重复次数阈值的次数重复步骤S2。
[0013]本发明上述的图像编码方法中,步骤SI还包括步骤S12:获取距离阈值;
[0014]步骤S2还包括:当对象的处于已确定的邻近的两个焦平面之间的像素分别与所述两个焦平面的距离之差的绝对值小于距离阈值时,则确定该像素所在的焦平面是处于所述两个焦平面的中间,并确定新确定的焦平面的景深值为该像素的景深值。
[0015]本发明还提供了一种图像编码装置,包括:
[0016]编码信息获取模块:用于获取一景深图,该景深图包括多个像素,并且每一像素包含有景深值;还用于确定在景深图中的对象的离观测点最近的像素所在的焦平面;还用于确定在景深图中的对象的离观测点最远的像素所在的焦平面;
[0017]景深值确定模块:用于比较对象的处于已确定的邻近的两个焦平面之间的像素分别与所述两个焦平面的距离,从而确定处于所述两个焦平面中间的焦平面、以及对象的处于该新确定的焦平面上的像素的景深值;
[0018]存储模块:用于将对象的已被确定了景深值的像素及其景深值依次存储下来,生成编码流。
[0019]本发明上述的图像编码装置中,编码信息获取模块还用于获取距离阈值;
[0020]景深值确定模块还用于当对象的处于已确定的邻近的两个焦平面之间的像素分别与所述两个焦平面的距离之差的绝对值小于距离阈值时,则确定该像素所在的焦平面是处于所述两个焦平面的中间,并确定新确定的焦平面的景深值为该像素的景深值。
[0021]本发明通过采用重复次数阈值来限定编码所花费的时间,并且,本发明还通过采用重复次数阈值来确定景深图的精确度。本发明的编码方法简单实用,在3D电影、3D电视以及3D渲染等领域有着广泛的应用前景。
【附图说明】
[0022]下面将结合附图及实施例对本发明作进一步说明,附图中:
[0023]图1为一种层级结构的示意图;
[0024]图2为景深图文件格式的示意图;
[0025]图3为单元的结构示意图;
[0026]图4为对像素P编码的具体过程的示意图;
[0027]图5为对单元D解码的过程的示意图;
图6为目标层级数为4的单元的解码情况的示意图。
【具体实施方式】
[0028]在3D计算机绘图领域,景深图是一种包含有观测点到对象表面之间的观测距离的图片。景深图可以被应用于很多场合,如散焦、3D场景的渲染、阴影图以及其他与观测距离相关的应用。
[0029]在本申请中,我们公开了一种景深图的编码方法。该编码方法是基于层级结构以及二进制搜索方法,来确定具有一个像素的离观测点最近的焦平面,然后再计算该像素在景深图中的景深值。进一步地,我们通过相关的流程图具体阐述了这种编码方法的编码和解码过程。最后,我们也讨论了本申请的编码方法的优点以及潜在应用。
[0030]图1为一种层级结构的示意图。
[0031]如图1所示,F(X)定义为在景深图中景深值为X的焦平面,进一步地,F(x = O)定义为在景深图中对象的离观测点最近的表面的焦平面;而?(1= I)定义为在景深图中对象的离观测点最远的表面的焦平面。这样,对象的表面所在的所有焦平面都可以用F(0 < X< I)来表示。
[0032]例如,F(0.5)表示处于F(O)和F(I)的中间的焦平面耐(0.25)表示处于F(O)和F(0.5)的中间的焦平面,等等。这样,我们就可以根据比较焦平面之间的位置,来确定景深图中对象上的任意一个像素在景深图中的景深值。
[0033]具体地,本发明的编码方法包括以下步骤:
[0034]步骤S1:获取一景深图,该景深图包括多个像素,并且每一像素包含有景深值;确定在景深图中的对象的离观测点最近的像素所在的焦平面;确定在景深图中的对象的离观测点最远的像素所在的焦平面;
[0035]如图1所示的第一层(Level I),对象的离观测点最近的表面的焦平面为F(O);而对象的离观测点最远的表面的焦平面为F(I);
[0036]我们可以将F(O)确定为景深图的第一级左边边界,并将F(I)确定为景深图的第一级右边边界。
[0037]步骤S2:比较对象的处于已确定的邻近的两个焦平面之间的像素分别与所述两个焦平面的距离,从而确定处于所述两个焦平面中间的焦平面、以及对象的处于该新确定的焦平面上的像素的景深值;
[0038]本发明中,为了便于对象的处于已确定的邻近的两个焦平面之间的像素分别与所述两个焦平面的距离的比较,步骤SI还包括步骤S12:获取距离阈值;
[0039]步骤S2还包括:当对象的处于已确定的邻近的两个焦平面之间的像素分别与所述两个焦平面的距离之差的绝对值小于距离阈值时,则确定该像素所在的焦平面是处于所述两个焦平面的中间,并确定新确定的焦平面的景深值为该像素的景深值。
[0040]具体地,本步骤中,对于对象的在F(O)和F(I)之间的像素,比较该像素分别与第一级左边边界和第一级右边边界的距离,如果该像素靠近第一级左边边界,则其在景深图中的景深值会附加上一个数字O;如果该像素靠近第一级右边边界,则其在景深图中的景深值会附加上一个数字I ;在对象的在F(O)和F(I)之间的像素中,若邻近的两个像素在景深图中的景深值分别附加上了数字O和1,则可以将该两个像素中任意一个所在的焦平面确认为处于F(O)和F(I)的中间的焦平面F(0.5);若某一像素分别与第一级左边边界和第一级右边边界的距离相等,则确定该像素所在的焦平面为处于F(O)和F(I)的中间的焦平面F(0.5);这样,处于F(O)和F(I)的中间的焦平面F(0.5)就确定下来,如图1所示的第二层(即 Level 2)。
[0041]相似地,可以将F (O)作为第二级左边边界,并将F (0.5)作为第二级右边边界,比较对象的在F(O)和F(0.5)之间的像素分别与第二级左边边界和第二级右边边界的距离的方式,来确定处于F(O)和F(0.5)的中间的焦平面F(0.25),如图1所示的第三层(即Level3) ο
[0042]同样地,在图1所示的第三层(即Level 3)中,可以将F(0.5)作为第三级左边边界,并将F(I)作为第三级右边边界,比较对象的在F(0.5)和F(I)之间的像素分别与第三级左边边界和第三级右边边界的距离的方式,来确定处于F(0.5)和F(I)的中间的焦平面F(0.75)ο
[0043]依上述的方法,便可以将在景深图中的对象的所有像素的景深值全部确定下来。
[0044]从上述描述中,可以看到,本发明的编码方法采用了层级结构,并且,编码过程采用了二进制检索的思想。随着层级结构的深化,景深图能够更加细致,更多的细节特征能够更深入地在景深图中展现出来。当然,编码所花费的时间会更多。因此,我们可以控制层级结构的深化的程度来权衡景深图的细致程度和编码所花费的时间之间的取舍。
[0045]步骤S3:将对象的已被确定了景深值的像素及其景深值依次存储下来,生成编码流。
[0046]进一步地,在本实施例中,步骤S2和步骤S3之间还包括步骤S31:重复步骤S2,直到景深图中的对象的所有像素的景深值都被确定为止。
[0047]对于某些非常复杂的景深图,采用步骤S31会花费大量的时间。为了避免这种情况的发生,在另一实施例中,步骤SI还包括步骤Sll:获取重复次数阈值;步骤S2和步骤S3之间还包括:以重复次数阈值的次数重复步骤S2。
[0048]这样,通过采用重复次数阈值,来控制重复步骤S2的重复次数,可以减少编码景深图所花费的时间。
[0049]从上述描述中,可以发现,层级结构的层级数等于重复步骤S2的重复次数阈值加上1
[0050]为了便于本领域技术人员清楚地理解和实施本发明,下面将结合实施例对本发明做出具体的说明。
[0051]根据上面我们所提供的编码方法,景深图便可以格式化,成为景深图文件,如图2和图3所示。景深图文件包括大小固定的结构(如文件头)以及用来以预定顺序存储景深值数组的大小可变的结构。文件头包括景深图文件的信息;具体地,在图2和图3中,File_Type表明:本文件是一种景深图格式;File_Size表明:本文件的大小;Image_Width和ImageJfeight分别表明景深图的宽度和高度;Depth_Level表明景深图所达到的层级数;Depth_Flag表明对象的所有像素是否都达到了各自的目标层级数;Data_0ffset表明景深值数组的存储的起点;本实施例中,在景深图数组中,每个单元存储景深图中的一个像素的景深值信息;每个单元包括4个大小固定的位元(bit)和大小在1-N之间变化的位元;这里,N为自然数。
[0052]在一个单元中,第一个位元被命名为flagA,其存储了本单元存储的像素是否达到了其目标层级数;如果flagA的值为0,则表明该像素没有达到其目标层级数,需要进一步确定该像素所在的焦平面,从而使该像素达到其目标层级数;如果flagA的值为1,则表明该像素已达到了其目标层级数,该像素的层级数就是确定的。第二个位元到第四个位元被命名为flagB,其是一个二进制数,用于记录了该像素当前所达到的当前层级数(如果该像素达到了其目标层级数,则该像素当前所达到的当前层级数等于其目标层级数;如果该像素没有达到其目标层级数,则该像素当前所达到的当前层级数等于景深图所达到的层级数),也表明了 dataB的长度。从第五个位元开始到最后一个位元表示像素的深度值,并且还存储了该像素在景深图的每一层级的判断过程。
[0053]图4示出了对像素P编码的具体过程。根据景深图文件的格式的定义,像素P的处理状态可以从flagA读出;像素P的当前层级数可以从flagB读出;像素P的景深值可以从dataB读出。目标层级数为N ;
[0054]当像素P的当前层级数c被增加到flagB+Ι时,根据层级结构,左边邻近像素P的焦平面的景深值为L = dataB/2(c 右边邻近像素P的焦平面的景深值为R =(l+dataB)/2(el)。编码过程包括以下步骤:
[0055]步骤100、获取像素P在景深图中的位置参数;
[0056]步骤110、如果c > I或者flagA = 1,则将c_l赋值于flagB,并存储下来,并结束本编码过程;否则进入步骤120 ;
[0057]步骤120、计算该像素P与左边邻近该像素P的焦平面的距离DistL =IP-F(L)I ;并计算该像素P与右边邻近该像素P的焦平面的距离DistR= IP-F(R);如果min(DistL,DistR)小于阈值,则将I赋值于flagA,并将c_l赋值于flagB,并结束本编码过程;否则进入步骤130 ;
[0058]步骤130、在dataB的尾端附加一个位元,如果DistL ^ DistR,则该增加的位元为0,并将右边邻近该像素P的焦平面的景深值改为L+ (0.5) %且保存左边边界。否则,该增加的位元为I,并将左边边界的景深值修改为R-(0.5Γ,且保存右边边界,然后进入步骤140 ;
[0059]步骤140,计算c+1的值,并将该值赋值给C,进入步骤110。
[0060]图5示出了对单元D解码的过程。
[0061 ] 单元D的解码过程包括:
[0062]步骤200、获取单元D,获取该单元D的目标层级数M,读取单元D的flagB,将其换算成十进制数字的N;
[0063]步骤210、如果N3M,则输出单元D的dataB的第一个位元到第M个位元,并将该输出值作为景深值,并结束本解码过程;否则进入步骤220 ;
[0064]步骤220、在输出单元D的dataB附加M-N个位元,如果dataB的第N个位元为0,则将O赋值于所有新增加的位元;否则将I赋值于所有新增加的位元,然后进入步骤230 ;
[0065]步骤230、输出修改后的dataB。
[0066]图6为目标层级数为4的单元的解码情况。
[0067]进一步地,本发明还提供了一种图像编码装置,包括:
[0068]编码信息获取模块:用于获取一景深图,该景深图包括多个像素,并且每一像素包含有景深值;还用于确定在景深图中的对象的离观测点最近的像素所在的焦平面;还用于确定在景深图中的对象的离观测点最远的像素所在的焦平面;
[0069]景深值确定模块:用于比较对象的处于已确定的邻近的两个焦平面之间的像素分别与所述两个焦平面的距离,从而确定处于所述两个焦平面中间的焦平面、以及对象的处于该新确定的焦平面上的像素的景深值;
[0070]存储模块:用于将对象的已被确定了景深值的像素及其景深值依次存储下来,生成编码流。
[0071]其中,本实施例中,景深值确定模块在景深图中的对象的所有像素的景深值都被确定后停止工作。
[0072]在另一实施例中,编码信息获取模块还用于获取重复次数阈值;景深值确定模块在以重复次数阈值的次数重复工作后,停止工作。
[0073]这里,编码信息获取模块还用于获取距离阈值;
[0074]景深值确定模块还用于当对象的处于已确定的邻近的两个焦平面之间的像素分别与所述两个焦平面的距离之差的绝对值小于距离阈值时,则确定该像素所在的焦平面是处于所述两个焦平面的中间,并确定新确定的焦平面的景深值为该像素的景深值。
[0075]本发明通过采用重复次数阈值来限定编码所花费的时间,并且,本发明还通过采用重复次数阈值来确定景深图的精确度。本发明的编码方法简单实用,在3D电影、3D电视以及3D渲染等领域有着广泛的应用前景。
[0076]应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。
【主权项】
1.一种图像编码方法,其特征在于,包括以下步骤: 步骤S1:获取一景深图,该景深图包括多个像素,并且每一像素包含有景深值;确定在景深图中的对象的离观测点最近的像素所在的焦平面;确定在景深图中的对象的离观测点最远的像素所在的焦平面; 步骤S2:比较对象的处于已确定的邻近的两个焦平面之间的像素分别与所述两个焦平面的距离,从而确定处于所述两个焦平面中间的焦平面、以及对象的处于该新确定的焦平面上的像素的景深值; 步骤S3:将对象的已被确定了景深值的像素及其景深值依次存储下来,生成编码流。2.根据权利要求1所述的图像编码方法,其特征在于,步骤S2和步骤S3之间还包括步骤 S31: 重复步骤S2,直到景深图中的对象的所有像素的景深值都被确定为止。3.根据权利要I所述的图像编码方法,其特征在于,步骤SI还包括步骤Sll:获取重复次数阈值; 步骤S2和步骤S3之间还包括:以重复次数阈值的次数重复步骤S2。4.根据权利要I所述的图像编码方法,其特征在于,步骤SI还包括步骤S12:获取距离阈值; 步骤S2还包括:当对象的处于已确定的邻近的两个焦平面之间的像素分别与所述两个焦平面的距离之差的绝对值小于距离阈值时,则确定该像素所在的焦平面是处于所述两个焦平面的中间,并确定新确定的焦平面的景深值为该像素的景深值。5.一种图像编码装置,其特征在于,包括: 编码信息获取模块:用于获取一景深图,该景深图包括多个像素,并且每一像素包含有景深值;还用于确定在景深图中的对象的离观测点最近的像素所在的焦平面;还用于确定在景深图中的对象的离观测点最远的像素所在的焦平面; 景深值确定模块:用于比较对象的处于已确定的邻近的两个焦平面之间的像素分别与所述两个焦平面的距离,从而确定处于所述两个焦平面中间的焦平面、以及对象的处于该新确定的焦平面上的像素的景深值; 存储模块:用于将对象的已被确定了景深值的像素及其景深值依次存储下来,生成编码流。6.根据权利要5所述的图像编码方法,其特征在于,编码信息获取模块还用于获取距离阈值; 景深值确定模块还用于当对象的处于已确定的邻近的两个焦平面之间的像素分别与所述两个焦平面的距离之差的绝对值小于距离阈值时,则确定该像素所在的焦平面是处于所述两个焦平面的中间,并确定新确定的焦平面的景深值为该像素的景深值。
【文档编号】H04N13/00GK105872560SQ201510028430
【公开日】2016年8月17日
【申请日】2015年1月20日
【发明人】陈增源, 李荣彬, 李莉华, 刘亚辉
【申请人】香港理工大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1