一种视频图像无损编解码方法及系统转让专利

申请号 : CN202011045011.3

文献号 : CN111935483B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 范文一

申请人 : 北京泽塔云科技股份有限公司

摘要 :

本发明涉及一种视频图像无损编解码方法,包括:S1:将原始视频图像拆分为大小相等的两个初始采样图像,其中通过对原始视频图像进行下采样得到第一初始采样图像,并利用所述第一初始采样图像丢失的图像信息生成第二初始采样图像;S2:使用硬件编码器对两个初始采样图像进行编码、发送;S3:使用硬件解码器对接收的编码结果进行解码,得到两个解码采样图像;S4:将两个解码采样图像重新组合还原,生成无损色彩空间图像。本发明还涉及一种视频图像无损编解码系统。本发明通过一定的算法和架构,使得视频的编解码过程既可以利用硬件编解码器,也可以实现无损色域,进而在远程图形传输协议中,可实现超低延迟的传输同时具备无损色彩、高帧率的特性。

权利要求 :

1.一种视频图像无损编解码方法,其特征在于,包括:S1:将原始视频图像拆分为大小相等的两个初始采样图像,其中通过对原始视频图像进行下采样得到第一初始采样图像,并利用所述第一初始采样图像丢失的图像信息生成第二初始采样图像;

S2:使用硬件编码器对两个初始采样图像进行编码、发送;

S3:使用硬件解码器对接收的编码结果进行解码,得到两个解码采样图像;

S4:将两个解码采样图像重新组合还原,生成无损色彩空间图像;

所述步骤S1中是基于YUV格式对原始视频图像进行拆分,将YUV444格式的原始视频图像拆分为YUV420格式的两个初始采样图像,其中通过对原始视频图像的U和V分量进行下采样得到第一初始采样图像,并将所述第一初始采样图像丢失的U和V分量信息存放到第二初始采样图像的Y、U、V分量中以生成第二初始采样图像。

2.根据权利要求1所述的视频图像无损编解码方法,其特征在于,所述步骤S2中,将两个初始采样图像分别输入硬件编码器的两路编码上下文,得到分离的两个编码结果;以及所述步骤S3中,所述硬件解码器也使用两路解码上下文对两个编码结果分别解码以得到两个解码采样图像。

3.根据权利要求1所述的视频图像无损编解码方法,其特征在于,所述步骤S2中,将两个初始采样图像合成为一个双倍宽度或高度的合成图像,再将所述合成图像输入硬件编码器的一路编码上下文中进行编码,得到一个编码结果;以及所述步骤S3中,所述硬件解码器仅使用一路解码器上下文对所述一个编码结果进行解码,然后将解码结果分离以得到两个解码采样图像。

4.根据权利要求1所述的视频图像无损编解码方法,其特征在于,所述步骤S1包括以下子步骤:假设原始空间图像为i,其高度为H,宽度为W,所述两个初始采样图像分别为a和b,YUV格式的图像中Y分量为亮度,U分量为色度,V分量为浓度,x和y分别为矩阵横坐标和纵坐标,则转换算法如下:对于图像a:

Ya(xY,yY)=Yi(xY,yY)

其中,xY值域为[0,W-1],yY值域为[0,H-1];

Ua(xU,yU)=Ui(2xU,2yU)

其中,xU值域为[0,W/2-1],yU值域为[0,H/2-1];

Va(xV,yV)=Vi(2xV,2yV)

其中,xV值域为[0,W/2-1],yV值域为[0,H/2-1];

对于图像b:

Yb(xY,yY)=Ui(xY,2yY+1)

Yb(xY,H/2+yY)=Vi(xY,2yY+1)其中,xY值域为[0,W-1],yY值域为[0,H/2-1];

Ub(xU,yU)=Ui(2xU+1,4yU)Ub(xU,H/4+yU)=Vi(2xU+1,4yU)Vb(xV,yV)=Ui(2xV+1,4yV+2)Vb(xV,H/4+yV)=Vi(2xV+1,4yV+2)其中,xU和xV值域为[0,W/2-1],yU和yV值域为[0,H/4-1]。

5.根据权利要求4所述的视频图像无损编解码方法,其特征在于,所述步骤S4中,通过以下逆转换算法将两个解码采样图像重新组合还原:假设所述解码后的空间图像为i’,其高度为H,宽度为W,所述两个解码后的采样图像分别为a’和b’,对于图像a’:

Yi’(xY’,yY’)=Ya’(xY’,yY’)其中,xY’值域为[0,W-1],yY’值域为[0,H-1];

Ui’(2xU’,2yU’)=Ua’(xU’,yU’)其中,xU’值域为[0,W/2-1],yU’值域为[0,H/2-1];

Vi’(2xV’,2yV’)=Va’(xV’,yV’)其中,xV’值域为[0,W/2-1],yV’值域为[0,H/2-1];

对于图像b’:

Ui’(xU’,2yU’+1)=Yb’(xU’,yU’)Vi’(xV’,2yV’+1)=Yb’(xV’,H/2+yV’)其中,xU’和xV’值域为[0,W-1],yU’和yV’值域为[0,H/2-1];

Ui’(2xU’+1,4yU’)=Ub’(xU’,yU’)Vi’(2xV’+1,4yV’)=Ub’(xV’,H/4+yV’)Ui’(2xU’+1,4yU’+2)=Vb’(xU’,yU’)Vi’(2xV’+1,4yV’+2)=Vb’(xV’,H/4+yV’)其中,xU’和xV’值域为[0,W/2-1],yU’和yV’值域为[0,H/4-1]。

6.根据权利要求1所述的视频图像无损编解码方法,其特征在于,所述方法是基于CUDA框架或OpenCL框架的interop互操作方式实现的。

7.一种用于实现权利要求1-6中任一权利要求所述视频图像无损编解码方法的视频图像编码系统,其特征在于,包括:图像转换装置,用于将原始视频图像拆分为大小相等的两个初始采样图像,其中通过对原始视频图像进行下采样得到第一初始采样图像,并利用所述第一初始采样图像丢失的图像信息生成第二初始采样图像;

硬件编码器,用于对两个初始采样图像进行编码、发送;其中所述图像转换装置是基于YUV格式对原始视频图像进行拆分,将YUV444格式的原始视频图像拆分为YUV420格式的两个初始采样图像,其中通过对原始视频图像的U和V分量进行下采样得到第一初始采样图像,并将所述第一初始采样图像丢失的U和V分量信息存放到第二初始采样图像的Y、U、V分量中以生成第二初始采样图像。

8.一种用于实现权利要求1-6中任一权利要求所述视频图像无损编解码方法的视频图像解码系统,其特征在于,包括:硬件解码器,用于对接收的编码结果进行解码,得到两个解码采样图像;

图像还原装置,用于将两个解码采样图像重新组合还原,生成无损色彩空间图像。

9.一种视频图像无损编解码系统,其特征在于,包括:图像转换装置,用于将原始视频图像拆分为大小相等的两个初始采样图像,其中通过对原始视频图像进行下采样得到第一初始采样图像,并利用所述第一初始采样图像丢失的图像信息生成第二初始采样图像;

硬件编码器,用于对两个初始采样图像进行编码、发送;

硬件解码器,用于对接收的编码结果进行解码,得到两个解码采样图像;

图像还原装置,用于将两个解码采样图像重新组合还原,生成无损色彩空间图像;其中所述图像转换装置是基于YUV格式对原始视频图像进行拆分,将YUV444格式的原始视频图像拆分为YUV420格式的两个初始采样图像,其中通过对原始视频图像的U和V分量进行下采样得到第一初始采样图像,并将所述第一初始采样图像丢失的U和V分量信息存放到第二初始采样图像的Y、U、V分量中以生成第二初始采样图像。

说明书 :

一种视频图像无损编解码方法及系统

技术领域

[0001] 本发明涉及视频编解码领域,尤其涉及一种视频图像无损编解码方法及系统。

背景技术

[0002] 视频编码技术在众多行业具有非常广泛的用途,例如影视、动画、电视台、媒体等。视频编码技术可将原始视频数据量大大缩小,而保持人眼可接受的清晰度。视频编码技术发展之初主要用于狭义上的视频领域,随着云计算技术的发展,视频编码技术在虚拟桌面的远程图形传输协议中得到广泛应用,可有效提升远程桌面图形体验。
[0003] 在虚拟桌面架构中,远程图形传输协议十分重要。而随着GPU虚拟化技术的发展,远程图形传输协议可以使用GPU内置的硬件编解码器提升图形的帧率,减少编解码延迟,提升用户体验。
[0004] 随着流媒体、影视等行业的发展,高清晰度的视频在使用CPU进行编解码时通常会带来很高的CPU使用率,影响计算机的性能。为了解决CPU编解码能力较弱的问题,GPU厂商推出了集成在GPU内部的硬件编解码器,有效解决了这个问题。GPU内置的硬件编解码器通常为独立的ASIC芯片,例如NVIDIA的NVENC/NVDEC、AMD的VCE、Intel的QuickSync。
[0005] 由于硬件视频编解码器设计初衷是针对视频应用领域,大部分场景使用有损色域格式即可满足人眼的观看需求,同时可以节约存储空间或网络流量。所以目前GPU中主流硬件编解码器均只支持有损色域编解码方式,即YUV420/NV12/YUV422等格式。而在虚拟桌面架构中,为了实现低延迟的远程图形传输协议,需要在服务器端使用硬件编码,客户端使用硬件解码。远程桌面获得的源图像通常为RGB或YUV444等格式。针对一些专业场景,需要精确的色彩显示,此时需要使用无损的色彩空间YUV444色彩空间或RGB色彩空间,由于硬件格式与需求格式不一致,无法直接利用硬件编解码器。业内通常使用的方法是将源图像色彩空间进行下采样,例如将YUV444转换为NV12格式,进行有损色域的硬件编解码。而在对色彩精度有极高要求的专业场景,只能利用CPU进行编解码操作,会极大的引入延迟,影响图形帧率,客户体验难以接受。

发明内容

[0006] 本发明的发明目的在于提供一种视频图像无损编解码方法及系统,以解决不具备无损色域处理能力的硬件编码器无法实现无损色域编解码的问题。
[0007] 本发明提供一种视频图像无损编解码方法,包括:
[0008] S1:将原始视频图像拆分为大小相等的两个初始采样图像,其中通过对原始视频图像进行下采样得到第一初始采样图像,并利用所述第一初始采样图像丢失的图像信息生成第二初始采样图像;
[0009] S2:使用硬件编码器对两个初始采样图像进行编码、发送;
[0010] S3:使用硬件解码器对接收的编码结果进行解码,得到两个解码采样图像;
[0011] S4:将两个解码采样图像重新组合还原,生成无损色彩空间图像。
[0012] 更进一步的,所述步骤S2中,将两个初始采样图像分别输入硬件编码器的两路编码上下文,得到分离的两个编码结果;以及
[0013] 所述步骤S3中,所述硬件解码器也使用两路解码上下文对两个编码结果分别解码以得到两个解码采样图像。
[0014] 更进一步的,所述步骤S2中,将两个初始采样图像合成为一个双倍宽度或高度的合成图像,再将所述合成图像输入硬件编码器的一路编码上下文中进行编码,得到一个编码结果;以及
[0015] 所述步骤S3中,所述硬件解码器仅使用一路解码器上下文对所述一个编码结果进行解码,然后将解码结果分离以得到两个解码采样图像。
[0016] 更进一步的,所述步骤S1中,基于YUV格式对原始视频图像进行拆分,将YUV444格式的原始视频图像拆分为YUV420格式的两个初始采样图像。
[0017] 更进一步的,所述步骤S1包括以下子步骤:
[0018] 假设所述原始空间图像为i,其高度为H,宽度为W,所述两个初始采样图像分别为a和b,YUV格式的图像中Y分量为亮度,U分量为色度,V分量为浓度,x和y分别为矩阵横坐标和纵坐标,则转换算法如下:
[0019] 对于图像a:
[0020] Ya(xY,yY)=Yi(xY,yY)
[0021] 其中,xY值域为[0,W-1],yY值域为[0,H-1];
[0022] Ua(xU,yU)=Ui(2xU,2yU)
[0023] 其中,xU值域为[0,W/2-1],yU值域为[0,H/2-1];
[0024] Va(xV,yV)=Vi(2xV,2yV)
[0025] 其中,xV值域为[0,W/2-1],yV值域为[0,H/2-1];
[0026] 对于图像b:
[0027] Yb(xY,yY)=Ui(xY,2yY+1)
[0028] Yb(xY,H/2+yY)=Vi(xY,2yY+1)
[0029] 其中,xY值域为[0,W-1],yY值域为[0,H/2-1];
[0030] Ub(xU,yU)=Ui(2xU+1,4yU)
[0031] Ub(xU,H/4+yU)=Vi(2xU+1,4yU)
[0032] Vb(xV,yV)=Ui(2xV+1,4yV+2)
[0033] Vb(xV,H/4+yV)=Vi(2xV+1,4yV+2)
[0034] 其中,xU和xV值域为[0,W/2-1],yU和yV值域为[0,H/4-1]。
[0035] 更进一步的,所述步骤S4中,通过以下逆转换算法将两个解码采样图像重新组合还原:
[0036] 假设所述解码后的空间图像为i’,其高度为H,宽度为W,所述两个解码后的采样图像分别为a’和b’,
[0037] 对于图像a’:
[0038] Yi’(xY’,yY’)=Ya’(xY’,yY’)
[0039] 其中,xY’值域为[0,W-1],yY’值域为[0,H-1];
[0040] Ui’(2xU’,2yU’)=Ua’(xU’,yU’)
[0041] 其中,xU’值域为[0,W/2-1],yU’值域为[0,H/2-1];
[0042] Vi’(2xV’,2yV’)=Va’(xV’,yV’)
[0043] 其中,xV’值域为[0,W/2-1],yV’值域为[0,H/2-1];
[0044] 对于图像b’:
[0045] Ui’(xU’,2yU’+1)=Yb’(xU’,yU’)
[0046] Vi’(xV’,2yV’+1)=Yb’(xV’,H/2+yV’)
[0047] 其中,xU’和xV’值域为[0,W-1],yU’和yV’值域为[0,H/2-1];
[0048] Ui’(2xU’+1,4yU’)=Ub’(xU’,yU’)
[0049] Vi’(2xV’+1,4yV’)=Ub’(xV’,H/4+yV’)
[0050] Ui’(2xU’+1,4yU’+2)=Vb’(xU’,yU’)
[0051] Vi’(2xV’+1,4yV’+2)=Vb’(xV’,H/4+yV’)
[0052] 其中,xU’和xV’值域为[0,W/2-1],yU’和yV’值域为[0,H/4-1]。
[0053] 更进一步的,所述方法是基于CUDA框架或OpenCL框架的interop互操作方式实现的。
[0054] 本发明的另一目的是提供一种视频图像无损编解码系统,包括:
[0055] 图像转换装置,用于将原始视频图像拆分为大小相等的两个初始采样图像,其中通过对原始视频图像进行下采样得到第一初始采样图像,并利用所述第一初始采样图像丢失的图像信息生成第二初始采样图像;
[0056] 硬件编码器,用于对两个初始采样图像进行编码、发送;
[0057] 硬件解码器,用于对接收的编码结果进行解码,得到两个解码采样图像;
[0058] 图像还原装置,用于将两个解码采样图像重新组合还原,生成无损色彩空间图像。
[0059] 另外,本发明还提供了一种用于实现权利要求1-7所述视频图像无损编解码方法的视频图像编码系统,包括:
[0060] 图像转换装置,用于将原始视频图像拆分为大小相等的两个初始采样图像,其中通过对原始视频图像进行下采样得到第一初始采样图像,并利用所述第一初始采样图像丢失的图像信息生成第二初始采样图像;
[0061] 硬件编码器,用于对两个初始采样图像进行编码、发送。
[0062] 另外,本发明还提供了一种用于实现权利要求1-7所述视频图像无损编解码方法的视频图像解码系统,包括:
[0063] 硬件解码器,用于对接收的编码结果进行解码,得到两个解码采样图像;
[0064] 图像还原装置,用于将两个解码采样图像重新组合还原,生成无损色彩空间图像。
[0065] 与现有技术相比,本发明的有益效果是通过一定的算法和架构,使得视频的编解码过程既可以利用硬件编解码器,也可以实现无损色域,进而在远程图形传输协议中,可实现超低延迟的传输同时具备无损色彩、高帧率的特性。这使得利用GPU虚拟化技术的虚拟桌面架构可以满足绝大部分的行业客户。真正做到与本地工作站或PC机一致的使用体验,减少使用虚拟桌面架构带来的体验退化问题,使得虚拟桌面架构可以进一步提高用户的生产力。

附图说明

[0066] 图1为本发明的一种视频图像无损编解码方法流程图;
[0067] 图2为本发明的一种视频图像无损编解码方法详细流程图;
[0068] 图3为本发明的一种视频图像无损编解码系统流程示例图;
[0069] 图4为本发明的一种视频图像无损编解码系统流程示例图;
[0070] 图5为本发明的一种视频图像无损编解码系统流程示例图。

具体实施方式

[0071] 下面将结合附图以及实施例对本发明做更进一步详细的解释说明,需要说明的是,但应当说明的是,这些实施方式并非对本发明的限制,本领域普通技术人员根据这些实施方式所作的功能、方法、或者结构上的等效变换或替代,均属于本发明的保护范围之内。
[0072] 如图1所示,为本发明的一种视频图像无损编解码方法流程图,本方法包括:
[0073] S1:将原始视频图像拆分为大小相等的两个初始采样图像,其中通过对原始视频图像进行下采样得到第一初始采样图像,并利用所述第一初始采样图像丢失的图像信息生成第二初始采样图像;
[0074] S2:使用硬件编码器对两个初始采样图像进行编码、发送;
[0075] S3:使用硬件解码器对接收的编码结果进行解码,得到两个解码采样图像;
[0076] S4:将两个解码采样图像重新组合还原,生成无损色彩空间图像。
[0077] 本方法通过一定的算法和架构,使得不具备无损色域处理能力的硬件编解码器,可以实现无损色域的编解码能力,而无需修改硬件。
[0078] 通过使用CUDA和OpenCL等通用GPU计算框架,在GPU内部以内部互操作(interop)的方式完成图形的计算、转换、编码和解码的操作过程。内部互操作是指GPU的不同接口类型(例如CUDA接口和NVENC接口之间、CUDA接口和DirectX接口之间)之间的互操作,通过内部互操作,可以将数据在GPU的不同接口之间直接进行计算,全过程无CPU的干预,避免了大量数据在内存和显存之间拷贝,进而编解码的性能得以保障。
[0079] 如图2所示,为本发明的一种视频图像无损编解码方法详细流程图。下面将结合图2对每个方法步骤做详细的描述。
[0080] 在所述步骤S1中,将原始空间图像拷贝至GPU帧缓存区域,使用转换算法将原始视频图像拆分为大小相等的两个初始采样图像,其中通过对原始视频图像进行下采样得到第一初始采样图像,并利用所述第一初始采样图像丢失的图像信息生成第二初始采样图像。
[0081] 此处,本发明的原理是使用转换算法φ将原始的YUV4:4:4无损色彩空间图像i转换为等价的两个YUV4:2:0采样格式的图像a和b,此种格式的图像为可被硬件编码器接受的YUV420/NV12格式。具体是指基于YUV格式对原始视频图像进行转换,对原始视频图像的色彩分量进行下采样得到一个初始采样图像,将所述下采样丢失的分量信息分别存放到另一个初始采样图像的各个分量中。本方法中转换算法的设计满足硬件编码器的算法需要,例如针对H.264和H.265等编码格式会区分I帧、P帧和B帧。编码算法可根据相邻图像的变化量进行编码,得到P帧和B帧,也可以根据单个图像帧的内部特征进行压缩。所以转换算法需要使得转换结果 a 和 b 尽可能保留原始图像 i 的特征,使得编码算法可以有效压缩输入图像,提高编码质量。以YUV格式为例,转换算法φ的计算过程如下:
[0082] 对于图像a:
[0083] Ya(xY,yY)=Yi(xY,yY)
[0084] 其中,xY值域为[0,W-1],yY值域为[0,H-1];
[0085] Ua(xU,yU)=Ui(2xU,2yU)
[0086] 其中,xU值域为[0,W/2-1],yU值域为[0,H/2-1];
[0087] Va(xV,yV)=Vi(2xV,2yV)
[0088] 其中,xV值域为[0,W/2-1],yV值域为[0,H/2-1];
[0089] 对于图像b:
[0090] Yb(xY,yY)=Ui(xY,2yY+1)
[0091] Yb(xY,H/2+yY)=Vi(xY,2yY+1)
[0092] 其中,xY值域为[0,W-1],yY值域为[0,H/2-1];
[0093] Ub(xU,yU)=Ui(2xU+1,4yU)
[0094] Ub(xU,H/4+yU)=Vi(2xU+1,4yU)
[0095] Vb(xV,yV)=Ui(2xV+1,4yV+2)
[0096] Vb(xV,H/4+yV)=Vi(2xV+1,4yV+2)
[0097] 其中,xU和xV值域为[0,W/2-1],yU和yV值域为[0,H/4-1]。
[0098] 上述转换算法的算式中,Y分量代表亮度,U分量和V分量为色彩分量,转换算法实际上是对YUV各分量的矩阵运算。设原始图像 i 的高度为H,宽度为W,矩阵坐标从0开始,设为(x, y),YUV分量角标代表对应图像的分量,例如Ya代表图像a的Y分量。
[0099] 至此,可得到等价的两个初始采样图像a和b,然后通过步骤S2使用硬件编码器对两个初始采样图像进行编码,得到编码结果进行发送。
[0100] 在所述步骤S2中,需先设定编码器的编码参数,对编码器进行初始化,然后使用硬件编码器对图像a和b同时进行编码操作,通过interop内部互操作方式将图像a和b分别输入编码器的两路编码上下文中,得到编码后的数据结果c。然后使用远程图形传输协议或其他方式通过以太网发送数据结果c。若将编码过程记作E,则有:c=E(φ(i)),其中φ(i)=a+b。
[0101] 在所述步骤S3中,使用硬件解码器对接收的编码结果进行解码,得到解码后的两个采样图像。客户端首先初始化解码器参数并创建解码器的实例,设置解码输出结果的位置为某一个分配的显存,然后进行解码过程,得到解码后的图像a’和b’,若将解码过程记作D,则有:i’=φ(D(c)),其中D(c)=a’+b’。
[0102] 在所述步骤S4中,使用转换算法的逆算法将解码后的两个采样图像重新组合还原,生成解码后的无损色彩空间图像。
[0103] 本步骤中所述转换算法的逆算法记为φ’,与转换算法原理相同,且逆算法φ’与转换算法φ互为逆运算,满足将1个4:4:4图像与2个4:2:0图像互相可转换。逆算法φ’的计算过程如下:
[0104] 对于图像a’:
[0105] Yi’(xY’,yY’)=Ya’(xY’,yY’)
[0106] 其中,xY’值域为[0,W-1],yY’值域为[0,H-1];
[0107] Ui’(2xU’,2yU’)=Ua’(xU’,yU’)
[0108] 其中,xU’值域为[0,W/2-1],yU’值域为[0,H/2-1];
[0109] Vi’(2xV’,2yV’)=Va’(xV’,yV’)
[0110] 其中,xV’值域为[0,W/2-1],yV’值域为[0,H/2-1];
[0111] 对于图像b’:
[0112] Ui’(xU’,2yU’+1)=Yb’(xU’,yU’)
[0113] Vi’(xV’,2yV’+1)=Yb’(xV’,H/2+yV’)
[0114] 其中,xU’和xV’值域为[0,W-1],yU’和yV’值域为[0,H/2-1];
[0115] Ui’(2xU’+1,4yU’)=Ub’(xU’,yU’)
[0116] Vi’(2xV’+1,4yV’)=Ub’(xV’,H/4+yV’)
[0117] Ui’(2xU’+1,4yU’+2)=Vb’(xU’,yU’)
[0118] Vi’(2xV’+1,4yV’+2)=Vb’(xV’,H/4+yV’)
[0119] 其中,xU’和xV’值域为[0,W/2-1],yU’和yV’值域为[0,H/4-1]。
[0120] 其中,转换算法φ和转换算法的逆算法φ’中,图像a相当于是标准的YUV444到YUV420格式图像的转换结果,主要对源图像i的U和V分量进行下采样。而经过YUV444到YUV420的转换后,实际上图像a相比于源图像i丢失了3/4的U分量和V分量信息。而转换算法φ将这部分丢失的分量信息存放到图像b的Y、U、V的分量当中。转换后的结果中,图像b中的U和V各分量数值保持和源图像i相关性。此时H.264、H.265等编码算法依然可以对图像b进行有效的编码。算法φ’则与上述过程相反,将解码后的a’和b’重新合成为i’,此时i’依然具备近似于源图像i的信息,从而在解码后色彩信息没有损失,得到了色彩无损的图像效果。
[0121] 下面将结合具体实施例说明本方法的流程内容,在本方法中,主要例举使用CUDA框架和OpenCL框架实现转换算法φ和和转换算法的逆算法φ’的kernel函数,使用GPU的interop方式与GPU的编解码器进行交互。
[0122] (一)使用CUDA框架:
[0123] S1:首先,需将原始空间图像i拷贝到GPU的帧缓存区域,原始图像可以存在于内存中,也可以存在于显存之中。对于CUDA框架,即为cudaMemory类型的显存。首先在GPU显存中分配一块显存M1,对于原始图像存在于内存中的场景,可直接使用cudaMemcpy方法拷贝到显存M1。对于远程桌面图形传输协议的场景,通常原始图像在进行抓取操作后,会以DirectX Surface或OpenGL Texture的形态存在于显存,此时可以使用CUDA、DirectX或OpenGL的interop,通过使用其中的cudaMemcpy方法将源图像拷贝到显存M1,方便应用CUDA的kernel函数进行下一步的转换操作。
[0124] 然后,应用转换算法φ得到等价的两个初始采样图像a和b。在GPU显存中分配一块显存M2。将显存M1和M2的地址、原始图像i的高度、宽度作为算法φ的参数,使用算法φ对应的kernel函数对存在于显存M1中的原始图像i进行转换,得到采样图像a和b并存放在M2。
[0125] S2:使用硬件编码器对两个初始采样图像进行编码,得到编码结果进行发送。首先设定编码参数,以H264编码格式为例,设定输入色彩空间为YUV420,根据需要,设定对应的H264 Profile、码率等其他必要参数,然后使用NvEncInitializeEncoder函数初始化编码器,进行编码操作,通过CUDA和NVENC编码器的interop方式,使用NvEncRegisterResource接口将显存M2中的数据作为NVENC编码器的输入数据,从而可以将初始采样图像a和b分别输入NVENC编码器的两路编码上下文中,再调用NvEncEncodePicture函数得到编码结果c。可选的,如果此时使用远程图形传输协议,可将c拷贝到内存,通过以太网发送到客户端。
[0126] S3:客户端使用硬件解码器对接收的编码结果进行解码,得到解码后的两个采样图像。首先初始化解码器参数,设定解码格式为H264,色彩空间为YUV420,创建好NVDEC解码器的实例。使用cudaMallocPitch在GPU显存中分配一块显存M1,设置解码输出结果到显存M1。然后进行解码过程,将编码结果c解码,得到解码后的图像a’和b’。将图像a’和b’存放到显存M1。
[0127] S4:使用转换算法的逆算法将解码后的两个采样图像重新组合还原,生成解码后的无损色彩空间图像。即使用cudaMallocPitch函数在GPU显存中分配一块显存M2,将显存M1和M2的地址、源图像i的高度、宽度作为算法φ’的参数,使用算法φ’对应的kernel函数对存在于显存M1中的图像a’和b’进行合成,得到结果i’存放到M2,即为解码合成后的图像。
[0128] 可选的,如果希望对解码后的无损色彩空间图像i’进行显示,由于解码后的i’依然存在于cudaMemory存储器中,此时可使用CUDA与图形接口的interop方式,将i’导入到OpenGL或Direct3D的纹理或表面中,使用图形接口直接显示解码后的无损色彩空间图像i’。
[0129] (二)使用OpenCL框架:
[0130] S1:首先,需将原始空间图像i拷贝到GPU的帧缓存区域。原始图像可以存在于内存中,也可以本身就存在于显存之中。对于OpenCL框架,即为cl_mem变量表示的一段显存。首先使用clCreateBuffer函数在GPU显存中分配一块显存M1,对于原始图像存在于内存中的场景,可直接使用clEnqueueCopyBuffer函数拷贝到显存M1。对于远程桌面图形传输协议的场景,通常原始图像在进行抓取操作后,会以DirectX Surface或OpenGL Texture的形态存在于显存,此时可以使用OpenCL、DirectX或OpenGL的interop方法,使用诸如clCreateFromD3D11Texture2DKHR的API得到指向原始图像对应的显存M1的cl_mem,方便应用OpenCL框架的kernel函数进行下一步的转换操作。
[0131] 然后,应用转换算法φ得到等价的两个初始采样图像a和b。在GPU显存中分配一块显存M2。将显存M1和M2的地址、源图像i的高度、宽度作为算法φ的参数,使用算法φ对应的kernel函数对存在于显存M1中的源图像i进行转换,得到图像a和b并存放在M2。
[0132] S2:使用硬件编码器对两个初始采样图像进行编码,得到编码结果进行发送。首先设定编码参数,以H264编码格式为例,设定输入色彩空间为YUV420,根据需要,设定对应的H264 Profile、码率等其他必要参数,使用GPU厂商对应的编码器API初始化编码器。然后进行编码操作,使用OpenCL和对应厂商编码器的interop方式,使用M2作为编码器的输入数据,从而可以将图像a和b分别输入两路编码上下文中,再调用编码器的API得到编码结果c。可选的,如果此时使用远程图形传输协议,可将c拷贝到内存,通过以太网发送到客户端。
[0133] S3:客户端使用硬件解码器对接收的编码结果进行解码,得到解码后的两个采样图像。首先初始化解码器参数,设定解码格式为H264,色彩空间为YUV420,使用对应GPU厂商解码器的API创建好解码器的实例。使用clCreateBuffer函数在GPU显存中分配一块显存M1,设置解码输出结果到显存M1。然后进行解码过程,将编码结果c解码,得到解码后的图像a’和b’。将图像a’和b’存放到显存M1。
[0134] S4:使用转换算法的逆算法将解码后的两个采样图像重新组合还原,生成解码后的无损色彩空间图像。即使用clCreateBuffer函数在GPU显存中分配一块显存M2,将显存M1和M2的地址、源图像i的高度、宽度作为算法φ’的参数,使用算法φ’对应的kernel函数对存在于显存M1中的图像a’和b’进行合成,得到结果i’并存放在M2,即为解码合成后的图像。
[0135] 可选的,如果希望对解码后的图像i’进行显示,由于解码后的i’依然存在于cl_mem,此时可使用OpenCL框架与图形接口的interop方式,将i’导入到OpenGL或Direct3D的纹理或表面中,使用图形接口直接显示i’。
[0136] 上述两种实施例中,利用CUDA框架和OpenCL框架的编解码有两种使用硬件编解码器的方式:
[0137] 第一种是上述实施例中使用的编解码方式,是将采样图像a和b分别输入硬件编码器的两路编码上下文,得到分离的编码结果c1和c2。对应的解码过程也需要使用两路解码上下文对c1和c2分别解码。此方法优点是不会降低支持的源图像分辨率,缺点是会占用多路硬件编解码器资源。在硬件编解码器限制编解码上下文数量时不宜使用。
[0138] 第二种,是将图像a和b合成为一个双倍宽度或高度的图像A,再将A输入硬件编码器的一路编码上下文中进行编码。得到一个编码结果c。对应的解码过程只需使用一路解码器上下文解码,需要将解码后的结果分离得到a’和b’。此方法优点是只占用一路硬件编解码器的上下文,缺点是原始空间图像最大支持的分辨率会降低一半的宽度或高度。
[0139] 本发明使得编解码过程既可以利用硬件编解码器,也可以实现无损色域,进而在远程图形传输协议中,可实现超低延迟的传输同时具备无损色彩、高帧率的特性。这使得利用GPU虚拟化技术的虚拟桌面架构可以满足绝大部分的行业客户。真正做到与本地工作站或PC机一致的使用体验,减少使用虚拟桌面架构带来的体验退化问题,使得虚拟桌面架构可以进一步提高用户的生产力。
[0140] 本发明描述的方法可应用于zVision桌面传输协议的服务端和客户端,分别提供基于GPU硬件编解码器的无损色域编码和解码能力,从而用户可以获得高精度的色彩视觉。提升了色彩精度后,用户在进行模型设计、卫星影像处理、三维建模、点云处理时可以得到更为精确的作业结果。进而在工业设计、建筑设计、影视非编、地理信息等行业中,基于本发明优化的zVision得到更广泛的应用,产品体验更好。
[0141] 本发明还提供一种视频编解码器色域的扩展系统,包括:
[0142] 图像转换装置,用于将原始视频图像拆分为大小相等的两个初始采样图像,其中通过对原始视频图像进行下采样得到第一初始采样图像,并利用所述第一初始采样图像丢失的图像信息生成第二初始采样图像;
[0143] 硬件编码器,用于对两个初始采样图像进行编码、发送;
[0144] 硬件解码器,用于对接收的编码结果进行解码,得到两个解码采样图像;
[0145] 图像还原装置,用于将两个解码采样图像重新组合还原,生成无损色彩空间图像。
[0146] 如图3所示,为本发明一种视频图像无损编解码系统流程示例图,本系统中的图像转换装置利用上述视频编解码器色域的扩展方法中的转换算法将原始空间图像转换为等价的两个初始采样图像发送给编码装置;所述编码装置用于使用CUDA框架或OpenCL框架的interop交互方式将两个初始采样图像分别输入编码器的两路编码上下文中,得到编码结果,通过传输装置发送给客户端;客户端的传输装置接收到编码结果,将编码结果传输给解码装置;所述解码装置通过解码操作将编码结果转换为两个采样图样,将所述两个采样图像发送给图像还原装置;所述图像还原装置通过转换算法的逆算法将解码后的两个采样图像进行还原转化,生成无损的色彩空间图像。
[0147] 另外,本发明还提供了一种视频图像编码系统,如图4所示,包括:
[0148] 图像转换装置,用于将原始视频图像拆分为大小相等的两个初始采样图像,其中通过对原始视频图像进行下采样得到第一初始采样图像,并利用所述第一初始采样图像丢失的图像信息生成第二初始采样图像;
[0149] 硬件编码器,用于对两个初始采样图像进行编码、发送。
[0150] 另外,本发明也提供了一种视频图像解码系统,如图5所示,包括:
[0151] 硬件解码器,用于对接收的编码结果进行解码,得到两个解码采样图像;
[0152] 图像还原装置,用于将两个解码采样图像重新组合还原,生成无损色彩空间图像。
[0153] 本系统的具体实施过程已在上述方法中进行了详细的描述与说明,故在此不再赘述。本系统同样可利用硬件编解码器实现无损色域,达到与上述方法所述的同等有益效果。
[0154] 上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用以限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施方式或变更均应包含在本发明的保护范围之内。
[0155] 对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。