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

文档序号:8270320阅读:来源:国知局
中。
[0104]作为用于并行化改善的其他方法,有使用瓦片(tile)的方法。帧(图片)被分割为多个瓦片。各瓦片是长方形,包含多个LCU。瓦片间的边界设定为,以阵列状将图片分割。此外,将多个瓦片以光栅扫描顺序进行处理。
[0105]此外,在各瓦片的边界丧失了全部的依存性。CABAC等的熵编码也在各瓦片的开头被复位。另外,仅解块滤波处理和样本自适应偏移处理跨越瓦片间的边界而被采用。由此,能够将多个瓦片并行地编码或解码。另外,关于瓦片的详细情况,记载在非专利文献2及非专利文献3中。
[0106]此外,为了使切片的概念成为比H.264/MPEG 一 4AVC中的切片的本来的目的即错误耐受性更适合于并行化的概念,提出了依存切片及熵切片的概念。即,在HEVC中,使用通常切片、依存切片及熵切片的3个切片。
[0107]通常切片是根据H.264/MPEG 一 4AVC已经知道的切片。在通常切片间不能进行空间预测。即,不能进行跨越切片间的边界的预测。换言之,不参照另外的切片而将通常切片编码。CABAC在各个切片的开头重启动,以便能够分别进行这样的切片的解码。
[0108]此外,在帧的开头中使用通常切片。即,各帧必须从通常切片开始。通常切片具有包含参数的头,该参数是切片数据的解码所需要的参数。
[0109]熵切片是能够在母切片与熵切片之间进行空间预测的切片。这里,所谓母切片,例如是紧挨着熵切片之前的通常切片。母切片及熵切片的解析独立地进行。
[0110]此外,切片数据的解析除了切片头的语法要素以外,在母切片和熵切片中独立地进行。即,在熵切片的CABAC解码处理中,需要包含在母切片的切片头中的语法要素。例如,该语法要素包括表示切片数据是否包含滤波参数的切换信息。在切片数据中存在滤波参数的情况下,CABAC解码部提取该信息。在不存在的情况下,CABAC解码部不设想滤波数据。即,在将通常切片的切片头解析后,CABAC解码部能够将母切片和熵切片并行处理。
[0111]但是,母切片例如也可以是通常切片,在熵切片的像素值的重构中需要。此外,在切片的开头将CABAC也重启动,以便能够将熵切片独立解析。
[0112]在熵切片中,可以使用比通常切片的切片头短的切片头。在切片头中,包括与在通常切片的头内发送的信息有关的编码参数子集。没有包含在熵切片的头中的信息从母切片的头复制。
[0113]依存切片与没有将CABAC重启动的熵切片类似。CABAC的重启动,包括将上下文表(概率表)初始化为默认值的处理、和算术编码处理或算术解码处理中的终端处理(终结处理)。
[0114]母切片的头被用于依存切片的解析及/或解码。由此,不能将母切片或依存切片解析,所以在没有取得母切片的情况下,不能将依存切片解码。母切片通常在编码顺序中是依存切片的先行切片,是包括完全的切片头的切片。这在熵切片的母切片中也相同。
[0115]一般而言,熵切片可以看作依存于其他切片的头参数,所以能够对依存切片及熵切片的两者采用本发明。
[0116]如以上这样,依存切片及熵切片使用切片的编码顺序中的紧挨着之前的切片的切片头(不包含在依存切片的头中的信息)。将该规则归纳性地使用。认识到对象依存切片依存的母切片是能够参照的。在参照中,包括切片间的空间预测及共用CABAC状态等的利用。依存切片使用在紧挨着之前的切片的终端生成的CABAC上下文表。这样,依存切片不将CABAC表初始化为默认值而持续使用已制作的表。此外,关于熵切片及依存切片,记载在非专利文献3中(例如,参照第73页的“dependent_slice_flag”等)。
[0117]在使用WPP的情况下,如果依存切片在IXU行的开头开始、并且包含该开头的IXU的右上的IXU的切片表示能够参照,则依存切片使用右上的IXU的CABAC上下文表。
[0118]HEVC提示一些属性(profile)。属性包括对特定的应用使用的图像编码装置及图像解码装置的设定。例如,“主要属性”仅包括通常切片及依存切片,不包括熵切片。
[0119]如上述那样,将编码切片封装为NAL单元,再封装为例如实时协议(R TP),最终封装为因特网协议(IP)包。通过该协议栈或另外的协议栈,能够在因特网或固有网络等的包指向型网络中进行编码影像的发送。
[0120]典型地,网络包含至少I个以上的路由器,路由器由以超高速动作的专用硬件构成。路由器具有接收IP包并将IP包的头解析、将适当IP包向各个目的地转送的功能。路由器由于需要将来自许多来源的通信处理,所以控制逻辑的包必须尽可能简单。路由器由于至少决定将IP包转送的路径,所以需要确认IP头中包含的目的地地址字段。为了还提供对于服务品质(Q OS)的支持,智能(媒体感知)路由器追加地确认IP头、RTP头及NALU头等的网络协议头中的专用字段。
[0121]根据关于影像编码的上述记载可知,依存切片及熵切片等为了并行处理而定义的不同类型的切片对于数据缺失的情况下的画质的下降的重要性不同。不能没有母切片而将依存切片解析及解码。这是因为,在依存切片的开头不能将熵编码部或熵解码部重启动。由此,可以说在将图像或影像重构方面,母切片更重要。
[0122]在HEVC中,作为依存性的补充性的侧面,依存切片及熵切片取入切片间的依存性(帧内的依存性)。该依存性不是帧内的唯一的依存性。
[0123]此外,由于按照每个瓦片进行切片的并行处理,所以算术编码部及算术解码部的上下文通过默认的设定、或基于已编码或已解码切片来决定。但是,由于头的依存性与算术编码初始化的依存性不同,所以有可能违背并行处理及依存切片的机理的目的而发生延迟或复杂度增加。
[0124]依存切片能够与WPP或瓦片等的并行处理工具一起使用。此外,通过使用依存切片,能够不引起编码损失而生成能够削减传送延迟的波前(wa vefront)(子流)。
[0125]此外,由于在依存切片中不将CABAC重启动,所以能够使用依存切片作为CABAC子流的开始点。此外,由于表示独立的解析的开始点,所以也可以将表示该开始点的信息包含在比特流中而传递。特别是,在将两个以上的CABAC子流封装为通常切片或依存切片的情况下,使用每个子流的字节数明示地将开始点进行信号传递。这里,子流表示通过开始点能够分别解析的流的一部分。进而,由于各依存切片需要NAL单元的头,所以作为开始点的“标记”可以使用依存切片。即,能够将这样的对于标记的开始点进行信号传递。
[0126]通过信号明示地通知开始点的方法和经由依存切片将开始点标记的方法可以同时使用。这里,需要能够确定各NAL单元的开始点(各NAL头的开头)。另外,关于确定方法,可以使用任意的方法。例如可以使用以下的两个方法。
[0127]第一个方法是对各NAL头的开头插入例如3字节的开始代码的方法。第二个方法是将各NAL单元打包到不同的包中的方法。此外,由于切片的依存性,也可以将切片头的尺寸缩小。
[0128]通过这些方法,能够对熵切片并行进行CABAC解析。这是因为,在熵切片的开头必定将CABAC重启动。在CABAC的并行处理中,通过连续的像素构建处理后的并行CABAC解析能够克服障碍。具体而言,可以通过WPP并行化工具将各LCU行的解码处理通过I个处理核心实现。另外,向各核心的IXU行的分配也可以不同。例如,也可以对I个核心分配两行,也可以对两个核心分配I行。
[0129]图3A是表示分配给多个行的图片300的图。各行包括多个最大编码单位(IXU)。行301 (Wavefrontl)及行302 (Wavefront2)是被并行处理的对象。如图3A的CABAC状态(CABACstates)的箭头所示,在行301中将最初的两个IXU解码后,行302的处理开始。此夕卜,将行301的最初的两个LCU编码或解码后的CABAC状态在行302的CABAC初始化时使用。由此,行302的处理可以在行301的最初的两个LCU的处理结束后开始。S卩,在两个处理核心之间存在两个IXU的量的延迟。
[0130]图3B是表示使用WPP的依存切片的使用例的图。图3B所示的图片310包括行311 ?314。这里,行 311 (Wavefrontl)、行 312 (Wavefront2)及行 313 (Wavefront3)以不同的核心予以处理。
[0131]依存切片形成能够改善延迟的WPP。在依存切片中没有完全的切片头。此外,如果知道开始点(或以上述那样的规则知道的依存切片的开始点),则能够与其他切片独立地将依存切片解码。此外,依存切片能够不发生编码损失而形成也适合于低延迟应用的WPP。
[0132]在将子流(LCU行)封装为切片的通常的情形中,为了可靠地并行进行熵编码及解码,需要将明确的开始点插入到切片头中。因此,在切片的最后的子流完全被编码后,才做好切片的传送的准备。此外,在切片中的全部的子流的编码完成后,切片头才完成。即,在切片整体的处理结束之前,不能经由RTP/IP层的包碎片开始切片的开头的传送。
[0133]但是,在使用依存切片的情况下,由于能够利用依存切片作为开始点标记,所以不需要基于开始点的明示信号的通知。因而,能够没有编码损失而将通常切片分割为许多依存切片。此外,可以在封装后的子流的编码完成后立即(或者在包碎片的情况下比其早地)传送依存切片。
[0134]此外,依存切片不减弱空间预测的依存性。进而,依存切片也不减弱解析依存性。这是因为,在对象依存切片的解析中通常需要先行切片的C ABAC状态。
[0135]在不被许可依存切片的情况下,能够将各LCU行作为切片。这样的结构将改善传送延迟,但同时如上述那样导致发生较大的编码损失。
[0136]设想将帧(图片)整体封装为I个切片的情况。在此情况下,为了能够进行并行解析,需要向切片头通过信号来传递子流(LCU行)的开始点。由此,在帧级别上发生传送延迟。即,需要在将帧整体编码后将头修正。将图片整体封装为I个切片这件事情本身不使传送延迟恶化。例如,也可以在编码完全结束之前开始切片的一部分的传送。但是,在使用WPP的情况下,为了记述开始点而需要将切片头在之后修正。因而,需要使切片整体的传送延迟。
[0137]这样,通过依存切片的使用,能够削减延迟。如图3B所示,图片310被分割为作为通常切片的行311、作为依存切片的行312、313及314。在各行是I个依存切片的情况下,能够没有编码损失而使I个行的传送延迟。这是因为,依存切片不将空间依存减弱并且不将CABAC引擎重启动。
[0138]图4A及图4B是表示CABAC初始化的另一例的图。图4A表示不使用WPP的情况下的CABAC的初始化。此外,不使用WPP及瓦片这两者。此外,认可将通常切片及依存切片一起使用。
[0139]依存切片(3)从通常切片(2)复制头。S卩,通常切片(2)是依存切片(3)的母切片。依存切片(3)使用在通常切片(2)的终端生成的上下文表。依存切片(3)不是通常切片(I)而依存于通常切片(2)。S卩,在通常切片(I)与依存切片(3)之间不存在空间预测。
[0140]图4B是表示使用WPP的情况下的CABAC的初始化的图。认可将通常切片、依存切片及WPP —起使用。
[0141]依存切片(3)将通常切片(2)的头复制。依存切片(3)预想是使用在通常切片(I)的第2个LCU的终端生成的上下文表。但是,由于切片(2)是通常切片,所以表示切片
(I)的第2个LCU不能参照。S卩,切片(I)由于不是在编码顺序上为紧挨着依存切片之前的先行切片,所以不被参照。
[0142]但是,切片⑵被作为切片(3)及⑷的参照切片使用。即,在开始切片(3)的解码时,CABAC状态需要被初始化为默认值(在图4B中用点线的箭头表示)。依存切片(4)使用遵循上述那样的WPP的条件的右上的第2LCU之后的CABAC状态(实线的箭头)。
[0143]图5是表示依据当前的HEVC参照模型(HM8.0)的切片头的语法例的图。切片头320包括表示对象切片是依存切片还是通常切片的语法要素d ependent_slice_flag。
[0144]根据图5的行321可知,在dependent_slice_flag与O等同的情况下,头包含切片头信息。即,切片具有完全的头。在不是这样的情况下,头不包含切片头信息。即,如上述那样,依存切片及熵切片不具有完全的切片头,参照先行的通常切片的头。
[0145]为了支持并行处理,随后用信号传递开始点。即使是不将熵编码部或熵解码部重启动的情况,也能够使用该开始点对开始点间的影像流(子流)的一部分独立进行并行解码。如上述那样,对于依存切片、通常切片及熵切片也标记开始点。
[0146]在HEVC中,有一些并行处理工具。如上述那样,该工具是WPP、依存切片、熵切片及瓦片。但是,由于这些工具有时没有互换性,所以在将它们组合的利用中存在限制。一般而言,认可将瓦片和切片一起使用。
[0147]但是,在主要属性中,有必须将I个切片分割为I以上的整数个瓦片、此外必须将I个瓦片分割为I以上的整数个切片的限制。典型地,将该限制对特定的属性(或属性的特定级别)应用。该限制的目的是降低硬件执行的复杂度。
[0148]在PPS 的 entropy_coding_sync_enabled_flag 与 I 等同(即,使用 WPP)、切片中包含的第I个编码块不是由瓦片的编码树块构成的行的第I个编码树块的第I个编码块的情况下,比特流适合于标准的条件是,切片的最后的编码块属于与切片的第I个编码块相同的编码树块行。编码树表示将LC U的构造及IXU分别再向4块归纳性地分割。S卩,在能够进行WPP的情况下,并且在切片不从对象LCU行的开头开始的情况下,切片必须在对象IXU行的终端或其之前结束。此外,不仅是并行处理手段、关于HEVC语法的详细情况也记载在非专利文献3中。
[0149]使用图6说明该限制。图6所示的图片330包括作为通常切片的切片331、332及333。切片331及332包含在I个LCU行中。切片333横跨多个LCU行(在该例中是3行),所以是不被许可的切片。按照上述限制,切片333必须在第IIXU行的终端结束。
[0150]图7是表示使用WPP的情况下的具有被许可的切片构造的图片340的图。图片340包括作为通常切片的切片341、342及343、和作为依存切片的切片344。这些切片341、342及343包含在第I行的IXU行中。切片344包含以下的两行。
[0151]由于切片344是依存切片,所以对于切片344的CABAC初始化依存于其他切片341、342及/或343。在切片342及343的某个如图7所示那样是通常切片的情况下,将切片344初始化为默认的CABAC状态。在不是那样的情况下使用WPP表。S卩,将对象行之上的IXU行的第2个IXU的处理后的CABAC状态用于初始化。
[0152]在该例中,如在图4B及上述CABAC初始化的关联记载中叙述那样,将对于依存切片344的CABAC使用预先设定的默认的CABAC状态来初始化。
[0153]这样,CABAC初始化基于多个先行切片。由此,关于对象切片的处理、特别是解析,依存于多个其他切片。具体而言,根据对象切片的先行切片的种类,决定将CABAC上下文用默认值及WPP值的哪个值来初始化。这样,确认是否能够利用先行切片,决定对对象切片使用的初始化方法。即,需要相当复杂的顺序的处理。以下,对其详细地说明。
[0154]由于第I切片341至少具有两个IXU,所以能够参照将最初的两个L⑶编码或解码后的CABAC状态。
[0155]此外,在切片342或切片343丢失的情况下,不能将切片344正确地解码。这是因为,由于不知道切片342或切片343的种类,所以不能进行CABAC初始化。即,即使在仅关于两个先行切片的信息缺失、正确地取得了切片344的情况下,由于不能进行对于切片344的CABAC的初始化,所以也将正确取得的切片344的数据丢弃。由此,对于切片344需要进行错误隠蔽。由此,有可能因为不完全的错误隠蔽所带来的畸变而使画质下降。
[0156]这里,在切片头中,语法要素的几乎全部(它们主要是特定的滤波操作等的控制的切换)都需要针对帧中包含的全部的切片决定。此外,其中也有能够按照每个切片变更的语法要素,但在由图像编码装置进行的几乎全部的处理中,对帧整体决定的控制参数被全部维持。由此,作为错误隠蔽的方法可以使用以下的方法。在该方法中,仅需要有关丢失的切片是依存切片还是通常切片的信息。
[0157]此外,在包顺序混乱着到达的情况下,解码延迟恶化。即,在预想包的重新排列的情况下,解码延迟有可能恶化。这与作为WPP的基本目的的、通过依存切片提供超低延迟是矛盾的。
[0158]图8是表示CABAC初始化处理的另一例的图。在图8中,设想了图7所示的切片的构造。图8所示的图片350包括切片351和切片354。切片351是通常切片,是帧中的第I个切片,包括4个IXU。在帧的开头、即在切片351的开头,将CABAC初始化为默认状态值(零状态)。另外,也可以存在多个默认状态,在此情况下,从多个默认状态中选择一个默认状态。另外,所谓默认状态,是算术编码的概率模型的规定值。
[0159]即使取得属于依存切片354的数据,在通过缺失或错误而没有切片342及切片343(参照图7)的数据的情况下,也不能将切片354解码。这是因为,如上述那样,没有切片342及343的信息就不能将CABAC引擎初始化。
[0160]图9是在取得了依存切片354时进行的初始化方法的决定处理的流程图。换言之,该流程图表示CABAC初始化的向两个以上的切片的依存的方式。
[0161]设想对切片(4)(依存切片354)设定以下的条件。能够进行WPP。S PS的dependent_slice_enabled_flag 被设定为 I。切片(4)的位置满足(式 I)。
[0162]slice_address% numT.CUi n Row = 0..?(式 I)
[0163]这里,“ % ”是模运算(整除的余数)。参数numlXUinRow表示图片350的每I行的LCU的数量。由此,(式I)的条件在行的开头满足。参数n umLCUinRow可以根据SPS的设定导出。
[0164]首先,判定切片(4)是否是依存切片(SlOl)。在切片(4)不是依存切片的情况下(S101中的“否”),进行默认的初始化。
[0165]如图8所示,在切片(4)是依存切片的情况下(S101中的“是”),将i设定为3(S102)?即,将紧挨着切片(4)之前的切片(3)设定为切片1
[0166]接着,判定切片i是否从切片(4)的上一行开始(S103)。这里,由于i被设定为3,所以切片i是紧挨着作为处理对象的依存切片(切片(4))之前的切片(3)。
[0167]在切片i不从切片(4)的上一行开始的情况下(S103中的“否”),进行WPP的初始化(使用WPP表的初始化)(S107)。
[0168]另一方面,在切片i从切片(4)的上一行开始的情况下(S103中的“是”),即图8所示的情形的情况下,判定切片i是否是依存切片(S104)。
[0169]在切片i不是依存切片的情况下(S104的“否”),接着分析切片i的开始位置。具体而言,判定slice_address% numLCUinRow是否比2小(S106)。即,判定切片i的开始位置是否是行开头或第2个LCU。
[0170]在slice_address% numT.CUinRow 比 2 小的情况下(S106 中的“是”),进行 WPP 的初始化(S107) ο另一方面,在slice_address% numIXUinRo w是2以上的情况下(S106中的“否”),进行默认的初始化(S108)。
[0171]此外,在切片i是依存切片的情况下(S104中的“是”),分析切片i的开始位置。具体而言,判定slice_address% numLCUinRow是否比3小(S105)。即,判定切片i的开始位置是否是行开头、第2或第3个LCU。
[0172]在slice_address% numLCUinRow 比 3 小的情况下(S105 中的“是”),进行 WPP 的初始化(S107) ο另一方面,在slice_address% numIXUinRo w是3以上的情况下(S105中的“否”),不进行初始化,索引i减小1(S109)。即,在该例中,将对象切片(切片(4))的两个之前的切片(2)设定为切片i。并且,对切片(2)进行步骤S103以后的处理。此外,在对切片(2)也进行了同样的判定的情况下,接着,将切片(I)设定为切片i。
[0173]图10是表示图片360的图。图片360包括5个切片361?365。切片361是通常切片,包含第I行整体。切片362是依存切片,包括第2行整体。第3行包括依存切片363及切片364。切片365是依存切片,包括第4行整体。
[0174]以下,在切片364丢失的情况、或切片364延迟的情况下,对切片364是依存切片的情况及切片364是通常切片的情况下的各情形进行讨论。此外,这里切片363至少具有两个LCU。
[0175]在切片364丢失的情况下,图像解码装置不能判别切
当前第2页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1