具体实施方式
本发明实施例中,在编码端获取当前编码帧对应的图像头参数后,则可以将所述图像头参数编码写入当前编码帧的条带中进行传输,以使得解码端能够在图像头丢失或出错的情况下,若条带数据正确接收,则仍可以获得相应的图像头参数,以进行后续解码处理。
在上述处理过程中,还可以在当前编码帧的条带中写入相应的第一参数标志,通过该第一参数标志可以表示在该条带中是否包含图像头参数,以便于指示解码端进行条带中的图像头参数的解码操作。
本发明实施例中,还可以将相应的图像头参数中的一部分写入当前编码帧的条带中,另一部分图像头参数则写入当前编码帧的图像头中;其中,相应的写入当前编码帧的图像头中的图像头参数可以为连续多帧能够共用的图像头参数,从使得在图像头丢失或出错的情况下,可以通过其他帧已经解码获得的相应的图像头参数作为该图像头中的图像头参数,相应的写入当前编码帧的条带中的图像头参数可以为当前编码帧独有的图像头参数,该图像头参数的正确解码获得则可以保证能够解码获得准确的视频图像。
在上述处理过程中,还可以在当前编码帧的图像头中写入第二参数标志,通过该第二参数标志可以表示在该图像头中是否包含所述图像头参数,以指示解码端进行该图像头参数的解码操作。
进一步地,在编码端发送的码流的信息具体可以包括:
(1)在码流的条带头中设置第一参数标志,该标志用于表示该条带中是否存在图像头参数;如果该参数标志位指示该条带中存在图像头参数,则在码流的所述条带的头部区域通过码流符号的设置承载图像头参数的子集(即图像头参数中的一部分)或者完整的图像头参数,否则,该条带中不承载图像头参数;
(2)在码流的图像头中设置第二参数标志,该标志用于表示该图像头中是含有完整的图像头参数还是仅包含图像头参数的子集;如果该参数分类标志位指示图像头区域只含有图像头参数的子集,则该区域的码流只含有图像头参数的一部分,图像头参数的其余部分存在于相应的条带头区域中,否则,该图像头区域将包含该图像头的全部图像头参数。
前面对本发明实施例提供的编码端的编码过程进行了描述,下面将对相应的解码端的解码过程进行描述。
在解码端接收编码端发来的编码码流后,则从码流中的当前解码帧的条带中解析获取当前解码帧对应的图像头参数,以便于根据该图像头参数进行相应的视频解码操作。
进一步地,若编码端在码流中写入了第一参数标志,则在获取当前解码帧对应的图像头参数之前,需要解码当前解码帧的条带中的第一参数标志,并在根据当前解码帧的条带中的第一参数标志确定该条带中包含所述图像头参数时,则从该条带中解析获取当前解码帧对应的图像头参数。
在解码端,若从当前解码帧的条带中获取的图像头参数为当前解码帧的部分图像头参数,则可以从当前解码帧的图像头中解析获取另一部分图像头参数;
具体地,可以在根据当前编码帧的图像头中的第二参数标志确定在该图像头中包含图像头参数时,则从当前解码帧的图像头中解析获取另一部分图像头参数。
相应的,在解码端,若当前解码帧的图像头丢失或出错,则可以采用之前已经解码的其他帧的图像头中的图像头参数作为当前解码帧的图像头中的图像头参数,从而提高编解码系统的抗差错性能,改善解码性能。进一步地,在解码接收到的码流的过程中,若在完成一帧解码之后,解析获得条带起始码之前未找到图像头的起始码,则可以认为当前解码帧的图像头丢失。
在实际应用过程中,进一步地,本发明实施例可以在码流的图像头中写入一个标志符号,用于标记该图像头中是包含完整的图像头参数,若该标志符号指示未包含完整的图像头参数(此时,可能包含部分的图像头参数,也可能未包含图像头参数),则在码流中的该图像头区域设置部分图像头参数或不设置图像头参数,其余部分的图像头参数或完整的图像头参数(即图像头中不设置图像头参数)设置于条带头区域中。本发明实施例还可以在码流的条带头中写入一个标志符号,用于标记该条带中是否包含图像头参数,且若该标志符号指示包含图像头参数,则在码流中该条带的头部区域中设置完整的图像头参数或部分的图像头参数。
可见,本发明实施例的实现可以提高码流的抗图像头丢失能力,使得在某帧的图像头丢失的情况下,仍能解码出该帧所接收到的条带数据,进而获得相应的图像头参数,保证解码过程的正常进行。
为便于对本发明实施例的理解,下面将对本发明实施例的具体实现过程进行详细描述。
(一)编码端
在编码端,如图1所示,具体采用的图像头参数的编码处理过程可以包括以下步骤:
步骤101,对当前编码图像对应的图像头的各个参数进行分类;
即根据图像头参数在各帧之间的变化频度,对当前编码图像对应的图像头的各个参数进行分类;
进一步地,具体可以包括:
(1)如果参数在每一帧都不一样或者经常变化(如在若干帧之后发生变化),则将该类参数称为第一类图像头参数,该第一类图像头参数是解码端正确解码所必需的参数;
(2)如果参数在各帧之间变化不频繁(变化频率小于某预定值或连续多帧相同的图像头参数),即该参数的变化不会影响解码端的解码性能,则将该类参数称为第二类图像头参数,对于第二类图像头参数,其在解码端可以使用前面已正确接收帧的图像头中的对应参数值来代替当前帧参数进行解码,且能够正确解码。
上述两类图像头参数中,每一类参数个数分别为m和n个,且m和n分别是大于或等于1的自然数。
步骤102,根据当前编码图像对应的图像头的参数的类型进行编码操作,获得编码码流;
即根据针对图像头参数的分类结果将变化频度低的图像头参数编码写入图像头中,将变化频度高的图像头参数写入条带中;
具体可以在图像头中设置一个第二参数标志,以表示图像头中的参数是否为完整的图像头参数;例如,该标志位具体可以包括两个值,其中一个值用于表示该帧的图像头包含完整的图像头参数,另一个值表示该帧的图像头仅包含完整图像头的第二类图像头参数,对于图像头的第一类图像头参数则承载在该帧的分割后的区域中,该分割后的区域称为条带;
在条带起始码之后,也可以设置一个第一参数标志,用于表示该条带中是否包含有图像头的第一类图像头参数;例如,该标志位具体可以包括两个值,其中一个值表示该条带的头部分含有图像头的第一类图像头参数,即若码流中的条带的参数标志位为该值,则在条带头区域将会写入该帧的第一类图像头参数,另一个值表示该条带中未包含图像头的参数信息。
步骤103,在完成编码操作后,可以发送编码获得的码流,相应的码流将通过传输网络发送给解码端;
所述码流也可以用于本地存储,通过可移动存储介质送到解码端。
(二)解码端
在解码端,仍参照图1所示,相应的解码处理过程中解码获得相应的图像头参数的具体实现过程可以包括:
步骤104,接收编码端发送来的经过压缩和传输后的视频码流;
步骤105,解析码流中的图像头数据,获得图像头参数;
具体可以包括:获取图像头中的第二参数标志,若该参数分类标志表示该图像头中包含完整的图像头参数,则直接从图像头中解析获得完整的图像头参数,否则,从图像头中解析获得部分图像头参数;其中,图像头中包含的图像头参数为相应的第二类图像头参数;
步骤106,解析条带头数据,获得图像头参数;
具体可以包括:获取条带头中的第一参数标志,若该参数标志表示该条带头包含图像头参数,则从该条带头中解析获得相应的图像头参数,否则,使用已解析得到的图像头参数作为解码过程中需要的图像头参数。
经过上述处理过程,便可以准确地获得解码过程中需要的图像头参数,进而解码得到相应的解码图像。
下面将结合具体的实施例对本发明实施例的应用进行详细说明。
实施例一
在该实施例一中,编码端正常编码一帧完毕后,组装码流时,对数字音视频编解码技术标准(AVS)的图像头参数进行分类,其中,相应的第一类图像头参数包括:
picture_coding_type u(2),图像编码类型;
picture_distance u(8),图像间距;
progressive_frame u(1)逐行帧标志;
if(progressive_frame==′0′)
picture_structure u(1)图像编码结构标志;
top_field_first u(1)顶场在先;
repeat_first_field u(1)重复首场;
skip_mode_flag u(1)宏块跳过模式;
if(!(picture_coding_type==′10′&&PictureStructure==1))
picture_reference_flag u(1)图像参考标志;
其它图像头参数则为第二类图像头参数;
为使得本发明实施例可以与其他技术兼容,可以在图像头中增加1bit的图像头标志位part_pic_header_enable作为第二参数标志,用于指示在编码过程中是否采用了本发明实施例提供的分类传递图像头参数的机制,例如,可以设置为该标志位为0时表示码流结构未采用本发明实施例提供的分类方式进行图像头参数的传递;该标志位为1时表示使用相应的分类传递图像头参数的机制,即此时,在图像头码流中只含有第二类图像头参数,而将图像头参数中的第一类图像头参数写入各个条带头中。
同样地,在条带(Slice)的起始码之后,还增加1bit图像头参数存在标志位part_pic_header_exist作为第一参数标志,用于标记该条带是否含有原图像头的一部分图像头参数,例如,可以为设置该标志位为0时表示未包含相应的图像头参数,若设置1则表示将必需的图像头参数nec_part(即第一类图像头参数)的数据写入到该标志位之后的部分。
在该实施例一中,解码端接收经过压缩和传输后的视频码流后,则可以根据图像头标志位part_pic_header_enable判断图像头参数存在的位置,若为0则相应的图像头参数均在图像头码流中,解析图像头数据即可得到完整的图像头参数,如果为1则解码图像头码流后得到非必要的图像头参数unnec_part,即可以通过其他解码帧得到的第二类图像头参数。
判断条带中的part_pic_header_exist标志位,若为1,则解码该条带中的nec_part类原图像头部分中的图像头参数,与从图像头中得到的图像头参数一起组成完整的图像头参数。
获得完整的图像头参数后便可以使用已解析得到的图像头参数执行正常解码条带中的其它数据的操作,进而得到相应的解码图像。
可见,该实施例可以通过在码流中写入视频图像的关键区域宏块的冗余运动矢量信息(即图像头中的第二类图像头参数),以提高视频序列关键区域的抗丢包能力,从而保证相应的关键区域在不同网络传输条件下的主观质量。
实施例二
在本实施例二中,在编码端,具体可以将所有的图像头参数均设置于条带中,即可以去掉原有的图像头中承载图像头参数的区域,以使得每个条带都含有图像头中的主要参数(即必需的图像头参数),其中,对于诸如图像起始码等不重要的参数则可以忽略而不进行传输。
相应的,在编码端编码完毕并组织码流时,则可以在条带Slice的起始码之后,增加1bit标志位pic_header_xist,用于标记该条带中是否含有原图像头完整数据(即完整的图像头参数),例如,可以设置为当其值为0时,表示条带头结构不包含相应的完整的图像头参数,若其值为1,则表示在该标志位之后包含有原图像头对应的完整的图像头参数。
若组织码流过程中,相应的标志位指示需要在条带中写入所述完整的图像头参数,则在条带头区域写入该帧完整的图像头参数。并在组装完成该条带的其它编码数据后发送编码码流。
在该实施例二的解码端接收经过压缩和传输后的视频码流后,判断条带中的pic_header_exist标志位的值,若为1,则解码该条带中图像头内容,获得相应的完整的图像头参数,若为0,则无法从该条带头中获得完整的图像头参数,具体可以从图像头中获得相应的图像头参数,或者,通过其他方式获得相应的图像头参数。
在获得相应的完整的图像头参数后,便可以正常解码条带中的其它数据,进而解码得到相应的解码图像。
实施例三
在该实施例三中,提供了在图像头丢失的情况下,解码端采用的处理方式,如图2所示,相应的详细处理过程可以包括:
步骤201,接收一段视频经过压缩编码及传输的码流;
步骤202,按照码流的顺序搜寻码流,在码流中寻找I帧、PB帧的图像头起始码或者条带的起始码,如果在找到条带之前找到了I或PB帧对应的图像头起始码,则确定该帧图像头未丢失,且已被正确接收,此时,可以使用已接收到的图像头正常解码该帧,否则,执行步骤203;
步骤203,若在找到条带起始码之前未能找到相应的图像头起始码,则判断该帧图像头丢失,并执行步骤204;
步骤204,在确定图像头丢失后,则需要判断条带中的pic_header_exist标志位或part_pic_header_exist标志位的值,若为1,则表示在该条带中包含图像头参数,则可以解码该条带中图像头参数,并执行步骤205;
步骤205,根据条带中图像头参数解码获得该帧的完整的图像头参数后,则使用解析得到相应的图像头参数正常解码条带中的其它数据,进而解码获得相应的解码图像;
进一步地,该步骤可以为:若相应的pic_header_exist标志位为1,则直接从该条带中解码获得该帧的完整的图像头参数;若相应的part_pic_header_exist标志位为1,则从该条带中解码获得该帧的部分的图像头参数,并将该部分的图像头参数与从其他帧已经解码获得的图像头中的图像头参数合并作为完整的图像头参数。
本发明实施例还提供了一种编码装置,其具体实现结构如图1所示,主要包括以下处理单元:
图像头参数获取单元,用于获取当前编码帧对应的图像头参数;
条带编码单元,用于将所述图像头参数获取单元获取的图像头参数编码写入当前编码帧的条带中,获得编码码流。
可选地,该条带编码单元还可以包括第一标志写入单元,用于在当前编码帧的条带中写入第一参数标志,通过该第一参数标志可以表示在该条带中是否包含所述图像头参数。
在该编码装置中,还可以包括图像头编码单元,用于在写入当前编码帧的条带中的图像头参数为当前编码帧的部分图像头参数时,将图像头参数中的另一部分编码写入当前编码帧的图像头中,并传输。
可选地,在该图像头编码单元中还可以包括第二标志写入单元,用于在当前编码帧的图像头中写入第二参数标志,用于表示在该图像头中是否包含所述图像头参数。
可选地,在该图像头编码单元中,写入当前编码帧的图像头中的图像头参数为连续多帧能够共用的图像头参数;在所述条带编码单元中,写入当前编码帧的条带中的图像头参数为当前编码帧独有的图像头参数。
对应的,本发明实施例还提供了一种解码装置,其具体实现结构仍如图1所示,具体可以包括以下单元:
码流输入单元,用于获得编码码流;
条带解码单元,用于从所述码流输入单元得到的码流中的当前解码帧的条带中解析获取当前解码帧对应的图像头参数,并根据该图像头参数进行解码操作;其中,该条带解码单元中还可以包括第一标志解码单元,用于在根据当前解码帧的条带中的第一参数标志确定该条带中是否包含所述图像头参数时,从该条带中解析获取当前解码帧对应的图像头参数。
在该装置中,还可以包括图像头解码单元,用于在从当前解码帧的条带中获取的图像头参数为当前解码帧的部分图像头参数时,从所述码流输入单元得到的码流中的当前解码帧的图像头中解析获取另一部分图像头参数。
可选地,该图像头解码单元还可以包括第二标志解码单元,用于在根据当前编码帧的图像头中的第二参数标志确定在该图像头中包含图像头参数时,从当前解码帧的图像头中解析获取另一部分图像头参数。
可选地,在该装置中还可以包括差错处理单元,用于在当前解码帧的图像头丢失或出错时,采用之前已经解码的其他帧的图像头中的图像头参数作为当前解码帧的图像头中的图像头参数。进一步地,该装置还可以包括图像头丢失识别单元,用于在解码接收到的码流的过程中,若在完成一帧解码之后,解析获得条带起始码之前未找到图像头的起始码,则确认当前解码帧的图像头丢失。
上述各本发明实施例可以适用于多组待传输数据之间存在一定相同的视频信息的视频数据传输环境中,如视频监控中的数据传输等。
综上所述,本发明实施例中,由于每个条带能够不完全依靠图像头而独立解码,因而可以使得在出现传输差错的信道下,即使图像头数据包丢失,也能在一定程度上解码该帧中正确接收到的条带数据,进而解码相应的帧,提高了编解码系统的抗差错性能。总之,本发明实施例可以在编码性能下降较小的情况下,有效提高有传输差错时的视频解码质量,增加正确解码的帧数,从而提高视频序列经过压缩传输后,在解码端的显示主观质量,一帧中含有的条带越多,效果逐步明显。
通过以上的实施方式的描述,本领域的普通技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以编写成计算机可执行程序,计算机设备通过执行该程序可以实现本发明提供的方法。该计算机可执行程序可以存储在非易失性存储介质中(包括CD-ROM、U盘、移动硬盘等)。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。