一种桌面虚拟化spice协议下的图像传输方法

文档序号:8447694阅读:624来源:国知局
一种桌面虚拟化spice协议下的图像传输方法
【技术领域】
:
[0001]本发明涉及一种图像传输NSC算法,尤其涉及一种改进的应用在桌面虚拟化SPICE协议下的新型图像传输NSC算法,属于桌面虚拟化协议下的图像传输和图像压缩技术领域。
【背景技术】
:
[0002]桌面虚拟化技术是一种重要的云资源交付手段,采用桌面虚拟化技术,所有的桌面虚拟机在数据中心进行托管并统一管理,管理员只需在后台集中管理服务器上的应用程序。用户通过远程访问服务器,根据自己的需要使用虚拟桌面服务,获得完整的个人电脑使用体验,用户在移动终端上的操作不会受到任何影响。同时系统管理员只需要维护部署在中心服务器上的系统即可,不需要更新升级客户机上的系统,大大降低了管理员的工作量。目前,许多企业都开始采用桌面化方案,将技术人员从过时的桌面模式中解脱出来,降低管理成本,提高灵活性,简化技术支持,实现创新。
[0003]本发明针对的是Red Hat 公司研发的 SPICE (Simple Protocol for IndependentComputing Environment)开源虚拟化桌面传输协议。SPICE协议与传统的桌面传输协议有很大的不同,它是直接与虚拟机服务器通信,而传统的传输协议则是与运行于虚拟机之上的Guest虚拟机进行通信。这一特性使得SPICE协议可以直接与运行于服务器上的任何虚拟机进行通信,同时可以使用服务器的硬件设备对数据进行处理。SPICE采用多虚拟通道技术,为不同的通道设定不同的优先级,在网络状况不佳的情况下,优先保证实时数据的传输。
[0004]SPICE协议提供多种数据压缩算法,对不同的数据进行自适应压缩处理,以减少传输的数据量。主要包括针对图像数据的JPEG算法、Quic算法和LZ/Glz算法,以及针对视频数据的MJPEG算法。其中,JPEG压缩[作为SPICE协议中唯一的有损图像压缩,在传输过程中被频繁使用。它利用了人的视角系统特性,使用量化和无损压缩编码相结合的方式来去掉视角的冗余信息和数据本身的冗余信息。另外的、Quic算法和LZ/Glz算法是SPICE协议中特有的针对图像无损压缩的算法,但在SPICE协议中使用率并不高。
[0005]NSC算法是RDP协议中被经常使用的一种压缩算法。它可以对图像进行高效的有损压缩,在保证图像质量的情况下,尽可能的减少图像在传输过程中占用的带宽,且其算法运算速度较快。
[0006]在目前的技术发展中,没有出现过对SPICE协议下图像传输中图像压缩算法的移植替换。同时,虽然SPICE协议中有很多的图像压缩算法,但却没有使用NSC算法在SPICE协议下进行图像压缩的先例。
[0007]在现有的SPICE协议中,一共提供了 3种图像压缩算法,详见附图1。其中Quic和LZ算法为SPICE协议特有的无损压缩算法,在应用中由于消耗过大,不经常使用。JPEG算法是SPICE协议中唯一的位图有损压缩算法,与本发明中的SPICE协议下的NSC算法最为接近。
[0008]JPEG算法是一种有效的位图有损压缩算法,其可以达到一定的压缩比,但压缩后的图像质量不高。因此,在SPICE协议中,选用的JPEG算法,在保证图像质量的前提下,压缩比并不高,进而造成SPICE协议在图像传输过程中,所占用的带宽较大。
[0009]现有技术方案的缺点:
[0010]1、在SPICE协议下,JPEG算法压缩比有限,在传输图像过程中占用的网络带宽较大。
[0011]2、在SPICE协议中,JPEG算法的执行速度较慢。
[0012]3、在低带宽的环境中,使用JPEG算法传输可能会出现画面刷屏的效果。
[0013]4、JPEG算法代码量大,过程复杂,占用内存空间大。

【发明内容】

[0014]针对现有技术存在的技术问题,本发明提供一种改进的应用在桌面虚拟化SPICE协议下的新型图像传输NSC算法。本发明对原有的NSC算法进行了改进,之后移植到SPICE协议中,替换JPEG算法。新的NSC算法与JPEG算法相比,可在保证SPICE协议传输图像质量较高的情况下,使图像在压缩的过程中,获得更高的压缩比,在传输过程中占用更少的网络带宽,同时加快了图像压缩的处理速度。
[0015]本发明的目的在于:
[0016]1、解决将已有的图像压缩算法移植到SPICE协议中的问题,建立在SPICE协议图像传输中移植算法的通用体系。
[0017]2、通过通用体系,可以将现有的图像压缩算法成功的移植入SPICE协议中,使移植后的算法可以成功应用于SPICE协议图像传输过程中。
[0018]3、使用通用体系移植,代码量小,运行速度快,占用内存小。
[0019]本发明的技术方案为:
[0020]一种桌面虚拟化SPICE协议下的图像传输方法,其步骤为:
[0021]I)建立一用于在桌面虚拟化SPICE协议与所选压缩算法之间进行数据传输的中间层;所述中间层根据所选压缩算法的输入格式为该压缩算法分别设置一压缩结构体和解压结构体;
[0022]2)在数据压缩端,所述中间层从SPICE协议传送过来的待压缩数据中提取所选压缩算法压缩所需的输入数据,并将其存储到该压缩算法的压缩结构体中;然后所述中间层将该压缩结构体发送给该压缩算法进行压缩;然后所述中间层将该压缩结构体中存储的压缩数据存入SPICE协议本身传输用的结构体中,传输到数据解压端;
[0023]3)在数据解压端,所述中间层从SPICE协议传送过来的压缩数据中提取所选压缩算法解压所需的输入数据,并将其存储到该压缩算法的解压结构体中;然后所述中间层将该解压结构体发送给该压缩算法进行解压;然后所述中间层将解压后的数据转存入SPICE协议中。
[0024]进一步的,所述所选压缩算法为NSC算法;所述待压缩数据为图像数据。
[0025]进一步的,所述NSC算法中设有一用于表示图像色度变化的平滑程度value值;所述NSC算法首先计算待压缩图像数据的value值,然后将其与设置的阈值进行比较,然后根据比较结果选取不同的编码方法进行压缩。
[0026]进一步的,所述待压缩图像数据为ARGB位图,所述NSC算法首先将ARGB位图分离成A、R、G、B四个颜色平面,然后将每个A、R、G、B颜色平面填补成8像素宽、2像素高的整数倍,然后将R、G、B颜色平面转换成Y、Co、Cg颜色平面后,对颜色平面进行色度抽样压缩后计算得到待压缩图像数据的value值,如果该Value值大于设定阈值,则对A、Y、Co、Cg四个颜色平面分别进行行程编码,否则对A、Y、Co、Cg四个颜色平面分别进行熵编码。
[0027]进一步的,计算所述Value值的方法为:首先在待压缩图像上取多个样本点;然后计算每个样本点与其周围像素的平均色度值差,用平均的色度差值,来代表该样本点与周围色度变化的平滑程度;然后将所有样本点的色度差值加权求和,得到该value值。
[0028]进一步的,所述样本点为待压缩图像1/2高度线上的点、1/2宽度线上的点和两条对角线上的点。
[0029]进一步的,所述样本点为在每条线上以I个像素为步长,坐标均为整数的像素点。
[0030]与现有技术相比,本发明的积极效果:
[0031]1、本发明提供了一种有效的将图像算法移植入SPICE协议的方法,该方法不但适用于NSC算法,也适应于其他的图像算法。
[0032]2、本发明对NSC算法进行了改进,使其可以自主的根据图像情况选择不同的编码压缩算法。新改进的NSC算法比原有的NSC算法在压缩比方面提高I以上。
[0033]3、本发明还将多媒体指令运用在NSC算法中,使新NSC算法的运行速度提高了大约。
【附图说明】
[0034]图1为SPICE协议原始压缩方案;
[0035]图2为SPICE协议新图像压缩方案;
[0036]图3为SPICE协议植入算法架构图;
[0037]图4为新NSC算法流程图;
[0038]图5为新NSC算法中样本点选取示意图;
[0039]图6为单个样本点计算示意图。
【具体实施方式】
[0040]下面结合附图对本发明进行进一步详细描述。
[0041]本发明主要分为两部分,一部分是将NSC算法移植到SPICE协议中,替代原有的JPEG算法,形成新的SPICE协议图像传输算法。同时,建立向SPICE协议图像传输移植算法的通用体系。另一部分是对NSC算法进行改进,使其更好的适应SPICE协议,保证图像传输质量,提高图像压缩比,减少图像传输过程中占用的带宽。同时,提高NSC算法的运行速度,提升SPICE协议图像传输的效率。
[0042]一、在附图2中,原来应用JPEG算法的部分,被替换成了 NSC算法,NSC算法与SPICE协议原有的Quic和LZ两种无损压缩算法一起,形成了新的SPICE协议图像压缩处理方案。NSC算法与Quic和LZ算法为平行关系,互不影响,NSC算法独立完成压缩。NSC算法的输入与输出通过中间层完成与SPICE协议的连接。
[0043]由于NSC算法之前一直被使用在RDP协议中,从未被移植到SPICE协议中。因此,在进行移植时,设计了一个中间层,用中间层来连接SPICE协议和NSC算法。通过中间层的连接,NSC算法可以很好的移植到SPICE协议中发挥作用。同时,该中间层不仅适用于将NSC算法移植到SPICE协议中,其他的图像压缩算法也可以通过中间层,对算法接口进行微调,来实现将图像压缩算法移植到SPICE协议中的效果。
[0044]中间层总体分为两个部分,第一部分是对从SPICE协议中传来的数据进行处理,处理成压缩解压需要的数据;第二部分,是进行相反的操作,将压缩和解压后的数据,处理成SPICE协议中传输的数据。
[0045]在整个压缩解压过程中,一共需要4次用到中间层。压缩和解压前,用到的是中间层的第一部分;压缩和解压后,用
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1