CN110493600A - 图像编码方法、装置、计算机设备及存储介质 - Google Patents

图像编码方法、装置、计算机设备及存储介质 Download PDF

Info

Publication number
CN110493600A
CN110493600A CN201910784836.8A CN201910784836A CN110493600A CN 110493600 A CN110493600 A CN 110493600A CN 201910784836 A CN201910784836 A CN 201910784836A CN 110493600 A CN110493600 A CN 110493600A
Authority
CN
China
Prior art keywords
macro block
byte
weight
key
blinkpunkt
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201910784836.8A
Other languages
English (en)
Other versions
CN110493600B (zh
Inventor
万双
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201910784836.8A priority Critical patent/CN110493600B/zh
Publication of CN110493600A publication Critical patent/CN110493600A/zh
Application granted granted Critical
Publication of CN110493600B publication Critical patent/CN110493600B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本申请涉及一种图像编码方法、装置、计算机设备及存储介质,该方法包括:获取由当前图像帧划分得到的宏块;确定各宏块对应的字节分配权重;根据所述字节分配权重,识别所述宏块中的关键宏块和非关键宏块;控制各非关键宏块相应的字节数降低、且各关键宏块相应的字节数不降低;将各非关键宏块和关键宏块分别按照相应控制后的字节数进行编码。本申请的方案,能够节省带宽。

Description

图像编码方法、装置、计算机设备及存储介质
技术领域
本发明涉及计算机技术领域,特别是涉及一种图像编码方法、装置、计算机设备及存储介质。
背景技术
随着科学技术的飞速发展,各种技术层出不穷,图像编码技术在日常的应用中也很广泛,能够应用于很多场景中。比如,对视频中各个图像帧进行编码,又比如,在云端将游戏视频的各图像帧编码成视频流等场景。
传统方法中,都是按照编码器自身携带的默认编码参数对图像进行编码,这样一来,编码产生的流量通常会比较高,比如,目前对云游戏视频中的图像帧进行编码,产生的流量就比较高。从而导致占用的带宽较多。
发明内容
基于此,有必要针对传统方法占用带宽较多的问题,提供一种图像编码方法、装置、计算机设备及存储介质。
一种图像编码方法,所述方法包括:
获取由当前图像帧划分得到的宏块;
确定各宏块对应的字节分配权重;
根据所述字节分配权重,识别所述宏块中的关键宏块和非关键宏块;
控制各非关键宏块相应的字节数降低、且各关键宏块相应的字节数不降低;
将各非关键宏块和关键宏块分别按照相应控制后的字节数进行编码。
在一个实施例中,所述方法还包括:
识别各宏块在所属对象中所处的第一位置;
所述确定各宏块对应的字节分配权重包括:
根据所述第一位置,确定各宏块对应的第一字节分配权重;
其中,处于所属对象的边缘位置的宏块所对应的第一字节分配权重,大于处于所属对象的非边缘位置的宏块所对应的第一字节分配权重。
在一个实施例中,所述确定各宏块对应的字节分配权重包括:
检测各宏块是否位于用户注视点位置;
根据检测结果,确定各宏块对应的第二字节分配权重;
其中,位于所述用户注视点位置处的宏块对应的第二字节分配权重,大于位于所述用户注视点位置之外的宏块所对应的第二字节分配权重。
在一个实施例中,所述检测各宏块是否位于用户注视点位置包括:
获取各宏块在当前图像帧中所处的第二位置;
针对每个宏块,当所述宏块所处的第二位置与注视点位置匹配时,则判定所述宏块处于用户注视点位置;
所述根据检测结果,确定各宏块对应的第二字节分配权重包括:
从注视点权重表中,查找与各宏块所处的第二位置对应的第二字节分配权重;其中,所述注视点权重表中注视点位置所对应的字节分配权重,大于非注视点位置所对应的字节分配权重。
在一个实施例中,所述方法还包括:
获取观察点的历史运动轨迹;
根据所述历史运动轨迹,预测当前图像帧中的用户注视点位置;
所述检测各宏块是否位于用户注视点位置包括:
针对每个宏块,当所述宏块在所述当前图像帧中所处的第二位置与预测的用户注视点位置相匹配时,则判定所述宏块处于用户注视点位置。
在一个实施例中,所述当前图像帧是观察点当前观察到的图像内容;所述方法还包括:
获取所述当前图像帧所对应的深度图;
所述确定各宏块对应的字节分配权重包括:
根据所述深度图,确定各宏块距离观察点的深度值;
根据所述深度值,确定各宏块对应的第三字节分配权重;所述第三字节分配权重的大小与所述深度值的大小负相关。
在一个实施例中,所述确定各宏块对应的字节分配权重还包括:
获取各宏块对应的第一字节分配权重和第二字节分配权重;所述第一字节分配权重,是根据各宏块在所属对象中是否属于边缘位置确定;所述第二字节分配权重,是根据各宏块是否处于用户注视点位置确定;
根据同一宏块所对应的第一字节分配权重、第二字节分配权重和第三字节分配权重,得到各宏块最终对应的字节分配权重。
在一个实施例中,所述根据所述字节分配权重,识别所述宏块中的关键宏块和非关键宏块包括:
根据各宏块所对应的字节分配权重,确定权重中间值;
从各宏块中,识别字节分配权重大于或等于权重中间值的宏块,得到关键宏块;
将字节分配权重小于权重中间值的宏块识别为非关键宏块。
在一个实施例中,所述控制各非关键宏块相应的字节数降低、且各关键宏块相应的字节数不降低包括:
当当前预估码率不变时,通过调整量化参数的值,控制各非关键宏块相应的字节数降低、且各关键宏块相应的字节数升高;
其中,控制后的当前图像帧所对应的字节数小于或等于字节数阈值。
在一个实施例中,所述字节数阈值的确定步骤包括:
获取网络状况监控数据;
获取数据传输异常信息;
根据所述网络状况监控数据和所述数据传输异常信息,预测带宽容量;
根据所述带宽容量,确定所述当前图像帧对应的字节数阈值。
在一个实施例中,所述控制各非关键宏块相应的字节数降低、且各关键宏块相应的字节数不降低包括:
控制各非关键宏块相应的字节数降低、且保持各关键宏块相应的字节数不变。
在一个实施例中,所述当前图像帧,是从游戏进程中获取的当前待编码的图像帧;
所述方法还包括:
将编码后的数据作为视频流传输至游戏客户端;所述视频流用于指示所述游戏客户端,解码所述编码后的数据并展示。
一种图像编码装置,所述装置包括:
获取模块,用于获取由当前图像帧划分得到的宏块;
权重确定模块,用于确定各宏块对应的字节分配权重;
字节调整模块,用于根据所述字节分配权重,识别所述宏块中的关键宏块和非关键宏块;控制各非关键宏块相应的字节数降低、且各关键宏块相应的字节数不降低;
编码模块,用于将各非关键宏块和关键宏块分别按照相应控制后的字节数进行编码。
一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如下步骤:
获取由当前图像帧划分得到的宏块;
确定各宏块对应的字节分配权重;
根据所述字节分配权重,识别所述宏块中的关键宏块和非关键宏块;
控制各非关键宏块相应的字节数降低、且各关键宏块相应的字节数不降低;
将各非关键宏块和关键宏块分别按照相应控制后的字节数进行编码。
一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如下步骤:
获取由当前图像帧划分得到的宏块;
确定各宏块对应的字节分配权重;
根据所述字节分配权重,识别所述宏块中的关键宏块和非关键宏块;
控制各非关键宏块相应的字节数降低、且各关键宏块相应的字节数不降低;
将各非关键宏块和关键宏块分别按照相应控制后的字节数进行编码。
上述图像编码方法、装置、计算机设备及存储介质,获取由当前图像帧划分得到的宏块;确定各宏块对应的字节分配权重;根据所述字节分配权重,识别所述宏块中的关键宏块和非关键宏块。能够准确识别出当前图像帧中关键图像和非关键图像,进而,控制各非关键宏块相应的字节数降低、且各关键宏块相应的字节数不降低,将各非关键宏块和关键宏块分别按照相应控制后的字节数进行编码。即,对关键图像和非关键图像的码率进行动态调整。通过降低非关键图像的码率,而保持对关键图像的码率不降低,这样一来,在当前图像帧中的关键图像保持同等画质的情况下,减少了带宽。
附图说明
图1为一个实施例中图像编码方法的应用场景图;
图2为另一个实施例中图像编码方法的应用场景图;
图3为一个实施例中图像编码方法的流程示意图;
图4为一个实施例中图像渲染的简示图;
图5为一个实施例中视频图像帧和深度图的对比示意图;
图6为一个实施例中传统方法的框图;
图7为一个实施例中图像编码方法的框图;
图8为一个实施例中图像编码方法的流程示意图;
图9为一个实施例中宏块量化权重计算模块框图;
图10为一个实施例中宏块量化权重计算流程示意图;
图11为另一个实施例中的图像编码方法的框图;
图12为又一个实施例中的图像编码方法的框图;
图13至图14为一个实施例中图像编码的效果示意图;
图15为一个实施例中图像编码方法的时序图;
图16为一个实施例中图像编码装置的框图;
图17为另一个实施例中图像编码装置的框图;
图18为一个实施例中计算机设备的框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
图1为一个实施例中图像编码方法的应用场景图。参照图1,该应用场景中包括通过网络连接的服务器110和终端120。服务器110可以用独立的服务器或者是多个物理服务器组成的服务器集群来实现。终端120可以是智能电视机、智能音箱、台式计算机或移动终端,移动终端可以包括手机、平板电脑、笔记本电脑、个人数字助理和穿戴式设备等中的至少一种。
服务器110可以获取由当前图像帧划分得到的宏块;确定各宏块对应的字节分配权重;根据所述字节分配权重,识别所述宏块中的关键宏块和非关键宏块;控制各非关键宏块相应的字节数降低、且各关键宏块相应的字节数不降低;将各非关键宏块和关键宏块分别按照相应控制后的字节数进行编码。进一步地,服务器110可以将编码后的数据发送至终端120。终端120可以针对编码后的数据进行解码,并显示。
其中,服务器110具备图像渲染及编码能力,能够将图像编码成视频流,再通过网络传输到终端120进行解码显示。这样一来,终端120仅需支持网络、视频解码和显示功能即可,而不需要终端120自身具备较强、较复杂的处理能力,所以,对终端120的要求比较低。
图2为另一个实施例中图像编码方法的应用场景图。参照图2,该应用场景中包括通过网络连接的游戏服务器130和终端140。终端140中可以运行游戏客户端。游戏服务器130中可以运行游戏进程。游戏进程用于在服务器端渲染出游戏视频中的每帧游戏画面,即视频图像帧。游戏服务器130可以从游戏进程中捕获视频图像帧,并执行本申请各实施例中的图像编码方法对所捕获的每帧视频图像帧依次进行编码。进一步地,游戏服务器130可以将编码后的数据作为视频流发送至终端140,终端140可以通过运行的游戏客户端解码该数据,从而实现游戏画面的展示。
可以理解,图2中所示的应用场景,相当于用于实现对云游戏的游戏图像帧的编码。其中,云游戏,是以云计算为基础的游戏方式。在云游戏的运行模式下,所有游戏图像都在服务器端渲染,并将渲染完毕后的游戏图像编码成视频流,再通过网络传送给用户所使用的终端解码并显示,用户所使用的终端将操控信息(比如,对键盘,鼠标,手柄等进行操控的信息)回传到服务器。可以理解,这样一来,用户所使用的终端仅需要支持网络、视频解码和显示等功能,即可玩高画质游戏。
图3为一个实施例中图像编码方法的流程示意图。本实施例中的该图像编码方法可以应用于计算机设备,现主要以计算机设备为图1中的服务器110进行举例说明。参照图3,该方法具体包括如下步骤:
S302,获取由当前图像帧划分得到的宏块。
其中,当前图像帧,是视频中当前待编码的图像帧。宏块(Macroblock),是视频编码技术中的一个基本概念。通过将画面分成一个个大小不同的宏块来对不同位置实行不同的压缩策略。视频可以为三维场景的视频。
可以理解,当前图像帧可以是在服务器端被渲染出的图像。
计算机设备可以直接获取已经划分好的宏块,也可以从缓冲中获取当前图像帧,并将当前图像帧划分成宏块。
在一个实施例中,当前图像帧,可以是当前游戏视频图像帧。游戏视频图像帧,即游戏视频的游戏画面。即,当前图像帧可以是三维游戏场景中的当前待编码的图像帧。
具体地,计算机设备可以从游戏进程中获取缓冲的当前图像帧,然后将当前图像帧划分为宏块。
可以理解,计算机设备可以逐帧从游戏进程中获取当前图像帧,并将获取的当前图像帧划分为宏块。计算机设备也可以从游戏进程中获取多帧视频图像帧,并将每帧视频图像帧划分为宏块,然后依次针对每帧待编码的当前图像帧获取所划分得到的宏块。
在一个实施例中,计算机设备可以将每帧视频图像帧进行划分,得到图像切片,估计每个图像切片所对应的字节数,并按照估计的字节数,将每个图像切片划分成宏块,得到该视频图像帧最终划分的宏块。
S304,确定各宏块对应的字节分配权重。
其中,字节分配权重,是指为各宏块分配字节数的权重值。
具体地,计算机设备可以通过宏块距当前图像帧对应的观察点的远近程度、宏块在所属对象中所占据的位置关键程度、以及宏块在当前图像帧中所处位置的关键程度等中的至少一种信息,确定各宏块对应的字节分配权重。
在一个实施例中,表征宏块距当前图像帧对应的观察点的远近程度的信息,可以包括宏块距当前图像帧对应的观察点的深度值。可以理解,宏块距观察点的深度值越小,说明宏块离观察点越近,反之,宏块距观察点的深度值越大,说明宏块离观察点越远。
在一个实施例中,表征宏块在所属对象中占据的位置关键程度的信息,可以包括宏块是否处于所属对象的视觉敏感位置或核心位置。视觉敏感位置,是人体视觉比较敏感的位置,比如,边缘位置。
为了便于理解,现举例说明。比如,对于游戏画面中的“树”来说,由于人体视觉对边缘位置比较敏感,所以,“树”的边缘轮廓就应该清晰一些。那么,在构成“树”的一系列宏块中,处于“树“的边缘轮廓的宏块所占据的位置就比较关键,其相对于“树”的非边缘轮廓(比如,树的叶子)的宏块而言,就需要分配较高的字节分配权重。
在一个实施例中,表征宏块在当前图像帧中所处位置的关键程度的信息,可以包括宏块是否处于当前图像帧中的用户注视点位置。比如,用户在当前图像帧中注视一个位置,即用户注视点位置,说明用户对其比较关注,那么,位于该用户注视点位置处的宏块就比较关键,就需要显示的清晰一些,因而就需要分配较高的字节分配权重。
S306,根据字节分配权重,识别宏块中的关键宏块和非关键宏块。
其中,关键宏块,是用户关注的宏块。非关键宏块,是当前图像帧的宏块中除关键宏块以外的宏块。可以理解,非关键宏块,即为用户不关注的宏块。
需要说明的是,关键宏块的对应的字节分配权重,大于非关键宏块的字节分配权重。即,针对关键宏块所分配的字节数,大于针对非关键宏块分配的字节数。可以理解,关键宏块需要清晰显示,非关键宏块由于不受用户关注,所以即使不清晰显示也不影响用户的视觉感受。
现结合游戏图像为例,对关键宏块和非关键宏块进行举例说明。对于一张游戏图像中来说,可以是,距观察点近的宏块(比如,游戏画面中近处的虚拟人物),用户就比较关注,即为关键宏块;距观察点远的宏块(比如,游戏画面中远处的天空和山),用户不太关注,即为非关键宏块。也可以是,游戏画面中的一棵“树”中,“树”的边缘位置处的宏块(用户视觉对此比较敏感)属于关键宏块,非边缘位置处的宏块(用户视觉对此不够敏感)为非关键宏块。还可以是,游戏画面中用户瞄准的对象(即位于用户注视点位置)属于关键宏块,被瞄准的对象旁边的背景属于非关键宏块。
需要说明的是,还可以综合考虑游戏图像中各个宏块距观察点的距离、在所属对象中所处的位置以及是否位于用户注视点位置这三个因素,来确定游戏中的各个宏块的字节分配权重,进而确定各个宏块属于关键宏块还是非关键宏块。
在一个实施例中,步骤S306包括:根据各宏块所对应的字节分配权重,确定权重中间值;从各宏块中,识别字节分配权重大于或等于权重中间值的宏块,得到关键宏块;将字节分配权重小于权重中间值的宏块识别为非关键宏块。
在一个实施例中,计算机设备可以获取一个预先设定的权重中间值,将字节分配权重大于或等于权重中间值的宏块,识别为关键宏块,将字节分配权重小于该权重中间值的宏块,识别为非关键宏块。预先设定的权重中间值,可以是根据历史经验确定的权重中间值。
在另一个实施例中,计算机设备也可以根据当前图像帧划分得到的宏块的字节分配权重,动态地确定权重中间值,并将字节分配权重大于或等于权重中间值的宏块,识别为关键宏块,将字节分配权重小于该权重中间值的宏块,识别为非关键宏块。具体地,计算机设备可以将各宏块对应的字节分配权重中的最大字节分配权重和最小字节分配权重求平均,得到权重中间值。
S308,控制各非关键宏块相应的字节数降低、且各关键宏块相应的字节数不降低。
可以理解,每个宏块被划分后,都在编码器中有默认的字节数,计算机设备可以通过调整每个宏块的量化参数的值,在默认的字节数的基础上进行调整,来控制各非关键宏块相应的字节数降低、且各关键宏块相应的字节数不降低。
需要说明的是,各关键宏块相应的字节数不降低包括各关键宏块相应的字节数升高或维持不变中任意一种情况。即,计算机设备可以控制各关键宏块相应的字节数升高或维持不变,来实现控制各宏块相应的字节数不降低的效果。
具体地,计算机设备可以通过调高非关键宏块的量化参数的值,来控制各非关键宏块相应的字节数降低。计算机设备可以通过调低关键宏块的量化参数的值,来控制各关键宏块相应的字节数升高,或,保持关键宏块的量化参数的值不变,来控制各关键宏块相应的字节数不变。
在一个实施例中,步骤S308包括:控制各非关键宏块相应的字节数降低、且保持各关键宏块相应的字节数不变。可以理解,这种情况下可以降低码率,在保持关键宏块的图像质量不变的情况下,通过降低非关键宏块相应的字节数,来降低整体的码率,从而节省带宽。
具体地,计算机设备可以将所有关键宏块,采用编码器的默认编码参数进行编码,即,不改变所有关键宏块的字节数进行编码,从而不降低关键宏块的编码质量。针对非关键宏块,采用较少码率的编码参数,即,降低非关键宏块的字节数,并采用降低后的较少字节数对非关键宏块进行编码。从而节省带宽。
S310,将各非关键宏块和关键宏块分别按照相应控制后的字节数进行编码。
具体地,计算机设备可以将各非关键宏块按照降低后的字节数进行编码,将各关键宏块按照升高或维持不变后的字节数进行编码,得到满足相应字节数的编码数据。可以理解,这一过程相当于对各宏块的量化处理。然后,可以将编码数据经过熵编码处理。
进一步地,计算机设备可以将熵编码处理后的编码数据作为视频流,通过网络传输,发送至客户端。
在一个实施例中,所述当前图像帧,是从游戏进程中获取的当前待编码的图像帧。该方法还包括:将编码后的数据作为视频流传输至游戏客户端;所述视频流用于指示所述游戏客户端,解码所述编码后的数据并展示。
上述图像编码方法,获取由当前图像帧划分得到的宏块;确定各宏块对应的字节分配权重;根据所述字节分配权重,识别所述宏块中的关键宏块和非关键宏块。能够准确识别出当前图像帧中关键图像和非关键图像,进而,控制各非关键宏块相应的字节数降低、且各关键宏块相应的字节数不降低,将各非关键宏块和关键宏块分别按照相应控制后的字节数进行编码。即,对关键图像和非关键图像的码率进行动态调整。通过降低非关键图像的码率,而保持对关键图像的码率不降低,这样一来,在当前图像帧中的关键图像保持同等画质的情况下,降低了带宽。因为,如果是降低非关键宏块的字节数,保持关键宏块相应的字节数不变,那么,关键宏块所属的关键图像的画质就会保持不变,但是由于降低了非关键宏块的字节数,所以,整体来说,降低了当前图像帧的码率,进而在保持关键图像的画质不变的情况下,降低了带宽。如果是在码率不变的情况下,降低非关键宏块的字节数,升高关键宏块相应的字节数,那么,相当于在同等码率下,关键图像的画质提高,反过来讲,关键图像在保持同等画质的情况下,带宽相当于降低了。
在一个实施例中,该方法还包括:识别各宏块在所属对象中所处的第一位置。本实施例中,步骤S304包括:根据所述第一位置,确定各宏块对应的第一字节分配权重;其中,处于所属对象的边缘位置的宏块所对应的第一字节分配权重,大于处于所属对象的非边缘位置的宏块所对应的第一字节分配权重。
其中,宏块所属对象,是宏块所属于的对象。
可以理解,当前图像帧中可以包括至少一个对象。将当前图像帧划分为宏块后,相当于将该当前图像帧中包括的对象也划分为宏块。一个对象可以划分为一个或多个宏块,那么,宏块所属对象,即为划分得到该宏块的对象。比如,当前图像帧中包括一个虚拟人物对象,假设,这个虚拟人物对象被划分成50个宏块,那么,这50个宏块所属对象,即为该虚拟人物对象。
具体地,计算机设备可以识别各宏块在所属对象中所处的第一位置。根据该第一位置,判定各宏块是否处于所属对象的边缘位置。当宏块在所属对象中所处的第一位置属于该所属对象的边缘位置时,则为该宏块分配较大的第一字节分配权重。当宏块在所属对象中所处的第一位置不属于该所属对象的边缘位置时,则为该宏块分配较小的第一字节分配权重。
在一个实施例中,计算机设备中可以预先设置了边缘位置和第一字节分配权重之间的对应关系。该对应关系,用于表明宏块在所属对象中所处位置的不同,其所对应的第一字节分配权重不同。其中,处于所属对象的边缘位置的宏块所对应的第一字节分配权重,大于处于所属对象的非边缘位置的宏块所对应的第一字节分配权重。计算机设备可以在确定宏块所处的第一位置是否属于宏块所属对象的边缘位置时,结合该对应关系,查找该宏块所对应的第一字节分配权重。
在一个实施例中,计算机设备可以预先设置了边缘权重配置表,边缘权重配置表,用于表征边缘位置和第一字节分配权重之间的对应关系。
需要说明的是,由于人类视觉系统对物体边缘更敏感,一般通过边缘信息获取目标物体的具体形状,所以,可以可使处于边缘位置的宏块分配较大的权重,即较多的字节数,从而有较高的清晰度;而未处于边缘位置的宏块分配较小的权重,即较少的字节数,清晰度较低。
可以理解,计算机设备可以采用边缘检测算法,来检测各宏块在所属对象中所处的第一位置是否属于边缘位置。在一个实施例中,计算机设备可以采用Sobel算子(它是一个离散的一阶差分算子,用来计算图像亮度函数的一阶梯度之近似值)、Isotropic Sobel算子(即,各向同性Sobel算子)、Roberts算子(又称罗伯茨算子,是一种利用局部差分算子寻找边缘的算子)、Prewitt算子(是一种用于边缘检测的一阶微分算子)、Laplacian算子(是n维欧几里德空间中的一个二阶微分算子)或Canny算子(是John F.Canny于1986年开发出来的一个多级边缘检测算法)等中的任意一种,来检测各宏块在所属对象中所处的第一位置是否属于边缘位置。在一个实施例中,计算机设备可以获取当前图像帧的深度图,检测各宏块在所属对象中所处的第一位置是否属于边缘位置。
上述实施例中,考虑到人类视觉系统对物体边缘更敏感的特征,对处于边缘的宏块分配较多的字节分配权重,不处于边缘的宏块分配较少的字节分配权重,从而使得用户更敏感的、比较关注的位置的图像质量较高,不关注的位置的图像质量较低,进而在保证用户对关键图像的质量需求的前提下,节省带宽。
在一个实施例中,步骤S304确定各宏块对应的字节分配权重包括:检测各宏块是否位于用户注视点位置;根据检测结果,确定各宏块对应的第二字节分配权重;其中,位于所述用户注视点位置处的宏块对应的第二字节分配权重,大于位于所述用户注视点位置之外的宏块所对应的第二字节分配权重。
其中,用户注视点位置,是指用户注视的位置。用户,即指看当前图像帧的用户。比如,当前图像帧为游戏视频图像帧时,用户,即为玩游戏的用户。
具体地,计算机设备可以获取宏块在当前图像帧中所处的第二位置,以及获取用户注视点位置,并将各宏块所处的第二位置与用户注视点位置进行匹配,得到检测结果。可以理解,检测结果,包括宏块位于用户注视点位置和不位于用户注视点位置这两种情况。因此,计算机设备可以根据检测结果,针对位于用户注视点位置处的宏块,分配较高的第二字节分配权重,针对不位于用户注视点位置处的宏块,分配较低的第二字节分配权重。
可以理解,计算机设备可以预先设置用户注视点位置,也可以根据观察点的历史运动轨迹预测在当前图像帧中的用户注视点位置。
在一个实施例中,计算机设备中可以预先设置了注视点位置和第二字节分配权重之间的对应关系。该对应关系,用于表明宏块位于和不位于用户注视点位置的不同情况下,其所对应的第二字节分配权重不同。其中,位于所述用户注视点位置处的宏块对应的第二字节分配权重,大于位于所述用户注视点位置之外的宏块所对应的第二字节分配权重。计算机设备可以在确定宏块在当前图像帧中所处的第二位置是否位于用户注视点位置时,结合该对应关系,查找该宏块所对应的第二字节分配权重。
在一个实施例中,计算机设备可以预先设置了注视点权重配置表,注视点权重配置表,用于表征注视点位置和第二字节分配权重之间的对应关系。
上述实施例中,由于用户注视的位置通常是实现比较集中的,比较关注的位置,所以,对处于用户注视点位置的宏块分配较多的字节分配权重,不处于用户注视点位置的宏块分配较少的字节分配权重,从而使得用户比较关注的位置的图像质量较高,不关注的位置的图像质量较低,进而在保证用户对关键图像的质量需求的前提下,节省带宽。
在一个实施例中,检测各宏块是否位于用户注视点位置包括:获取各宏块在当前图像帧中所处的第二位置;针对每个宏块,当宏块所处的第二位置与预设的注视点位置匹配时,则判定宏块位于用户注视点位置。本实施例中,根据检测结果,确定各宏块对应的第二字节分配权重包括:从预设的注视点权重表中,查找与各宏块所处的第二位置对应的第二字节分配权重;其中,预设注视点权重表中预设的注视点位置所对应的字节分配权重,大于预设的非注视点位置所对应的字节分配权重。
具体地,注视点位置可以预先设置,计算机设备可以获取预设的注视点位置,并将各宏块当前图像帧中所处的第二位置分别与预设的注视点位置进行匹配,当宏块在当前图像帧中所处的第二位置,与预设的注视点位置匹配时,则判定宏块位于用户注视点位置。
计算机设备中预先设置了注视点权重表。预设的注视点权重表中包括预设的位置和字节分配权重之间的对应关系。预设的位置包括预设的注视点位置和非注视点位置。其中,该预设的注视点权重表中,预设的注视点位置所对应的字节分配权重,大于预设的非注视点位置所对应的字节分配权重。在一个实施例中,预设的注视点权重表中包括预设的位置可以是以X,Y为坐标的二维数字。
以FPS游戏为例进行说明,视频图像帧的中心位置,通常情况下是经常被用户注视的,所以,可以将视频图像帧的中心位置预先设置为注视点位置,将视频图像帧的边缘位置预先设置为非注视点位置,那么,预设的注视点权重表中,视频图像帧的中心位置的字节分配权重大于视频图像帧的边缘位置的字节分配权重。
计算机设备可以从预设的注视点权重表中,查找与各宏块所处的第二位置对应的字节分配权重,即得到各宏块的第二字节分配权重。
上述实施例中,预先设置注视点位置,通过判断宏块的位置是否处于预设的注视点位置,来确定宏块是否处于用户注视点,能够准确、便捷地确定出处于用户注视点位置的宏块,从而能够准确、快速地确定各宏块对应的字节分配权重。
在一个实施例中,该方法还包括:获取观察点的历史运动轨迹;根据历史运动轨迹,预测当前图像帧中的用户注视点位置。本实施例中,检测各宏块是否位于用户注视点位置包括:针对每个宏块,当宏块在当前图像帧中所处的第二位置与预测的用户注视点位置相匹配时,则判定宏块位于用户注视点位置。
其中,观察点,用于观察当前图像帧的内容并将该当前观察到的内容显示到屏幕上。当前图像帧即为观察点当前所观察到的、所看到的内容。可以理解,针对一些在三维空间中创建的三维场景视图,由于观察者的屏幕是二维的,因此需要通过某种方式来来捕获视图,并使之平面化,才能显示在屏幕上,所以,这个过程通过观察点完成。观察点可以是摄像机。当摄像机移动和旋转时,显示的视图也将相应地移动和旋转。
可以理解,不同视频图像帧所对应的观察点可能不同,即,观察点会产生一定的运动。所以,观察点的历史运动轨迹,即为,由观察点对应于各历史视频图像帧时所处的位置形成的轨迹。历史视频图像帧,是在当前图像帧之前的已经编码的视频图像帧。
可以理解,由于摄像机的位置通常由用户操控,用户的操控习惯往往具有规律性,所以,观察点的历史运动轨迹通常具有规则性。因此,计算机设备可以根据观察点的历史运动轨迹,预测当前图像帧中的用户注视点位置。针对每个宏块,当宏块在当前图像帧中所处的第二位置与预测的用户注视点位置相匹配时,则判定宏块位于用户注视点位置。当宏块在当前图像帧中所处的第二位置与预测的用户注视点位置不匹配时,则判定宏块不位于用户注视点位置。
需要说明的是,在一些应用场景下(比如,FPS/TPS游戏),观察点是被鼠标等控件进行操控的,而用户的注视点往往也是跟随鼠标等操控控件,所以,当观察点的位置由操控控件操控时,计算机设备可以根据观察点的历史运动轨迹,预测当前图像帧所对应的观察点的位置,得到用户注视点位置。即,观察点的位置和用户注视点位置一致。
在其他实施例中,计算机设备也可以先根据观察点的历史运动轨迹,预测当前图像帧所对应的观察点的位置,进而根据预设的观察点的位置和用户注视点位置之间的相对位置关系,确定用户注视点位置。
上述实施例中,根据观察点的历史运动轨迹,预测当前图像帧中的用户注视点位置,能够结合实际情况,动态地确定当前图像帧中的用户注视点位置,使得确定的用户注视点位置更加准确。进而,能够更准确地确定各宏块对应的字节分配权重。
在一个实施例中,当前图像帧,是观察点当前观察到的图像内容。该方法还包括:获取当前图像帧所对应的深度图。步骤S304确定各宏块对应的字节分配权重包括:根据深度图,确定各宏块距离观察点的深度值;根据深度值,确定各宏块对应的第三字节分配权重;第三字节分配权重的大小与深度值的大小正相关。
其中,当前图像帧,可以是三维场景视频中当前待编码的图像帧。Depth Map(深度图),是指将从观察点到场景中各点的距离(深度)作为像素值的图像。
可以理解,在步骤S302之前,当前图像帧就已经在服务器端完成渲染了,深度图即为渲染过程中产生的数据。计算机设备可以从渲染得到的数据中,获取当前图像帧对应的深度图。深度图可以是一个二维数组,数组中每一个数字,对应相应视频图像帧中一个或数个像素的深度值。
图4为一个实施例中图像渲染的简示图。参照图4,以游戏视频为例,对游戏视频图像帧进行渲染的过程进行简要说明。最终得到帧缓冲和深度缓冲。其中,帧缓冲,即为缓冲的视频图像帧,深度缓冲,即为缓冲的与视频图像帧对应的深度图。计算机设备可以从深度缓冲中获取与当前图像帧对应的深度图。
为了便于理解视频图像帧和深度图之间的区别,先结合图5进行说明。图5为一个实施例中视频图像帧和深度图的对比示意图。参照图5,(a)为视频图像帧,(b)为相应的深度图。
进一步地,计算机设备可以从获取的深度图中,查找各宏块距离观察点的深度值;根据深度值,确定各宏块对应的第三字节分配权重;第三字节分配权重的大小与深度值的大小负相关。
可以理解,用户一般对较远距离的图像关注度较少,如三维场景游戏中的天空,远处的山峰等,而对较近的物体关注度较高,如用户控制的虚拟人物对象,佩戴的枪械等,因此,可以将代表远处的宏块(即深度值较大的宏块),分配较小的权重,较近的宏块(即深度值较小的宏块)分配较大的权重。
在一个实施例中,计算机设备中可以预先设置了深度值和第三字节分配权重之间的对应关系。该对应关系,用于表明宏块的深度值不同情况下,其所对应的第二字节分配权重不同。其中,深度值大的宏块对应的第三字节分配权重,小于深度值小的宏块所对应的第三字节分配权重。计算机设备可以结合该对应关系,根据被宏块的深度值,查找该宏块所对应的第三字节分配权重。
在一个实施例中,计算机设备可以预先设置了深度权重配置表,深度权重配置表,用于表征深度值和第三字节分配权重之间的对应关系。即,深度权重配置表中存储了字节权重分配策略。需要说明的是,不同的游戏类型或游戏场景所对应的分配策略也可以不同。
上述实施例中,由于距离近的画面通常是用户比较看得到的,比较关注的,距离远的通常是不太关注的,所以,通过结合深度图,根据各宏块距离观察点的深度值确定各宏块的字节分配权重,字节分配权重的大小与深度值的大小正相关。从而,能够快速、准确地使得用户比较关注的位置的图像质量较高,不关注的位置的图像质量较低,进而在保证用户对关键图像的质量需求的前提下,节省带宽。
在一个实施例中,步骤S304确定各宏块对应的字节分配权重还包括:获取各宏块对应的第一字节分配权重和第二字节分配权重;第一字节分配权重,是根据各宏块在所属对象中是否属于边缘位置确定;第二字节分配权重,是根据各宏块是否处于用户注视点位置确定;根据同一宏块所对应的第一字节分配权重、第二字节分配权重和第三字节分配权重,得到各宏块最终对应的字节分配权重。
可以理解,计算机设备可以依据宏块的深度值(用于确定第三字节分配权重)、宏块在所属对象中所处的第一位置是否属于边缘位置(用于确定第一字节分配权重)、以及宏块是否处于用户注视点位置(用于确定第二字节分配权重)这三个条件,来确定各宏块最终对应的字节分配权重。
具体地,计算机设备可以直接将同一宏块所对应的第一字节分配权重、第二字节分配权重和第三字节分配权重相加,得到各宏块最终对应的字节分配权重。计算机设备也可以分别获取各种类型的字节分配权重所对应的预设占比,将第一字节分配权重、第二字节分配权重和第三字节分配权重分别按照相应的预设占比进行加权求和,得到各宏块最终对应的字节分配权重。
上述实施例中,将根据注视点位置、边缘位置和距离观察点的远近确定出的多个字节分配权重结合起来,确定宏块最终对应的字节分配权重,能够提高字节分配权重的准确性。
为了便于理解,现结合图6和图7,对传统方法的框图和本申请实施例中的图像编码方法的框图进行区分说明。图6和图7皆以云游戏为例进行说明。图6为传统方法的框图,图7为本申请实施例中的图像编码方法的框图。参照图7,相较于图6在服务器端进行了改进,增加了获取深度图、获取摄像机信息以及云游戏率失真算法这几个模块,而并不用在客户端上进行改进,即支持简单功能的客户端。其中,获取深度图的模块的功能是通过游戏引擎或者图像API截取3D游戏每帧图像渲染中的深度信息,深度信息是一个二维矩阵,该矩阵中每个数值对应最终图像中一个或几个像素的深度值,由此可用于判断像素之间的前后关系,即,宏块的深度值越深表示该宏块对应的像素离摄象机越远。获取摄像机信息的模块,用于获取摄像机的历史运动轨迹等。摄像机相当于观察点。云游戏率失真算法,即为本申请各实施例中所执行的图像编码方法。
图8为一个实施例中图像编码方法的流程示意图。同样以云游戏为例进行说明。参照图8,在服务器端,首先从游戏进程中获取游戏图像帧缓冲和深度图缓冲,均是二维数组,然后,将每帧图像帧编码划分为切片(即SLICE片),通过预估切片字节数,将切片划分成宏块,再经过宏块运动估计处理,将宏块送入视频编码器中,视频编码器包含码率估计模块、码率控制模块、熵编码模块,当然视频编码器中还包含DCT编码模块,帧间/帧内处理模块、方块滤波模块等,在此为简便说明,并未一一列出。码率控制模块主要包含宏块量化权重计算模块,该模块是根据深度图、权重配置表和3D游戏内的摄象机轨迹计算编码器中对当前图像帧中每个宏块分配字节数的权重值,一般通过调整每个宏块的量化参数QP值,来控制每个宏块所占用的字节数。而码率估计模块数据来自两方面,客户端的反馈的数据传输异常信息和服务器端本身的网络监控的网络状况监控数据,数据传输异常信息包括丢包率、延时和乱序数据等,通过数据传输异常信息和网络状况监控数据推算出下一端时间网络信道的带宽容量,并把此带宽容量反馈到视频编码器中,由视频编码器调整每个宏块的量化参数QP值,来控制每个宏块所占用的字节数,以编码出对应信道带宽的数据。
图9为一个实施例中宏块量化权重计算模块框图。参照图9,基于当前图像帧的深度图,计算宏块深度值权重(即,依据宏块的深度值确定的第三字节分配权重)、注视点权重(即,依据宏块是否位于用户注视点位置所确定的第二字节分配权重)和边缘权重(即,依据宏块是否处于所属对象的边缘位置所确定的第一字节分配权重),然后将三种权重值相加。进一步地,还可以基于预设的权重计算策略,对各个宏块相加后得到的权重值进行调整计算,得到宏块最终的权重数据。
图10为一个实施例中宏块量化权重计算流程示意图。参照图10,可以将预设的权重表(包括预设的注视点权重表、边缘权重表和宏块深度权重表)导入,根据宏块二维坐标,判断宏块是否位于预设的注视点位置,将判断结果结合预设的注视点权重表,确定各宏块在通过预设注视点位置这一方面所对应的字节分配权重(即,预设注视点位置权重)。然后,基于深度图判断宏块是否位于所属物体的边缘位置,并将判断结果结合边缘权重表,确定各宏块在是否是边缘位置这一方面所对应的字节分配权重(即,边缘位置权重)。并且,基于摄像机运动轨迹,预测用户注视点位置,判断宏块是否位于用户注视点位置,并根据判断结果,确定各宏块在是否位于预测的用户注视点位置这一方面所对应的字节分配权重((即,预测的注视点位置权重)。基于宏块深度权重表,确定各宏块深度权重。进而,针对每个宏块,将同一宏块对应的预设注视点位置权重、边缘位置权重、预测的注视点位置权重和宏块深度权重相加,得到该宏块最终的字节分配权重。
在一个实施例中,检测各宏块是否位于用户注视点位置包括:获取眼球追踪信息,通过所述眼球追踪信息,捕获用户注视点位置;针对每个宏块,当宏块在当前图像帧中所处的第二位置与捕获的用户注视点位置相匹配时,则判定宏块位于用户注视点位置。
具体地,计算机设备可以通过眼球追踪硬件,来对用户的眼球进行追踪,得到眼球追踪信息。进而,基于眼球追踪信息,捕获当前的用户注视点位置。进一步地,计算机设备可以将各宏块在当前图像帧中所处的第二位置分别与捕获的用户注视点位置进行匹配,当宏块在当前图像帧中所处的第二位置与捕获的用户注视点位置相匹配时,则判定宏块位于用户注视点位置。当宏块在当前图像帧中所处的第二位置与捕获的用户注视点位置不匹配时,则判定宏块不位于用户注视点位置。
图11为一个实施例中的图像编码方法的框图。图11相较于图6所示的传统方法,在客户端增加了一个眼球跟踪硬件来跟踪眼球,来捕获用户注视点位置,进而可以将用户注视点位置输入至服务端的视频编码器中,以对当前图像帧进行选择性编码优化。
上述实施例中,通过眼球追踪能够准确地捕获用户注视点位置。进而,能够准确地使得用户比较关注的位置的图像质量较高,不关注的位置的图像质量较低,进而在保证用户对关键图像的质量需求的前提下,节省带宽。
可以理解,通过深度值、边缘位置和用户注视点位置确定的各宏块的字节分配权重,仅需要对图像编码方法进行改进即可,不需要对游戏进程本身进行改进,即可实现减少带宽的效果。在其他实施例中,也可以对游戏本身进行改进,游戏进程可以提供关键对象的世界坐标,计算机设备可以基于所提供的世界坐标,预测关键宏块在当前图像帧中所处的二维坐标位置,进而基于二维坐标位置,在当前图像帧中找到关键宏块,并通过控制各非关键宏块相应的字节数降低、且各关键宏块相应的字节数不降低的方式,减少带宽,或提高关键宏块的图像质量。
图12为一个实施例中的图像编码方法的框图。图12相较于图7所示的框图,对游戏进程进行了改进,游戏进程可以提供游戏实体世界坐标,进而指定所关注的对象,对指定的关注对象进行选择性的编码优化。
在一个实施例中,步骤S308控制各非关键宏块相应的字节数降低、且各关键宏块相应的字节数不降低包括:当当前预估码率不变时,通过调整量化参数的值,控制各非关键宏块相应的字节数降低、且各关键宏块相应的字节数升高;其中,控制后的当前图像帧所对应的字节数小于或等于字节数阈值。
其中,当前预估码率,是当前预估的码率。码率,是指单位时间传送的数据量。字节数阈值,是视频图像帧对应的最大的字节数。由于,在单位时间内有预设数量的视频图像帧在进行传输,所以,当前码率不变的情况下,相当于各当前图像帧所对的字节数阈值不变,那么,可以通过降低关键宏块相应的字节数,来升高关键宏块相应的字节数,从而提高用户关注的宏块图像质量。这样一来,对于用户关注的宏块来说,在相同码率的情况下,图像质量有所提高,换言之,针对相同图像质量,也就起到了降低码率,减少带宽的效果。
控制后的当前图像帧所对应的字节数,是控制后的各非关键宏块相应的字节数与控制后的各关键宏块相应的字节数的总和。
在一个实施例中,计算机设备可以设定一个权重中间值,筛选字节分配权重小于权重中间值的宏块,得到非关键宏块,筛选字节分配权重大于或等于权重中间值的宏块,得到关键宏块。计算机设备可以将所有宏块的字节分配权重分别与权重中间值相减,得到各宏块对应的差值,将各非关键宏块所对应的差值求和,得到第一总差值,将各关键宏块所对应的差值求和,得到第二总差值。计算机设备可以确定第二总差值与第一总差值之间的比值,得到权重调整系数,将各非关键宏块的字节分配权重与该权重调整系数相乘,得到非关键宏块的新的字节分配权重。按照新的字节分配权重,控制各非关键宏块相应的字节数降低、且各关键宏块相应的字节数升高。
可以理解,这样一来,能够使非关键宏块的新的字节分配权重总和,与关键宏块的权重总和满足接近条件。而且,控制后的当前图像帧所对应的字节数小于或等于字节数阈值,所以能够防止对关键宏块的字节数提升的过高,且,防止对非关键宏块的字节数降低的过低,从而避免出现图像画质不均衡的情况。
在一个实施例中,可以通过以下公式调整非关键宏块的字节分配权重:
其中,A为第二总差值;B为第一总差值,S为权重中间值;Wij为(i,j)位置处的宏块所对应的字节分配权重。W'为非关键宏块对应的新的字节分配权重。
上述实施例中,在保持当前码率不变的条件下,降低用户不关注的图像的质量,提高用户关注的图像质量。相当于,在当前图像帧中的关键图像保持同等画质的情况下,减少了带宽。
在一个实施例中,字节数阈值的确定步骤包括:获取网络状况监控数据;获取数据传输异常信息;根据所述网络状况监控数据和数据传输异常信息,预测带宽容量;根据所述带宽容量,确定所述当前图像帧对应的字节数阈值。
可以理解,每个视频图像帧都有对应的字节数阈值,字节数阈值为相应视频图像帧对应的最大字节数。
网络状况监控数据,是通过监控网络状况得到的数据。可以理解,网络状况监控数据一定程度上能够表征当前带宽情况。
其中,数据传输异常信息,用于描述在传输编码后的数据至客户端时,所出现的异常情况。可以理解,数据传输异常信息,是客户端反馈的数据。
在一个实施例中,数据传输异常信息包括丢包率、延时和乱序数据等信息。
具体地,计算机设备可以根据所述网络状况监控数据和所述数据传输异常信息,预测下一段时间中网络信道的带宽容量。计算机设备可以根据该预测的带宽容量,确定当前图像帧对应的字节数阈值。
上述实施例中,根据网络状况监控数据和数据传输异常信息,实时预测带宽容量,进而根据带宽容量能够动态地、准确地确定当前图像帧所对应的字节数阈值(即最大字节数)。从而能够在满足该准确地字节数阈值的条件下,动态进行调整,保证用户关注的图像的画质,更好地平衡画质和带宽。
图13至图14为一个实施例中图像编码的效果示意图。参照图13,为使用传统方法在带宽10.678Mb/s下,得到的视频图像帧。参照图14,是使用本申请各实施例中的图像编码方法得到的视频图像帧,图14中的视频图像帧中关键位置的清晰度与图13中一致,但带宽仅使用了7.504Mb/s。而通常情况下,用户仅对关键位置处的图像具有高清晰度要求,所以,相当于在满足用户高清晰度要求的情况下,很大程度上节省了带宽。
现结合图13和图14,以本申请实施例中的图像编码方法应用于云游戏场景进行举例说明。参照图13和图14,该游戏画面中包括多个宏块,根据各宏块距观察点的深度值,可以为各宏块分配相应的字节分配权重,其中,深度值大的分配较少的字节分配权重,深度值小的分配较大的字节分配权重。那么,可以根据字节分配权重,识别字节分配权重较大的宏块为关键宏块,即距观察点近的宏块,比如,图13和图14中近处的虚拟人物和近处的物体(比如,近处的“树”)。以及,识别字节分配权重较小的宏块为非关键宏块,即距离观察点远的宏块,比如,图13和图14中远处的“山”和“天空”。可以理解,关键宏块,比如近处的虚拟人物和“树”,是游戏玩家比较关注的,非关键宏块,比如远处的“山”和“天空”,就属于游戏玩家在玩游戏时不太关注的。图14,是使用本申请各实施例中的图像编码方法得到的视频图像帧。参照图14中的构成近处的虚拟人物和物体的一系列关键宏块,其清晰度与图13中的清晰度保持一致,但是,图14中针对构成远处的“山”和“天空”的一系列非关键宏块(用户视线不关注的宏块),通过控制其字节数的降低,使其清晰度相较于图13有所下降。这样一来,图14相较于图13而言,在满足用户关注的关键位置的高清晰度的情况下,降低了带宽。
图15为一个实施例中图像编码方法的时序图。参照图15,虚线左侧的全部为服务器端、虚线右侧的为客户端。首先在服务器端,游戏进程发送图像和深度图至视频编码器中的本申请方案中的编码器码率控制模块,图像/深度图像截取模块通过外部程序截获发送的图像和深度图,然后将截获的图像和深度图传送至编码器码率控制模块,游戏进程可以发送摄象机运动轨迹数据(即观察点历史运动轨迹)至编码器码率控制模块,该编码器码率控制模块结合客户端反馈的预估码率,推算和设定下一帧图像所能占用的最大字节数,然后,在对当前图像帧进行编码处理时,当前图像帧所对应的字节数阈值,即为所推算出的最大字节数。可以理解,编码器码率控制模块可以结合深度图、摄象机运动轨迹数据和三种宏块权重配置,得到所有宏块的权重值。编码器码率控制模块可以计算出每个宏块的量化参数QP,并将宏块数据和量化参数QP值发送至编码器宏块处理模块在编码器宏块处理模块中通过调整每个宏块的量化参数QP值,以对各宏块进行量化,得到相应字节数的编码数据,即为量化后的数据。最后,经过编码器熵编码模块进行熵编码处理,将熵编码后数据通过网络传输模块,实现将视频编码数据送入客户端解码并显示。
如图16所示,在一个实施例中,提供了一种图像编码装置1600,该装置1600包括:获取模块1602、权重确定模块1604、字节调整模块1606以及编码模块1608,其中:
获取模块1602,用于获取由当前图像帧划分得到的宏块。
权重确定模块1604,用于确定各宏块对应的字节分配权重。
字节调整模块1606,用于根据所述字节分配权重,识别所述宏块中的关键宏块和非关键宏块;控制各非关键宏块相应的字节数降低、且各关键宏块相应的字节数不降低。
编码模块1608,用于将各非关键宏块和关键宏块分别按照相应控制后的字节数进行编码。
在一个实施例中,权重确定模块1604还用于识别各宏块在所属对象中所处的第一位置;根据所述第一位置,确定各宏块对应的第一字节分配权重;其中,处于所属对象的边缘位置的宏块所对应的第一字节分配权重,大于处于所属对象的非边缘位置的宏块所对应的第一字节分配权重。
在一个实施例中,权重确定模块1604还用于检测各宏块是否位于用户注视点位置;根据检测结果,确定各宏块对应的第二字节分配权重;其中,位于所述用户注视点位置处的宏块对应的第二字节分配权重,大于位于所述用户注视点位置之外的宏块所对应的第二字节分配权重。
在一个实施例中,权重确定模块1604还用于获取各宏块在当前图像帧中所处的第二位置;针对每个宏块,当所述宏块所处的第二位置与预设的注视点位置匹配时,则判定所述宏块处于用户注视点位置;从预设的注视点权重表中,查找与各宏块所处的第二位置对应的第二字节分配权重;其中,所述预设注视点权重表中预设的注视点位置所对应的字节分配权重,大于预设的非注视点位置所对应的字节分配权重。
在一个实施例中,权重确定模块1604还用于获取观察点的历史运动轨迹;根据所述历史运动轨迹,预测当前图像帧中的用户注视点位置;针对每个宏块,当所述宏块在所述当前图像帧中所处的第二位置与预测的用户注视点位置相匹配时,则判定所述宏块处于用户注视点位置。
在一个实施例中,所述当前图像帧是观察点当前观察到的图像内容;权重确定模块1604还用于获取所述当前图像帧所对应的深度图;根据所述深度图,确定各宏块距离观察点的深度值;根据所述深度值,确定各宏块对应的第三字节分配权重;所述第三字节分配权重的大小与所述深度值的大小负相关。
在一个实施例中,权重确定模块1604还用于获取各宏块对应的第一字节分配权重和第二字节分配权重;所述第一字节分配权重,是根据各宏块在所属对象中是否属于边缘位置确定;所述第二字节分配权重,是根据各宏块是否处于用户注视点位置确定;根据同一宏块所对应的第一字节分配权重、第二字节分配权重和第三字节分配权重,得到各宏块最终对应的字节分配权重。
在一个实施例中,字节调整模块1606还用于根据各宏块所对应的字节分配权重,确定权重中间值;从各宏块中,识别字节分配权重大于或等于权重中间值的宏块,得到关键宏块;将字节分配权重小于权重中间值的宏块识别为非关键宏块。
在一个实施例中,字节调整模块1606还用于当当前预估码率不变时,通过调整量化参数的值,控制各非关键宏块相应的字节数降低、且各关键宏块相应的字节数升高;其中,控制后的当前图像帧所对应的字节数小于或等于字节数阈值。
在一个实施例中,字节调整模块1606还用于获取网络状况监控数据;获取数据传输异常信息;根据所述网络状况监控数据和所述数据传输异常信息,预测带宽容量;根据所述带宽容量,确定所述当前图像帧对应的字节数阈值。
在一个实施例中,字节调整模块1606还用于控制各非关键宏块相应的字节数降低、且保持各关键宏块相应的字节数不变。
如图17所示,在一个实施例中,所述当前图像帧,是从游戏进程中获取的当前待编码的图像帧。该装置1600还包括:
传输模块1610,用于将编码后的数据作为视频流传输至游戏客户端;所述视频流用于指示所述游戏客户端,解码所述编码后的数据并展示。
图18为一个实施例中计算机设备的内部结构示意图。参照图18,该计算机设备可以图1中的服务器110。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质可存储操作系统和计算机程序。该计算机程序被执行时,可使得处理器执行一种图像编码方法。该计算机设备的处理器用于提供计算和控制能力,支撑整个计算机设备的运行。该内存储器中可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行一种图像编码方法。计算机设备的网络接口用于进行网络通信。
本领域技术人员可以理解,图18中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,本申请提供的图像编码装置可以实现为一种计算机程序的形式,计算机程序可在如图18所示的计算机设备上运行,计算机设备的非易失性存储介质可存储组成该图像编码装置的各个程序模块,比如,图16所示的获取模块1602、权重确定模块1604、字节调整模块1606以及编码模块1608。各个程序模块所组成的计算机程序用于使该计算机设备执行本说明书中描述的本申请各个实施例的图像编码方法中的步骤,例如,计算机设备可以通过如图16所示的图像编码装置1600中的获取模块1602获取由当前图像帧划分得到的宏块。计算机设备可以通过权重确定模块1604确定各宏块对应的字节分配权重。计算机设备可以通过字节调整模块1606根据所述字节分配权重,识别所述宏块中的关键宏块和非关键宏块;控制各非关键宏块相应的字节数降低、且各关键宏块相应的字节数不降低。计算机设备可以通过编码模块1608将各非关键宏块和关键宏块分别按照相应控制后的字节数进行编码。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述图像编码方法的步骤。此处图像编码方法的步骤可以是上述各个实施例的图像编码方法中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述图像编码方法的步骤。此处图像编码方法的步骤可以是上述各个实施例的图像编码方法中的步骤。
需要说明的是,本申请各实施例中的“第一”、“第二”和“第三”等仅用作区分,而并不用于大小、先后、从属等方面的限定。
应该理解的是,虽然本申请各实施例中的各个步骤并不是必然按照步骤标号指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,各实施例中至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

Claims (15)

1.一种图像编码方法,所述方法包括:
获取由当前图像帧划分得到的宏块;
确定各宏块对应的字节分配权重;
根据所述字节分配权重,识别所述宏块中的关键宏块和非关键宏块;
控制各非关键宏块相应的字节数降低、且各关键宏块相应的字节数不降低;
将各非关键宏块和关键宏块分别按照相应控制后的字节数进行编码。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
识别各宏块在所属对象中所处的第一位置;
所述确定各宏块对应的字节分配权重包括:
根据所述第一位置,确定各宏块对应的第一字节分配权重;
其中,处于所属对象的边缘位置的宏块所对应的第一字节分配权重,大于处于所属对象的非边缘位置的宏块所对应的第一字节分配权重。
3.根据权利要求1所述的方法,其特征在于,所述确定各宏块对应的字节分配权重包括:
检测各宏块是否位于用户注视点位置;
根据检测结果,确定各宏块对应的第二字节分配权重;
其中,位于所述用户注视点位置处的宏块对应的第二字节分配权重,大于位于所述用户注视点位置之外的宏块所对应的第二字节分配权重。
4.根据权利要求3所述的方法,其特征在于,所述检测各宏块是否位于用户注视点位置包括:
获取各宏块在当前图像帧中所处的第二位置;
针对每个宏块,当所述宏块所处的第二位置与注视点位置匹配时,则判定所述宏块处于用户注视点位置;
所述根据检测结果,确定各宏块对应的第二字节分配权重包括:
从注视点权重表中,查找与各宏块所处的第二位置对应的第二字节分配权重;其中,所述注视点权重表中注视点位置所对应的字节分配权重,大于非注视点位置所对应的字节分配权重。
5.根据权利要求3所述的方法,其特征在于,所述方法还包括:
获取观察点的历史运动轨迹;
根据所述历史运动轨迹,预测当前图像帧中的用户注视点位置;
所述检测各宏块是否位于用户注视点位置包括:
针对每个宏块,当所述宏块在所述当前图像帧中所处的第二位置与预测的用户注视点位置相匹配时,则判定所述宏块处于用户注视点位置。
6.根据权利要求1所述的方法,其特征在于,所述当前图像帧是观察点当前观察到的图像内容;所述方法还包括:
获取所述当前图像帧所对应的深度图;
所述确定各宏块对应的字节分配权重包括:
根据所述深度图,确定各宏块距离观察点的深度值;
根据所述深度值,确定各宏块对应的第三字节分配权重;所述第三字节分配权重的大小与所述深度值的大小负相关。
7.根据权利要求6所述的方法,其特征在于,所述确定各宏块对应的字节分配权重还包括:
获取各宏块对应的第一字节分配权重和第二字节分配权重;所述第一字节分配权重,是根据各宏块在所属对象中是否属于边缘位置确定;所述第二字节分配权重,是根据各宏块是否处于用户注视点位置确定;
根据同一宏块所对应的第一字节分配权重、第二字节分配权重和第三字节分配权重,得到各宏块最终对应的字节分配权重。
8.根据权利要求1所述的方法,其特征在于,所述根据所述字节分配权重,识别所述宏块中的关键宏块和非关键宏块包括:
根据各宏块所对应的字节分配权重,确定权重中间值;
从各宏块中,识别字节分配权重大于或等于权重中间值的宏块,得到关键宏块;
将字节分配权重小于权重中间值的宏块识别为非关键宏块。
9.根据权利要求1所述的方法,其特征在于,所述控制各非关键宏块相应的字节数降低、且各关键宏块相应的字节数不降低包括:
当当前预估码率不变时,通过调整量化参数的值,控制各非关键宏块相应的字节数降低、且各关键宏块相应的字节数升高;
其中,控制后的当前图像帧所对应的字节数小于或等于字节数阈值。
10.根据权利要求9所述的方法,其特征在于,所述字节数阈值的确定步骤包括:
获取网络状况监控数据;
获取数据传输异常信息;
根据所述网络状况监控数据和所述数据传输异常信息,预测带宽容量;
根据所述带宽容量,确定所述当前图像帧对应的字节数阈值。
11.根据权利要求1所述的方法,其特征在于,所述控制各非关键宏块相应的字节数降低、且各关键宏块相应的字节数不降低包括:
控制各非关键宏块相应的字节数降低、且保持各关键宏块相应的字节数不变。
12.根据权利要求1至11中任一项所述的方法,其特征在于,所述当前图像帧,是从游戏进程中获取的当前待编码的图像帧;
所述方法还包括:
将编码后的数据作为视频流传输至游戏客户端;所述视频流用于指示所述游戏客户端,解码所述编码后的数据并展示。
13.一种图像编码装置,其特征在于,所述装置包括:
获取模块,用于获取由当前图像帧划分得到的宏块;
权重确定模块,用于确定各宏块对应的字节分配权重;
字节调整模块,用于根据所述字节分配权重,识别所述宏块中的关键宏块和非关键宏块;控制各非关键宏块相应的字节数降低、且各关键宏块相应的字节数不降低;
编码模块,用于将各非关键宏块和关键宏块分别按照相应控制后的字节数进行编码。
14.一种计算机设备,其特征在于,包括存储器和处理器,所述存储器中存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行权利要求1至12中任一项所述方法的步骤。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行权利要求1至12中任一项所述方法的步骤。
CN201910784836.8A 2019-08-23 2019-08-23 图像编码方法、装置、计算机设备及存储介质 Active CN110493600B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910784836.8A CN110493600B (zh) 2019-08-23 2019-08-23 图像编码方法、装置、计算机设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910784836.8A CN110493600B (zh) 2019-08-23 2019-08-23 图像编码方法、装置、计算机设备及存储介质

Publications (2)

Publication Number Publication Date
CN110493600A true CN110493600A (zh) 2019-11-22
CN110493600B CN110493600B (zh) 2023-07-04

Family

ID=68553337

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910784836.8A Active CN110493600B (zh) 2019-08-23 2019-08-23 图像编码方法、装置、计算机设备及存储介质

Country Status (1)

Country Link
CN (1) CN110493600B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111447451A (zh) * 2020-03-23 2020-07-24 西安万像电子科技有限公司 图像编码、解码方法及装置
CN111479112A (zh) * 2020-06-23 2020-07-31 腾讯科技(深圳)有限公司 一种视频编码方法、装置、设备和存储介质
CN112316424A (zh) * 2021-01-06 2021-02-05 腾讯科技(深圳)有限公司 一种游戏数据处理方法、装置及存储介质
CN112995667A (zh) * 2019-12-02 2021-06-18 北京博雅慧视智能技术研究院有限公司 一种增强型R-Lambda码率控制方法
CN113347421A (zh) * 2021-06-02 2021-09-03 黑芝麻智能科技(上海)有限公司 视频编码和解码方法、装置和计算机设备
CN115333685A (zh) * 2022-10-10 2022-11-11 永鼎行远(南京)信息科技有限公司 基于大数据的信息智能调配系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030122942A1 (en) * 2001-12-19 2003-07-03 Eastman Kodak Company Motion image capture system incorporating metadata to facilitate transcoding
CN102884536A (zh) * 2010-04-07 2013-01-16 苹果公司 用于视频会议压缩的肤色与特征检测
US20140292751A1 (en) * 2013-04-02 2014-10-02 Nvidia Corporation Rate control bit allocation for video streaming based on an attention area of a gamer
CN109325491A (zh) * 2018-08-16 2019-02-12 腾讯科技(深圳)有限公司 识别码识别方法、装置、计算机设备和存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030122942A1 (en) * 2001-12-19 2003-07-03 Eastman Kodak Company Motion image capture system incorporating metadata to facilitate transcoding
CN102884536A (zh) * 2010-04-07 2013-01-16 苹果公司 用于视频会议压缩的肤色与特征检测
US20140292751A1 (en) * 2013-04-02 2014-10-02 Nvidia Corporation Rate control bit allocation for video streaming based on an attention area of a gamer
CN104096362A (zh) * 2013-04-02 2014-10-15 辉达公司 基于游戏者关注区域改进视频流的码率控制比特分配
CN109325491A (zh) * 2018-08-16 2019-02-12 腾讯科技(深圳)有限公司 识别码识别方法、装置、计算机设备和存储介质

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112995667A (zh) * 2019-12-02 2021-06-18 北京博雅慧视智能技术研究院有限公司 一种增强型R-Lambda码率控制方法
CN112995667B (zh) * 2019-12-02 2022-09-23 北京博雅慧视智能技术研究院有限公司 一种增强型R-Lambda码率控制方法
CN111447451A (zh) * 2020-03-23 2020-07-24 西安万像电子科技有限公司 图像编码、解码方法及装置
CN111479112A (zh) * 2020-06-23 2020-07-31 腾讯科技(深圳)有限公司 一种视频编码方法、装置、设备和存储介质
CN111479112B (zh) * 2020-06-23 2020-11-03 腾讯科技(深圳)有限公司 一种视频编码方法、装置、设备和存储介质
CN112316424A (zh) * 2021-01-06 2021-02-05 腾讯科技(深圳)有限公司 一种游戏数据处理方法、装置及存储介质
CN113347421A (zh) * 2021-06-02 2021-09-03 黑芝麻智能科技(上海)有限公司 视频编码和解码方法、装置和计算机设备
CN115333685A (zh) * 2022-10-10 2022-11-11 永鼎行远(南京)信息科技有限公司 基于大数据的信息智能调配系统
CN115333685B (zh) * 2022-10-10 2023-02-28 永鼎行远(南京)信息科技有限公司 基于大数据的信息智能调配系统

Also Published As

Publication number Publication date
CN110493600B (zh) 2023-07-04

Similar Documents

Publication Publication Date Title
CN110493600A (zh) 图像编码方法、装置、计算机设备及存储介质
Guan et al. Pano: Optimizing 360 video streaming with a better understanding of quality perception
WO2021244341A1 (zh) 图像编码方法及装置、电子设备及计算机可读存储介质
CN111918066B (zh) 视频编码方法、装置、设备及存储介质
Yu et al. Content adaptive representations of omnidirectional videos for cinematic virtual reality
US8154553B2 (en) Centralized streaming game server
EP2364190B1 (en) Centralized streaming game server
US8264493B2 (en) Method and system for optimized streaming game server
CN110226316A (zh) 用于对虚拟现实视频执行转换及流传输的系统及方法
CN113170234B (zh) 多向视频的自适应编码和流式传输方法、系统和存储介质
CN108810545B (zh) 用于视频编码的方法、装置、计算机可读介质及电子设备
CN102783153B (zh) 信号处理装置以及动态图像拍摄装置
CN110139035A (zh) 热管理和功率管理
US9984504B2 (en) System and method for improving video encoding using content information
CN112887739A (zh) 电子设备、系统及其控制方法
CN110149554B (zh) 视频图像处理的方法、装置、电子设备以及存储介质
CN102938840A (zh) 应用于多视点视频编码系统的关键帧量化参数选择方法
CN107211081A (zh) 基于独立编码的背景更新的视频传输
DE102019218316A1 (de) 3d-renderer-zu-videocodierer-pipeline für verbesserte visuelle qualität und geringe latenz
CN113630600A (zh) 人类视觉系统自适应视频编码
CN110139102A (zh) 视频编码复杂度的预测方法、装置、设备和存储介质
CN114827662A (zh) 视频分辨率自适应调节方法、装置、设备和存储介质
CN114007059A (zh) 视频压缩方法、解压方法、装置、电子设备及存储介质
CN113286146B (zh) 媒体数据处理方法、装置、设备以及存储介质
CN106603885B (zh) 视频图像处理方法和装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant