一种图像编码的方法及设备的制作方法

文档序号:7753775阅读:133来源:国知局
专利名称:一种图像编码的方法及设备的制作方法
技术领域
本发明涉及图像编码技术领域,特别涉及一种图像编码的方法及设备。
背景技术
为了在远端客户端上重现服务器主机屏幕的界面显示内容,服务器端需要将屏幕 的图像传送到客户端。由于屏幕图像数据量巨大,服务器在传输图像时要对其进行编码压 缩,使其在带宽资源有限的信道中传输。因此,在图像编码的过程中需要考虑服务器端的资 源消耗和编码后的数据所占用的传输带宽。现有技术在对图像进行编码时,为了考虑服务器端的资源消耗和编码后的数据所 占用的传输带宽,采用了两种方案。第一种方案是只对变化的图像进行编码传输,即如果 屏幕发生变化,则对变化后的图像做一次编码,之后通过网络发送到客户端,否则,不进行 图像编码;第二种方案是不管当前屏幕图像是否发生变化,总是定时不间断的将屏幕图 像进行编码,并发送到客户端。在实现本发明的过程中,发明人发现现有技术至少存在以下问题对于第一种方案,由于只对变化的图像进行编码传输,在图像未发生变化时,由于 无需传输图像编码导致带宽几乎处于空闲状态,造成浪费;对于第二种方案,如果时间间隔 设定的较短,屏幕图像变化较慢时,有些编码将是没有必要的,即造成编码资源的浪费;屏 幕图像变化较快时,变化的图像仍有可能在一定的时间间隔之后才被编码,因而产生了一 定的时延;如果时间间隔设定的较长,则会导致客户端图像响应太慢。

发明内容
为了避免带宽资源浪费,以及服务器端资源浪费,提高客户端屏幕图像的响应速 度,本发明实施例提供了一种图像编码的方法及设备。所述技术方案如下—方面,提供了一种图像编码的方法,所述方法包括采集当前屏幕图像发生变化的图像信息,根据采集到的所述当前屏幕图像发生变 化的图像信息进行第一次编码,并将编码后的数据发送给客户端;每隔预定时间判断所述当前屏幕图像是否发生变化;如果所述当前屏幕图像未发生变化,且满足再次编码条件,则根据上次编码数据 进行再次编码,并将编码后的数据发送给所述客户端。另一方面,提供了一种图像编码的设备,所述设备包括采集模块,用于采集当前屏幕图像发生变化的图像信息;第一编码模块,用于根据所述采集模块采集到的所述当前屏幕图像发生变化的图 像信息进行第一次编码;第一发送模块,用于将所述第一编码模块编码后的数据发送给客户端;判断模块,用于每隔预定时间判断所述当前屏幕图像是否发生变化;第二编码模块,用于在所述判断模块判断所述当前屏幕图像未发生变化,且满足再次编码条件时,则根据上次编码数据进行再次编码;第二发送模块,用于将所述第二编码模块编码后的数据发送给所述客户端。本发明实施例提供的技术方案带来的有益效果是通过在当前屏幕图像发生变化时,采集当前屏幕图像发生变化的图像信息,根据 采集到的图像信息进行第一次编码,并将编码后的数据发送给客户端,保证客户端能有较 快的图像响应速度;另外,在预定时间内当前屏幕图像没有发生变化时,再向客户端补充发 送一些数据,不仅能够有效的利用空闲带宽资源,还能使客户端图像的质量得到进一步改
口 ο


为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使 用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于 本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他 的附图。图1是本发明实施例1提供的图像编码的方法流程图;图2是本发明实施例2提供的图像编码的方法流程图;图3是本发明实施例3提供的图像编码的设备结构示意图;图4是本发明实施例3提供的另一种图像编码的设备结构示意图。
具体实施例方式为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方 式作进一步地详细描述。实施例1参见图1,本实施例提供了一种实时图像编码的方法,包括101 采集当前屏幕图像发生变化的图像信息,根据采集到的当前屏幕图像发生变 化的图像信息进行第一次编码,并将编码后的数据发送给客户端;102:每隔预定时间判断当前屏幕图像是否发生变化,如果当前屏幕图像发生变 化,则返回步骤101,如果当前屏幕图像未发生变化,且满足再次编码条件,则执行步骤 103 ;103:根据上次编码数据进行再次编码,并将编码后的数据发送给客户端,流程结 束ο本实施例提供的方法,通过在当前屏幕图像发生变化时,采集当前屏幕图像发生 变化的图像信息,根据采集到的图像信息进行第一次编码,并将编码后的数据发送给客户 端,保证客户端能有较快的图像响应速度;另外,在预定时间内当前屏幕图像没有发生变化 时,再向客户端补充发送一些数据,不仅能够有效的利用空闲带宽资源,还能使客户端图像 的质量得到进一步改善。实施例2本实施例提供了一种图像编码的方法,为了便于说明,本实施例以VNC(VirtUal Network Computing,虚拟网络计算)系统中的tight编码为例,对本实施例提供的方法进行详细说明。参见图2,本实施例提供的图像编码的方法流程具体如下201 与客户端建立连接,协商初始压缩等级;其中,压缩等级是在图像编码过程中用到的一种编码参数,编码参数根据采取不 同的编码算法而有其具体的含义,本实施例不对具体编码参数进行限定,此处仅以编码参 数为压缩等级为例;对于H.沈3、H. 264等编码算法,编码参数指量化步长。一般来说,量化 步长越大、压缩等级越高,编码后的数据量越小,但同时损失也越大,解码后图像的质量也越差。关于初始压缩等级的协商,仅在客户端与服务器端建立连接时进行,协商的具体 初始压缩等级与实际编码时希望得到的编码质量有关,本实施例不对具体协商方式进行限 定,实际应用中,可依据现有技术实现,此处设协商后的初始压缩等级为Cinit。202 采集当前屏幕图像发生变化的图像信息;其中,采集当前屏幕图像发生变化的图像信息的方法可利用现有技术实现,例如 系统钩子、监控显存变化等技术,得到当前屏幕图像发生变化的区域大小和位置等信息,本 实施例不对采集当前屏幕图像发生变化的图像信息的具体方式以及采集的具体信息进行 限定。203 根据采集到的当前屏幕图像发生变化的图像信息进行第一次编码,并将编码 后的数据发送给客户端;具体的,编码方法可依据现有技术实现,此处不作赘述。本实施例在进行第一次编 码时,需要先确定编码参数,确定编码参数的方式可以有多种,此处不进行具体限定,仅以 根据采集到的当前屏幕图像发生变化的区域大小,以及当前实际可用的带宽来确定编码参 数为例。对于本实施例而言,编码参数为压缩等级,此处的压缩等级为C1,当前实际可用的 带宽为B,根据当前屏幕图像发生变化的区域大小得到变化区域的大小占全屏的比例U,最 后,根据U与B的大小对Cinit进行调整得到Q。实际应用中,U越大,需要编码的数据量越 大,然而当前实际可用带宽B的大小有限,因此,还需要根据当前实际可用带宽B对Cinit进 行调整,从而确定压缩等级C1,具体公式如下 C1 = Cinit+UpRound ((U-0. 5) /0. 2) + (Bnormal-B) /Bnormal式(1)C1 = CliplC1,1,9}式 (2)其中,U取值范围为(0,1],Bnmial为正常情况下的可用带宽,取带宽的平均值; UpRound为((U-0. 5) /0. 2)的上取整,表示U以0. 5为界限,超过0. 5则C1会在Cinit的基础 上有提高,U超过0. 5的幅度以0. 2为基准导致C1提高的等级不同,例如,如果U在0. 5到 0. 7之间,则C1会在Cinit的基础上提高一个等级,如果U在0. 7到0. 9之间,则C1会在Cinit 的基础上提高两个等级,同理,U低于0.5时,使得C1会在Cinit的基础上降低。(B_al-B)/ Bnormal表示C1会根据实际可用的带宽情况在Cinit的基础上有所调整,例如,B每超过Bnmial 的一倍会使得C1降低一个等级。式⑵的目的是将经式⑴计算后得到的C1的值剪切到合理的范围,例如,本例 中tight的压缩等级为1 9,则式(2)会将C1控制在1 9之间。204 每隔预定时间判断当前屏幕图像是否发生变化,如果是,则返回202 ;如果 否,则执行205 ;
其中,预定时间的设定应大于每秒25帧(或30帧)的帧间隔时间40ms (或33ms), 因为每秒25帧(或30帧)一般默认为屏幕变化的最大帧率,那么40ms (或3:3ms)就是屏 幕发生变化的最小的帧间隔时间,则预设时间应大于最小的帧间隔时间。如果预定时间的 设定小于最小的帧间隔时间,则资源消耗的情况较大,即出现了与现有技术相同的缺陷。因 此,优选的,本实施例将预定时间设定为100ms。当然,预定时间还可以取其他值,但要避免 资源消耗过大的情况出现。该步骤之所以每隔预定时间判读当前屏幕图像是否发生变化,是为了发送到客户 端的图像质量还没有达到最高的时候,利用空闲带宽,补充发送图像的编码数据,使客户端 的图像质量更好。205:判断未发生变化的当前屏幕图像是否满足再次编码条件,如果是,则执行 206 ;如果否,则返回204 ;针对该步骤,本实施例不对再次编码条件进行限定,具体可将压缩等级作为再次 编码条件,本实施例不对具体判断方式进行限定。例如,判断压缩等级是否等于1,如果等于 1说明当前屏幕图像的压缩等级已经取到最低,客户端画面已经没有改善的余地,图像质量 已经达到最高,则判断当前屏幕图像不满足再次编码条件,否则,可对当前屏幕图像进行再 次编码,以提高图像质量,即继续执行206。206 根据上次编码数据进行再次编码,流程结束;具体的,再次编码仍然需要确定压缩等级,此处以压缩等级为Cn为例,Cn可在上次 编码的编码参数基础上,做一些调整,本实施例不对具体调整方式进行限定,可根据实际情 况确定。由于压缩等级越高,编码后的数据量越小,但同时损失也越大,解码后图像的质量 也越差,因此,为了保证通过该步骤可以使画面质量得到提高,再次编码的压缩等级可在上 次编码的基础上调低,以提高解码后图像的质量。对于本实施例,Cn = max(l, Cn_「2),由于最低的压缩等级为1,所以要保证Cn的 取值大于或等于1 ;Cy-2表明每次编码的压缩等级都在上一次压缩等级Clri的基础上降低 两个压缩等级。压缩等级范围为[1,9],那么一次调整一级、两级或三级等都可以。如果是 其他编码方式,如H. 263压缩,其量化步长范围为
,那么每次调整的幅度可以相对稍 大。不管编码参数是压缩等级,还是量化步长,一次调整的幅度越大,则画面相对上一次改 善的程度也越大,如果调整的幅度太大,则意味着两次画面质量差别也很大,这在主观体验 上可能会反而给人以不适应感,因此,一次调整的幅度不能太大,保证主观上没有明显的画 面质量跳跃感。其中,本实施例不对再次编码的方式进行具体限定,实际应用中,为了进一步节省 带宽资源,可以在不需要对原始数据进行编码的情况下,根据上次编码数据重建对应的图 像,并确定重建的图像与第一次编码前所对应的图像之间的对应点的差值;对上次编码时 的编码参数进行调整,得到当前编码参数,根据得到的当前编码参数对确定的差值进行编 码即可。可选的,在编码之后,还可以再次执行步骤204,以便利用空闲信道对图像质量没 有达到最高的图像,再次进行补充编码,并发送给客户端,从而一步步提高客户端图像的显 不质量。本实施例提供的方法,通过在当前屏幕图像发生变化时,采集当前屏幕图像发生变化的图像信息,根据采集到的图像信息进行第一次编码,并将编码后的数据发送给客户 端,保证客户端能有较快的图像响应速度;另外,在预定时间内当前屏幕图像没有发生变化 时,再向客户端补充发送一些数据,不仅能够有效的利用空闲带宽资源,还能使客户端图像 的质量得到进一步改善,且补充发送的数据是在第一次编码数据的基础上得出的,因而能 够节省带宽。实施例3参见图3,本实施例提供了一种图像编码的设备,该设备包括采集模块301,用于采集当前屏幕图像发生变化的图像信息;第一编码模块302,用于根据采集模块301采集到的当前屏幕图像发生变化的图 像信息进行第一次编码;第一发送模块303,用于将第一编码模块302编码后的数据发送给客户端;判断模块304,用于每隔预定时间判断当前屏幕图像是否发生变化;第二编码模块305,用于在判断模块304判断当前屏幕图像未发生变化,且满足再 次编码条件时,则根据上次编码数据进行再次编码;第二发送模块306,用于将第二编码模块305编码后的数据发送给客户端。进一步的,参见图4,该设备还包括连接协商模块307,用于与客户端进行连接,并协商初始编码参数;相应的,第一编码模块302,具体用于根据采集到的当前屏幕图像发生变化的区域 大小,以及当前实际可用的带宽调整初始编码参数,得到第一次编码参数,根据第一次编码 参数进行第一次编码。其中,第二编码模块305,具体用于在判断模块304判断当前屏幕图像未发生变 化,且满足再次编码条件时,根据上次编码数据重建对应的图像,并确定重建的图像与第一 次编码前所对应的图像之间的对应点的差值;对上次编码时的编码参数进行调整,得到当 前编码参数,根据得到的当前编码参数对确定的差值进行编码。本实施例提供的设备,通过在当前屏幕图像发生变化时,采集当前屏幕图像发生 变化的图像信息,根据采集到的图像信息进行第一次编码,并将编码后的数据发送给客户 端,保证客户端能有较快的图像响应速度;另外,在预定时间内当前屏幕图像没有发生变化 时,再向客户端补充发送一些数据,不仅能够有效的利用空闲带宽资源,还能使客户端图像 的质量得到进一步改善,且补充发送的数据是在第一次编码数据的基础上得出的,因而能 够节省带宽。需要说明的是上述实施例提供的图像编码的设备在进行图像编码时,仅以上述 各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的 功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者 部分功能。另外,上述实施例提供的图像编码的设备与图像编码的方法实施例属于同一构 思,其具体实现过程详见方法实施例,这里不再赘述。以上实施例提供的技术方案中的全部或部分内容可以通过软件编程实现,其软件 程序存储在可读取的存储介质中,存储介质例如计算机中的硬盘、光盘或软盘。以上所述 仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任 何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种图像编码的方法,其特征在于,所述方法包括采集当前屏幕图像发生变化的图像信息,根据采集到的所述当前屏幕图像发生变化的 图像信息进行第一次编码,并将编码后的数据发送给客户端; 每隔预定时间判断所述当前屏幕图像是否发生变化;如果所述当前屏幕图像未发生变化,且满足再次编码条件,则根据上次编码数据进行 再次编码,并将编码后的数据发送给所述客户端。
2.根据权利要求1所述的方法,其特征在于,所述采集当前屏幕图像发生变化的图像 信息之前,还包括与所述客户端进行连接,并协商初始编码参数;所述根据采集到的所述当前屏幕图像发生变化的图像信息进行第一次编码,具体包括根据采集到的所述当前屏幕图像发生变化的区域大小,以及当前实际可用的带宽调整 所述初始编码参数,得到第一次编码参数;根据所述第一次编码参数进行第一次编码。
3.根据权利要求1所述的方法,其特征在于,所述根据上次编码数据进行再次编码,具 体包括根据上次编码数据重建对应的图像,并确定所述重建的图像与所述第一次编码前所对 应的图像之间的对应点的差值;对上次编码时的编码参数进行调整,得到当前编码参数,根据得到的所述当前编码参 数对确定的所述差值进行编码。
4.根据权利要求1所述的方法,其特征在于,所述预定时间大于最小的帧间隔时间。
5.一种图像编码的设备,其特征在于,所述设备包括 采集模块,用于采集当前屏幕图像发生变化的图像信息;第一编码模块,用于根据所述采集模块采集到的所述当前屏幕图像发生变化的图像信 息进行第一次编码;第一发送模块,用于将所述第一编码模块编码后的数据发送给客户端; 判断模块,用于每隔预定时间判断所述当前屏幕图像是否发生变化; 第二编码模块,用于在所述判断模块判断所述当前屏幕图像未发生变化,且满足再次 编码条件时,则根据上次编码数据进行再次编码;第二发送模块,用于将所述第二编码模块编码后的数据发送给所述客户端。
6.根据权利要求5所述的设备,其特征在于,所述设备,还包括 连接协商模块,用于与所述客户端进行连接,并协商初始编码参数;所述第一编码模块,具体用于根据采集到的所述当前屏幕图像发生变化的区域大小, 以及当前实际可用的带宽调整所述初始编码参数,得到第一次编码参数,根据所述第一次 编码参数进行第一次编码。
7.根据权利要求5所述的设备,其特征在于,所述第二编码模块,具体用于在所述判断 模块判断所述当前屏幕图像未发生变化,且满足再次编码条件时,根据上次编码数据重建 对应的图像,并确定所述重建的图像与所述第一次编码前所对应的图像之间的对应点的差 值;对上次编码时的编码参数进行调整,得到当前编码参数,根据得到的所述当前编码参数对确定的所述差值进行编码。
全文摘要
本发明公开了一种图像编码的方法及设备,属于图像编码技术领域。该方法包括采集当前屏幕图像发生变化的图像信息,根据采集到的当前屏幕图像发生变化的图像信息进行第一次编码,并将编码后的数据发送给客户端;每隔预定时间判断当前屏幕图像是否发生变化;如果当前屏幕图像未发生变化,且满足再次编码条件,则根据上次编码数据进行再次编码,并将编码后的数据发送给客户端。本发明通过采集当前屏幕图像发生变化的图像信息,根据采集到的图像信息进行第一次编码,并将编码后的数据发送给客户端,保证客户端能有较快的图像响应速度;在当前屏幕图像未发生变化时,再发送一些数据,能有效利用空闲带宽资源,使客户端图像的质量得到进一步改善。
文档编号H04N7/26GK102143360SQ20101022246
公开日2011年8月3日 申请日期2010年6月30日 优先权日2010年6月30日
发明者候伟奕, 周皓隽, 彭巧巧, 徐谦, 李永安, 陈斌 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1