CN109151503B - 一种图片文件处理方法及其设备 - Google Patents

一种图片文件处理方法及其设备 Download PDF

Info

Publication number
CN109151503B
CN109151503B CN201810834942.8A CN201810834942A CN109151503B CN 109151503 B CN109151503 B CN 109151503B CN 201810834942 A CN201810834942 A CN 201810834942A CN 109151503 B CN109151503 B CN 109151503B
Authority
CN
China
Prior art keywords
data
rgb
table information
color table
pixel point
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.)
Active
Application number
CN201810834942.8A
Other languages
English (en)
Other versions
CN109151503A (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 CN201810834942.8A priority Critical patent/CN109151503B/zh
Publication of CN109151503A publication Critical patent/CN109151503A/zh
Application granted granted Critical
Publication of CN109151503B publication Critical patent/CN109151503B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs
    • H04N21/4402Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display
    • H04N21/440218Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display by transcoding between formats or standards, e.g. from MPEG-2 to MPEG-4
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/234318Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by decomposing into objects, e.g. MPEG-4 objects
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/234336Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by media transcoding, e.g. video is transformed into a slideshow of still pictures or audio is converted into text
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs
    • H04N21/4402Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display
    • H04N21/440236Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display by media transcoding, e.g. video is transformed into a slideshow of still pictures, audio is converted into text

Abstract

本发明实施例公开一种图片文件处理方法及其设备,其中方法包括如下步骤:接收发送端发送的针对原始图片文件的转码码流,解析所述转码码流以获取图片文件的图片头信息数据段和码流数据,所述码流数据为所述发送端对YUV数据进行编码生成的信息,所述YUV数据为所述发送端对图片文件中每帧图像进行转换生成的数据;根据所述码流数据生成所述YUV数据,并基于所述图片头信息数据段对所述YUV数据进行处理以生成所述图片文件。采用本发明,可以缩小图片文件在传输过程中的文件数据量,降低带宽成本。

Description

一种图片文件处理方法及其设备
技术领域
本发明涉及计算机技术领域,尤其涉及一种图片文件处理方法及其设备。
背景技术
图片文件是由连续多帧图像组成的动画图像,随着计算机技术的不断发展,图片文件由于其具备动态展示的效果,得到了广泛的运用,例如:即时通信、网页展示等,然而由于图片文件的内容较为复杂,导致图片文件的文件数据量较大,需要耗费较大的带宽进行传输,增加了带宽成本。
发明内容
本发明实施例提供一种图片文件处理方法及其设备,可以缩小图片文件在传输过程中的文件数据量,降低带宽成本。
本发明实施例第一方面提供了一种图片文件处理方法,可包括:
接收发送端发送的针对原始图片文件的转码码流,解析所述转码码流以获取图片文件的图片头信息数据段和码流数据,所述码流数据为所述发送端对YUV(Y为亮度分量,UV为色度分量,YUV为一种视频数据格式)数据进行编码生成的信息,所述YUV数据为所述发送端对图片文件中每帧图像进行转换生成的数据;
根据所述码流数据生成所述YUV数据,并基于所述图片头信息数据段对所述YUV数据进行处理以生成所述图片文件。
本发明实施例第二方面提供了一种图片文件处理方法,可包括:
根据原始图片文件生成图片文件的图片头信息数据段,并将图片文件中每帧图像转换为YUV数据;
对所述YUV数据进行编码以生成码流数据;
存储转码码流,所述转码码流包含所述图片头信息数据段和所述码流数据;
解析所述转码码流以获取所述图片头信息数据段和所述码流数据;
根据所述码流数据生成所述YUV数据,并基于所述图片头信息数据段对所述YUV数据进行处理以生成所述图片文件。
本发明实施例第三方面提供了一种图片文件处理方法,可包括:
获取对原始图片文件解码生成的三原色(Red Green Blue,RGB)数据,获取RGB数据中的各像素点的RGB值;
采用各像素点的RGB值对RGB数据的初始颜色表信息进行训练以生成RGB数据的局部颜色表信息;
采用RGB数据的局部颜色表信息对各像素点的RGB值进行更新。
本发明实施例第四方面提供了一种图片文件处理设备,可包括:
信息获取单元,用于接收发送端发送的针对原始图片文件的转码码流,解析所述转码码流以获取图片文件的图片头信息数据段和码流数据,所述码流数据为所述发送端对YUV数据进行编码生成的信息,所述YUV数据为所述发送端对图片文件中每帧图像进行转换生成的数据;
图像编码单元,用于根据所述码流数据生成所述YUV数据,并基于所述图片头信息数据段对所述YUV数据进行处理以生成所述图片文件。
本发明实施例第五方面提供了一种图片文件处理设备,可包括:
图像转换单元,用于根据原始图片文件生成图片文件的图片头信息数据段,并将图片文件中每帧图像转换为YUV数据;
图像压缩单元,用于对所述YUV数据进行编码以生成码流数据;
码流生成单元,用于存储转码码流,所述转码码流包含所述图片头信息数据段和所述码流数据;
信息获取单元,用于解析所述转码码流以获取所述图片头信息数据段和所述码流数据;
图像编码单元,用于根据所述码流数据生成所述YUV数据,并基于所述图片头信息数据段对所述YUV数据进行处理以生成所述图片文件。
本发明实施例第六方面提供了一种图片文件处理设备,可包括:
像素值获取单元,用于获取对原始图片文件解码生成的RGB数据,获取RGB数据中的各像素点的RGB值;
颜色表生成单元,用于采用各像素点的RGB值对RGB数据的初始颜色表信息进行训练以生成RGB数据的局部颜色表信息;
像素值更新单元,用于采用RGB数据的局部颜色表信息对各像素点的RGB值进行更新。
在本发明实施例中,在接收到转码码流时,可以根据码流数据生成YUV数据,再基于图片头信息数据段对YUV数据进行处理生成图片文件。通过将文件数据量较大的图片文件中每帧图像转换为数据量较小的YUV数据,再对YUV数据编码得到码流数据,极大的缩小了图片文件在传输过程中的文件数据量,降低了带宽成本。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种图片文件处理方法的流程示意图;
图2是本发明实施例提供的一种图片文件处理方法的流程时序图;
图3是本发明实施例提供的一种图片文件处理的举例示意图;
图4是本发明实施例提供的另一种图片文件处理的举例示意图;
图5是本发明实施例提供的又一种图片文件处理的举例示意图;
图6是本发明实施例提供的又一种图片文件处理的举例示意图;
图7是本发明实施例提供的另一种图片文件处理方法的流程时序图;
图8是本发明实施例提供的另一种图片文件处理方法的流程示意图;
图9是本发明实施例提供的又一种图片文件处理方法的流程示意图;
图10是本发明实施例提供的一种压缩图像数据生成的举例示意图;
图11是本发明实施例提供的又一种图片文件处理方法的流程示意图;
图12是本发明实施例提供的又一种图片文件处理方法的流程示意图;
图13是本发明实施例提供的一种图片文件生成的举例示意图;
图14是本发明实施例提供的又一种图片文件处理方法的流程示意图;
图15是本发明实施例提供的又一种图片文件处理方法的流程示意图;
图16是本发明实施例提供的又一种图片文件处理方法的流程示意图;
图17是本发明实施例提供的又一种图片文件处理方法的流程示意图;
图18是本发明实施例提供的又一种图片文件处理方法的流程示意图;
图19是本发明实施例提供的一种YUV420模式的原始色度分量的举例示意图;
图20是本发明实施例提供的一种YUV420模式的目标色度分量的举例示意图;
图21是本发明实施例提供的又一种图片文件处理方法的流程示意图;
图22是本发明实施例提供的又一种图片文件处理方法的流程示意图;
图23是本发明实施例提供的一种图片文件处理设备的结构示意图;
图24是本发明实施例提供的一种图像转换单元的结构示意图;
图25是本发明实施例提供的另一种图片文件处理设备的结构示意图;
图26是本发明实施例提供的又一种图片文件处理设备的结构示意图;
图27是本发明实施例提供的一种图像编码单元的结构示意图;
图28是本发明实施例提供的又一种图片文件处理设备的结构示意图;
图29是本发明实施例提供的一种图像处理系统的结构示意图;
图30是本发明实施例提供的又一种图片文件处理设备的结构示意图;
图31是本发明实施例提供的另一种图像转换单元的结构示意图;
图32是本发明实施例提供的另一种图像编码单元的结构示意图;
图33是本发明实施例提供的又一种图片文件处理设备的结构示意图;
图34是本发明实施例提供的又一种图片文件处理设备的结构示意图;
图35是本发明实施例提供的又一种图片文件处理设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供的图片文件处理方法可以应用于对图片文件进行编解码及传输的场景,例如:即时通信、网页展示等,例如:发送端根据原始图片文件生成图片文件的图片头信息数据段,并将图片文件中每帧图像转换为YUV数据,所述发送端对所述YUV数据进行编码以生成码流数据,所述发送端生成压缩图像数据,并将所述压缩图像数据发送至接收端,所述压缩图像数据包含所述图片头信息数据段和所述码流数据,所述接收端接收所述发送端发送的所述压缩图像数据,解析所述压缩图像数据以获取所述图片头信息数据段和所述码流数据,所述接收端根据所述码流数据生成所述YUV数据,并基于所述图片头信息数据段对所述YUV数据进行编码处理以生成所述图片文件的场景等。通过将文件数据量较大的图片文件中每帧图像转换为数据量较小的YUV数据,再对YUV数据编码得到码流数据,极大的缩小了图片文件在传输过程中的文件数据量,降低了带宽成本。
本发明实施例涉及的发送端可以为具备对图片文件解码、编码等功能在内的终端设备或者后台服务设备,或者可以为终端设备或者服务设备中的图像处理模块;所述接收端可以为具备对图片文件编码、视频解压等功能在内的终端设备或者后台服务设备,或者可以为终端设备或者服务设备中的图像处理模块。上述终端设备可以包括计算机、平板电脑、智能手机、笔记本电脑、掌上电脑以及移动互联网设备(MID)等;所述发送端和所述接收端可以应用到多种场景中的两端,例如:在即时通信场景中,所述发送端可以为发送图片文件的终端设备,所述接收端可以为接收所述图片文件的即时通信应用的后台服务设备,也可以是,所述发送端为转发图片文件的即时通信应用的后台服务设备,所述接收端为接收图片文件的终端设备等;在利用蓝牙、红外、数据线进行数据传输的场景中,所述发送端可以为发送图片文件的终端设备,所述接收端可以为接收图片文件的终端设备。以上场景仅为举例说明,可以根据实际的运行场景确定发送端和接收端的类型,所有包含图片文件编解码及传输的场景均属于本发明实施例的保护范畴,所述图片文件可以为图形交换格式(Graphics Interchange Format,GIF)图像、音频视频交错格式(Audio VideoInterleaved,AVI)图像、SWF(Shock Wave Flash)、位图动画格式(Animated PortableNetwork Graphics,APNG)中的任一种。
以下将对本发明实施例中将使用到的常用词语进行介绍:
图像,用于表示图片文件中的一帧画面;
图片,用于表示一个完整的图像文件,可以包含一幅或多幅图像;
分量,用于表示图像的三个样值矩阵中的一个矩阵或矩阵中的单个样值;
亮度,用于表示亮度信号Y的样值矩阵或单个样值;
色度,用于表示Cr和Cb两种色差信号中的任一种的样值矩阵和单个样值;
码流数据,用于表示编码后得到的数据,也可以采用视频帧数据等名称进行描述;
图像特征信息段,用于表示图片文件的延时信息、总帧数、全局颜色表信息等信息;
用户自定义信息段,用于表示在对三原色(Red Green Blue,RGB)数据或YUV数据进行编码时,所输入的配置参数、编码器复杂度等信息;
图片头信息数据段,用于表示压缩图像数据的起始端,可以包含图像特征信息段以及用户自定义信息段;
压缩图像数据,用于表示对码流数据和图像头信息数据段进行图片格式封装生成的数据,也可以采用图像序列、压缩码流等名称进行描述。
下面将结合附图1-附图20,对本发明实施例提供的图片文件处理方法进行详细介绍。
请参见图1,为本发明实施例提供了一种图片文件处理方法的流程示意图。本发明实施例从发送端和接收端共同阐述图片文件处理方法的具体流程,该方法可以包括以下步骤S101-步骤S105。
S101,发送端根据原始图片文件生成图片文件的图片头信息数据段,并将图片文件中每帧图像转换为YUV数据;
具体的,发送端可以解码原始图片文件以生成所述图片文件的图片头信息数据段,所述图片文件可以是由开发人员完成对图像制作后所输入的图像,也可以是从其它端接收的图像,所述图片头信息数据段可以包括所述图片文件的延时信息、总帧数等,所述延时信息记录有所述图片文件中每帧图像之间的播放间隔时间,所述总帧数为所述图片文件中的图像帧数,可以理解的是,所述图片头信息数据段中还可以包括所述图片文件的全局颜色表信息,所述全局颜色表信息包含每帧图像的每个像素点的RGB值,针对一些图片文件,其包含的所有图像均共用一个全局颜色表信息,而对于另外一些图片文件,其每帧图像都存在各自的局部颜色表信息,因此若所述图片文件中存在全局颜色表信息,则获取该全局颜色表信息,若所述图片文件中仅存在局部颜色表信息,则不对局部颜色表信息进行获取。所述发送端进一步将所述图片文件中每帧图像转换为YUV数据。
S102,所述发送端对所述YUV数据进行编码以生成码流数据;
具体的,所述发送端可以进一步对所述YUV数据进行编码处理,生成码流数据,所述编码可以包括预测编码、变换编码、量化编码和熵编码,例如:所述发送端可以采用IPPP模式对所述YUV数据进行压缩,第一帧YUV数据为I帧,I帧即为帧内预测帧,其余帧YUV数据为P帧,P帧即为帧间预测帧,可以有效的压缩图片文件的文件数据量,还可以采用固定量化参数(Quantization Parameter,QP)的方式来稳定不同帧之间的质量等。熵编码则可以包括哈夫曼编码、算数编码等。
S103,所述发送端将压缩图像数据发送至接收端;
具体的,所述发送端可以生成压缩图像数据,所述发送端可以对所述压缩图像数据进行存储,当检测到接收端对所述图片文件的请求时,所述发送端再将所述压缩图像数据发送至所述接收端,例如:当发送端检测到包含所述图片文件的网页开启时。所述发送端也可以直接将所述压缩图像数据发送至所述接收端,例如:即时通信应用中的一个客户端需要将所述图片文件发送至另一个客户端时,应用服务设备需要将所述图片文件进行转发等,所述压缩图像数据包含所述图片头信息数据段和所述码流数据。
S104,所述接收端接收所述发送端发送的所述压缩图像数据,解析所述压缩图像数据以获取所述图片头信息数据段和所述码流数据;
具体的,所述接收端接收所述发送端发送的所述压缩图像数据,所述接收端可以对所述压缩图像数据进行解析处理,以获取所述压缩图像数据中的所述图片头信息数据段和所述码流数据。
S105,所述接收端根据所述码流数据生成所述YUV数据,并基于所述图片头信息数据段对所述YUV数据进行处理以生成所述图片文件;
具体的,所述接收端解码所述码流数据以生成所述YUV数据,并基于图片头信息数据段中的时延信息、总帧数、全局颜色表信息等对所述YUV数据进行编码处理以生成所述图片文件。
在本发明实施例中,根据原始的图片文件生成图片文件的图片头信息数据段,将图片文件中每帧图像转换为YUV数据,再基于YUV数据进行编码后得到的码流数据以及图片头信息数据段生成压缩图像数据,并将压缩图像数据进行传输,在接收到压缩图像数据时,可以根据码流数据生成YUV数据,再基于图片头信息数据段对YUV数据进行处理生成图片文件。通过将文件数据量较大的图片文件中每帧图像转换为数据量较小的YUV数据,再对YUV数据编码得到码流数据,极大的缩小了图片文件在传输过程中的文件数据量,降低了带宽成本。
请参见图2,为本发明实施例提供了一种图片文件处理方法的流程时序图。本发明实施例从发送端侧和接收端侧共同阐述图片文件处理方法的具体流程,该方法可以包括以下步骤S201-步骤S208。
S201,所述发送端解码原始图片文件生成图片文件的图片头信息数据段以及图片文件中每帧图像对应的RGB数据;
具体的,所述发送端可以解码原始图片文件以生成所述图片文件的图片头信息数据段以及所述图片文件中每帧图像对应的RGB数据,所述图片文件可以是由开发人员完成对图像制作后所输入的图像,也可以是从其它端接收的图像,所述图片头信息数据段可以包括所述图片文件的延时信息、总帧数等,所述延时信息记录有所述图片文件中每帧图像之间的播放间隔时间,所述总帧数为所述图片文件中的图像帧数,可以理解的是,所述图片头信息数据段中还可以包括所述图片文件的全局颜色表信息,所述全局颜色表信息包含每帧图像的每个像素点的RGB值,针对一些图片文件,其包含的所有图像均共用一个全局颜色表信息,而对于另外一些图片文件,其每帧图像都存在各自的局部颜色表信息,因此若所述图片文件中存在全局颜色表信息,则获取该全局颜色表信息,若所述图片文件中仅存在局部颜色表信息,则不对局部颜色表信息进行获取。
S202,所述发送端采用颜色空间转换公式将所述RGB数据转换为YUV数据;
具体的,所述发送端可以采用颜色空间转换公式将所述RGB数据转换为YUV数据,在将RGB数据转换为YUV数据的过程中,可以选择亮度分量的值域范围为[16,235],色度分量的值域范围为[16,240]的颜色空间转换公式,由于至于范围的缩减,可以极大的减小转换后YUV数据的数据量,但导致的失真程度较大;还可以选择亮度分量和色度分量的值域范围均为[0,255]颜色空间转换公式,可以减小转换后YUV数据的失真,但转换后YUV数据的数据量较大,亮度分量和色度分量的值域范围均为[0,255]的颜色空间转换公式为:
Y=0.299R+0.587G+0.114B;
U=-0.1687R-0.3313G+0.5B+128;
V=0.5R-0.4187G-0.0813B+128;
其中,YUV是一种视频数据格式,Y为亮度分量,UV为色度分量,通过颜色空间转换公式可以对每帧图像的像素点进行光栅扫描处理,将每帧RGB数据转换为对应的YUV数据。
S203,所述发送端对所述YUV数据进行编码以生成码流数据;
具体的,所述发送端可以进一步对所述YUV数据进行编码处理,生成码流数据,所述编码可以包括预测编码、变换编码、量化编码和熵编码,例如:所述发送端可以采用IPPP模式对所述YUV数据进行压缩,第一帧YUV数据为I帧,I帧即为帧内预测帧,其余帧YUV数据为P帧,P帧即为帧间预测帧,可以有效的压缩图片文件的文件数据量,还可以采用固定QP的方式来稳定不同帧之间的质量等。熵编码则可以包括哈夫曼编码、算数编码等。
进一步的,在对所述YUV数据进行编码过程中,可以支持用户添加配置参数,所述配置参数可以为对所述YUV数据进行编码的参数,所述配置参数可以包括标清模式参数、高清模式参数和无损模式参数中的任一种,要求减少带宽,则可以选择标清模式参数(例如:YUV420模式参数);要求图像质量,则可以选择高清模式参数(例如:YUV444模式参数)等。所述发送端可以采用配置参数对所述YUV数据进行编码以生成码流数据。
可选的,在对所述YUV数据进行编码过程中,还可以支持用户添加编码器复杂度,所述编码器复杂度可以为根据所述发送端的硬件性能所决定的编码的精细度参数,所述编码器复杂度可以包括第一复杂度、第二复杂度和第三复杂度中的任一种,所述第一复杂度高于所述第二复杂度,所述第二复杂度高于所述第三复杂度,例如:可以对所述发送端的硬件性能进行检测以生成性能数值,例如:测试所述接收端的中央处理器的计算速率等,当所述性能数值位于第一预设数值范围内时,可以确定发送端硬件性能很高,则可以推荐使用第一复杂度的编码方式;当所述性能数值位于第二预设数值范围内时,可以确定发送端硬件性能中等,则可以推荐使用第二复杂度的编码方式;当所述性能数值位于第三预设数值范围内时,可以确定发送端硬件性能较差,或者当前要求实时转码等,则可以推荐使用第三复杂度的编码方式等。所述发送端可以配置编码器复杂度对所述YUV数据进行编码以生成码流数据。
需要说明的是,上述两种编码方式可以为并行的编码方式,即所述发送端可以同时采用配置参数和配置的编码器复杂度对所述YUV数据进行编码以生成码流数据。上述的性能数值、第一预设数值范围、第二通预设数值范围以及第三预设数值范围具体可以根据开发人员的人为经验进行设定。
S204,所述发送端将压缩图像数据发送至接收端;
具体的,所述发送端可以生成压缩图像数据,所述发送端可以对所述压缩图像数据进行存储,当检测到接收端对所述图片文件的请求时,所述发送端再将所述压缩图像数据发送至所述接收端,例如:当发送端检测到包含所述图片文件的网页开启时。所述发送端也可以直接将所述压缩图像数据发送至所述接收端,例如:即时通信应用中的一个客户端需要将所述图片文件发送至另一个客户端时,应用服务设备需要将所述图片文件进行转发等,所述压缩图像数据包含所述图片头信息数据段和所述码流数据。
S205,所述接收端接收所述发送端发送的所述压缩图像数据,解析所述压缩图像数据以获取所述图片头信息数据段和所述码流数据;
具体的,所述接收端接收所述发送端发送的所述压缩图像数据,所述接收端可以对所述压缩图像数据进行解析处理,以获取所述压缩图像数据中的所述图片头信息数据段和所述码流数据。
S206,所述接收端解码所述码流数据以生成所述YUV数据,并采用颜色空间转换公式将所述YUV数据转换为RGB数据;
具体的,所述接收端解码所述码流数据以生成所述YUV数据,并可以采用颜色空间转换公式将所述YUV数据转换为RGB数据,进一步的,所述接收端需要依据亮度分量的值域范围确定所采用的颜色空间转换公式,可以理解的是,针对YUV444模式下的YUV数据,可以选择亮度分量的值域范围为[16,235],色度分量的值域范围为[16,240]的颜色空间转换公式,也可以选择亮度分量和色度分量的值域范围均为[0,255]颜色空间转换公式,具体可以依据上述实施例中在将RGB数据转换为YUV数据时选择的颜色空间转换公式对应。需要说明的是,色度包括Cb和Cr两种色差信号中的任一种的样值矩阵和单个样值。两种色差信号需要分别进行上采样处理,两者进行上采样处理的方式均相同,其中,Cb对应YUV中的U,Cr对应YUV中的V。
若亮度分量的值域范围为[16,235],色度分量的值域范围为[16,240],则颜色空间转换公式为:
R=Clip3(0,255,(298*Y+409*(Cr–128)+128)>>8);
G=Clip3(0,255,(298*Y–100*(Cb-128)+208*(Cr-128)+128)>>8);
B=Clip3(0,255,(298*Y+516*(Cb-128)+128)>>8);
其中,“+128”用于对R值、B值、G值进行四舍五入,“>>8”表示除以2的8次方。
若亮度分量和色度分量的值域范围均为[0,255],则颜色空间转换公式为:
R=Clip3(0,255,Y+(359*(Cr–128)+128)>>8);
G=Clip3(0,255,Y–(88*(Cb-128)+183*(Cr-128)+128)>>8);
B=Clip3(0,255,Y+(454*(Cb-128)+128)>>8);
其中,“+128”用于对R值、B值、G值进行四舍五入,“>>8”表示除以2的8次方。
通过颜色空间转换公式可以对每帧图像的像素点进行光栅扫描处理,将每帧YUV数据转换为对应的RGB数据。
S207,所述接收端采用所述全局颜色表信息对所述RGB数据中的各像素点的RGB值进行更新;
具体的,由于之前对所述YUV数据进行过编码处理,因此导致由所述YUV数据转换的RGB数据存在失真的情况,所述接收端可以采用所述全局颜色表信息对所述RGB数据中的各像素点的RGB值进行更新,可以理解的是,所述RGB数据中可以包含一个或多个像素点,当所述RGB数据中仅存在一个像素点时,可以采用所述全局颜色表信息对所述像素点的RGB值进行更新,当所述RGB数据中存在多个像素点时,可以采用所述全局颜色表信息对多个像素点中各像素点的RGB值进行更新,所述接收端需要重新对所述全局颜色表信息进行训练,以生成符合所述RGB数据的局部颜色表信息,而对于不存在全局颜色表信息的情况,所述接收端可以生成初始化颜色表信息,并通过对所述初始化颜色表信息进行训练,以生成符合所述RGB数据的局部颜色表信息。具体的处理过程如下所述:
在本发明实施例的第一种实施方式中,针对图片头信息数据段中存在全局颜色表信息的情况,当所述RGB数据为所述图片文件中的第一帧图像,所述接收端可以采用所述RGB数据中的各像素点的RGB值对所述全局颜色表信息进行训练以生成所述RGB数据的局部颜色表信息,并采用所述RGB数据的局部颜色表信息对所述各像素点的RGB值进行更新。
进一步的,当所述RGB数据为所述图片文件中的第一帧图像,且所述图片头信息数据段中存在全局颜色表信息时,所述接收端可以将所述全局颜色表信息中的至少一个源RGB值按照G分量的预设排序方式(例如:升序、降序等)进行排序,以生成训练颜色表信息,请一并参见图3,如图3所示,所述全局颜色表信息中包括颜色索引和源RGB值,例如:5,(8,1,10)、6,(8,9,8)、7,(1,7,6)、8,(10,8,6)、9,(5,8,5)、10,(9,10,1),按照G分量的升序排序可以生成训练颜色表信息,例如:5,(8,1,10)、6,(1,7,6)、7,(5,8,5)、8,(10,8,6)、9,(8,9,8)、10,(9,10,1)。
所述接收端在所述训练颜色表信息中获取G分量与所述RGB数据中当前像素点的G分量最接近的第一源RGB值,并获取所述第一源RGB值的第一颜色索引,可以理解的是,所述接收端可以采用所述当前像素点的G分量遍历所述训练颜色表信息中的源RGB值,获取G分量最为接近的第一源RGB值,请一并参见图4,假设第一帧RGB数据中有四个像素点,当前像素点为所述RGB数据中的第一个像素点,所述当前像素点的RGB值为(9,9,9),可以在所述训练颜色表信息中查找到(8,9,8)的G分量与当前像素点的RGB值中的G分量最接近,则将(8,9,8)确定为第一源RGB值,并获取所述第一源RGB值的第一颜色索引“9”。
所述接收端在所述训练颜色表信息中以所述第一颜色索引为中心的预设范围内,获取与所述当前像素点的RGB值误差最小的第二源RGB值,并获取所述第二源RGB值的第二颜色索引,可以理解的是,所述接收端可以以所述第一颜色索引为中心,在所述第一颜色索引的前后预设范围内获取多个源RGB值,并分别计算所述第一源RGB值以及所述多个源RGB值与所述当前像素点的RGB值的误差,并将多个源RGB值中误差最小的源RGB值确定为第二源RGB值,依据上述举例,假设预设范围为正负1的范围,则以“9”为中心,获取(10,8,6)和(9,10,1)两个源RGB值,并分别计算(10,8,6)、(8,9,8)和(9,10,1)三者与(9,9,9)的误差值,其中颜色索引“8”的误差值为|9-10|+|9-8|+|9-6|=5,颜色索引“9”的误差值为|9-8|+|9-9|+|9-8|=2,颜色索引“10”的误差值为|9-9|+|9-10|+|9-1|=9,则确定源RGB值(8,9,8)为所述第二源RGB值,并获取第二源RGB值的第二颜色索引“9”。可以理解的是,上述获取的第一源RGB值和第一颜色索引存在与第二源RGB值和第二颜色索引相同的情况,也可以存在不相同的情况,具体由实际执行过程确定。
所述接收端将所述第二源RGB值替换为所述当前像素点的RGB值,并采用预设权重值和所述当前像素点的RGB值,对所述训练颜色表信息中以所述第二颜色索引为中心的预设范围内的多个源RGB值进行修改,请一并参见图5,依据上述举例,所述第二源RGB值为(8,9,8),则将(8,9,8)替换为当前像素点的RGB值(9,9,9),同时可以依据预设权重值以及当前像素点的RGB值对以所述第二颜色索引为中心的预设范围内的多个源RGB值进行修改,假设预设范围为正负1,则需要对(10,8,6)和(9,10,1)两个源RGB值进行修改,所述预设权重值可以为动态的权重值,对于距离所述第二颜色索引越近源RGB值,其受到当前像素点的RGB值的影响越大,假设当前权重值的分配为2:8,则采用(9,9,9)对(10,8,6)进行修改,例如,R分量=9*0.8+10*0.2=9.2,G分量=9*0.8+8*0.2=8.8,B分量=9*0.8+6*0.2=8.4,对以上结果采用四舍五入的方式,确定颜色索引“8”的源RGB值由(10,8,6)修改为(9,9,8),同理,颜色索引“10”的源RGB值由(9,10,1)修改为(9,9,7)。
当所述当前像素点不为所述RGB数据中的最后一个像素点时,例如当前像素点为图4或图5中所示的RGB数据中的第一个像素点时,所述接收端获取修改后得到的所述训练颜色表信息,将所述当前像素点的下一个像素点作为当前像素点,并转入执行在所述训练颜色表信息中获取G分量与所述RGB数据中当前像素点的G分量最接近的第一源RGB值,例如:将所述RGB数据中的第二个像素点作为当前像素点,对修改后得到的所述训练颜色表信息再一次进行训练。具体的训练过程可以参见上述训练过程的描述,在此不进行赘述。
当所述当前像素点为所述RGB数据中的最后一个像素点时,例如当前像素点为图4或图5中所示的RGB数据中的第四个像素点时,所述接收端获取修改后得到的所述训练颜色表信息,并将所述训练颜色表信息确定为所述RGB数据的局部颜色表信息。
所述接收端可以采用所述RGB数据的局部颜色表信息对所述各像素点的RGB值进行更新,进一步的,所述接收端可以在所述RGB数据的局部颜色表信息中依次获取与所述各像素点相同或误差最小的源RGB值分别替换所述各像素点的RGB值,优选的,所述接收端可以将与所述各像素点相同或误差最小的源RGB值对应的颜色索引分别替换所述各像素点的RGB值,请一并参见图6,依据上述举例,所述RGB数据的第一个像素点的RGB值为(9,9,9),在所述局部颜色表信息中与(9,9,9)误差最小的为(9,9,8),则将(9,9,8)对应的颜色索引“8”替换所述第一个像素点的RGB值,同理,第二个像素点的颜色索引为“10”,第三个像素点的颜色索引为“9”,第四个像素点的颜色索引为“6”。
在本发明实施例的第二种实施方式中,针对图片头信息数据段中不存在全局颜色表信息的情况,当所述RGB数据为所述图片文件中的第一帧图像,所述接收端可以采用所述RGB数据中的各像素点的RGB值对初始化颜色表信息进行训练以生成所述RGB数据的局部颜色表信息,并采用所述RGB数据的局部颜色表信息对所述各像素点的RGB值进行更新。
进一步的,当所述RGB数据为所述图片文件中的第一帧图像,且所述图片头信息数据段中不存在全局颜色表信息时,所述接收端可以生成一个初始化颜色表信息,例如:(0,0,0)、(1,1,1)、(2,2,2)、……、(255,255,255),所述接收端在初始化颜色表信息中获取G分量与所述RGB数据中当前像素点的G分量最接近的第三源RGB值,并获取所述第三源RGB值的第三颜色索引,所述接收端在所述初始化颜色表信息中以所述第三颜色索引为中心的预设范围内,获取与所述当前像素点的RGB值误差最小的第四源RGB值,并获取所述第四源RGB值的第四颜色索引,所述接收端将所述第四源RGB值替换为所述当前像素点的RGB值,并采用预设权重值和所述当前像素点的RGB值,对所述初始化颜色表信息中以所述第四颜色索引为中心的预设范围内的多个源RGB值进行修改,当所述当前像素点不为所述RGB数据中的最后一个像素点时,所述接收端获取修改后得到的所述初始化颜色表信息,将所述当前像素点的下一个像素点作为当前像素点,并转入执行在所述初始化颜色表信息中获取G分量与所述RGB数据中当前像素点的G分量最接近的第三源RGB值,当所述当前像素点为所述RGB数据中的最后一个像素点时,所述接收端获取修改后得到的所述训练颜色表信息,并将所述初始化颜色表信息确定为所述RGB数据的局部颜色表信息,所述接收端可以采用所述RGB数据的局部颜色表信息对所述各像素点的RGB值进行更新。需要说明的是,第二种实施方式中对初始化颜色表信息进行训练以及采用RGB数据的局部颜色表信息对各像素点的RGB值进行更新的过程均可以参见上述第一种实施方式的执行过程,在此不进行赘述。
针对上述第一种实施方式和第二种实施方式,在本发明实施例的第三种实施方式中,针对所述RGB数据不为所述图片文件中的第一帧图像,即所述RGB数据为所述图片文件中的第N帧图像时,其中,N为大于1且小于或等于所述总帧数的正整数,所述接收端可以采用所述RGB数据中的各像素点的RGB值对第N-1帧RGB数据的局部颜色表信息进行训练以生成所述RGB数据的局部颜色表信息,并采用所述RGB数据的局部颜色表信息对所述各像素点的RGB值进行更新。
进一步的,当所述RGB数据为所述图片文件中的第N帧图像时,所述接收端可以将第N-1帧RGB数据的局部颜色表信息中的至少一个源RGB值按照G分量的预设排序方式进行排序,以生成训练颜色表信息,所述接收端在所述训练颜色表信息中获取G分量与所述RGB数据中当前像素点的G分量最接近的第五源RGB值,并获取所述第五源RGB值的第五颜色索引,所述接收端在所述训练颜色表信息中以所述第五颜色索引为中心的预设范围内,获取与所述当前像素点的RGB值误差最小的第六源RGB值,并获取所述第六源RGB值的第六颜色索引,所述接收端将所述第六源RGB值替换为所述当前像素点的RGB值,并采用预设权重值和所述当前像素点的RGB值,对所述训练颜色表信息中以所述第六颜色索引为中心的预设范围内的多个源RGB值进行修改,当所述当前像素点不为所述RGB数据中的最后一个像素点时,所述接收端获取修改后得到的所述训练颜色表信息,将所述当前像素点的下一个像素点作为当前像素点,并转入执行在所述训练颜色表信息中获取G分量与所述RGB数据中当前像素点的G分量最接近的第五源RGB值,当所述当前像素点为所述RGB数据中的最后一个像素点时,所述接收端获取修改后得到的所述训练颜色表信息,并将所述训练颜色表信息确定为所述RGB数据的局部颜色表信息,所述接收端可以采用所述RGB数据的局部颜色表信息对所述各像素点的RGB值进行更新。需要说明的是,第三种实施方式中对训练颜色表信息进行训练以及采用RGB数据的局部颜色表信息对各像素点的RGB值进行更新的过程均可以参见上述第一种实施方式的执行过程,在此不进行赘述。
需要说明的是,上述采用G分量作为对颜色表信息进行训练的引导仅为举例,本发明实施例同样可以采用R分量或者B分量作为对颜色表信息进行训练的引导,执行过程均可以参见上述内容中的描述,在此不进行赘述。上述第一源RGB值、第二源RGB值、第三源RGB值、第四源RGB值、第五源RGB值、第六源RGB值以及第一颜色索引、第二颜色索引、第三颜色索引、第四颜色索引、第五颜色索引、第六颜色索引均可以表示相同的源RGB值和颜色索引的含义,采用此方式进行命名仅为了区分不同的执行场景,例如:当所述RGB数据为所述图片文件中的第一帧图像,且所述图片头信息数据段中存在全局颜色表信息时;当所述RGB数据为所述图片文件中的第一帧图像,且所述图片头信息数据段中不存在全局颜色表信息时;当所述RGB数据为所述图片文件中的第N帧图像时,以上三种执行场景。
S208,所述接收端采用所述延时时间和所述总帧数将更新后的所述RGB数据进行图像编码以生成所述图片文件;
具体的,所述接收端采用所述延时时间和所述总帧数将更新后的所述RGB数据进行图像编码以生成所述图片文件,优选的,所述接收端可以基于所述延时时间和所述总帧数,并采用兰博-立夫-卫曲编码法(Lempel-Ziv-Welch Encoding,LZW)对所述RGB数据中各像素点的颜色索引进行图像编码,生成所述图片文件,所述接收端可以对所述图片文件进行存储或者展示。可以理解的是,所述图像编码的方式具体由图片文件的图像格式决定,例如:若需要生成的图片文件为GIF图像,则所述图像编码可以为GIF编码等。
在本发明实施例中,根据原始的图片文件生成图片文件的图片头信息数据段,将图片文件中每帧图像转换为YUV数据,再基于YUV数据进行编码后得到的码流数据以及图片头信息数据段生成压缩图像数据,并将压缩图像数据进行传输,在接收到压缩图像数据时,可以根据码流数据生成YUV数据,再基于图片头信息数据段对YUV数据进行处理生成图片文件。通过将文件数据量较大的图片文件中每帧图像转换为数据量较小的YUV数据,再对YUV数据编码得到码流数据,极大的缩小了图片文件在传输过程中的文件数据量,降低了带宽成本;通过灵活控制配置参数的使用以及配置编码器复杂度,可以满足不同的业务场景以及不同的机器性能,优化图片文件的编码效率;通过对全局颜色表信息或初始化颜色表信息进行训练,生成RGB数据的局部颜色表信息,有效的减少了图像的失真;通过采用G分量获取最接近的源RGB值,并在颜色表信息中进行小范围的颜色索引搜索,无需遍历整个颜色表信息,降低了对局部颜色表信息训练的复杂度,进一步提升了图片文件的编码效率。
请参见图7,为本发明实施例提供了另一种图片文件处理方法的流程时序图。本发明实施例从发送端侧、中转设备侧和接收端侧共同阐述图片文件处理方法的具体流程,该方法包括以下步骤S2001-步骤S2009。
S2001,所述发送端解码原始图片文件以生成图片文件的图片头信息数据段以及图片文件中每帧图像对应的RGB数据;
具体的,所述发送端可以解码原始图片文件以生成所述图片文件的图片头信息数据段以及所述图片文件中每帧图像对应的RGB数据,所述图片文件可以是由开发人员完成对图像制作后所输入的图像,也可以是从其它端接收的图像,所述图片头信息数据段可以包括所述图片文件的延时信息、总帧数等,所述延时信息记录有所述图片文件中每帧图像之间的播放间隔时间,所述总帧数为所述图片文件中的图像帧数,可以理解的是,所述图片头信息数据段中还可以包括所述图片文件的全局颜色表信息,所述全局颜色表信息包含每帧图像的每个像素点的RGB值,针对一些图片文件,其包含的所有图像均共用一个全局颜色表信息,而对于另外一些图片文件,其每帧图像都存在各自的局部颜色表信息,因此若所述图片文件中存在全局颜色表信息,则获取该全局颜色表信息,若所述图片文件中仅存在局部颜色表信息,则不对局部颜色表信息进行获取。
S2002,所述发送端采用颜色空间转换公式将所述RGB数据转换为YUV数据;
具体的,所述发送端可以采用颜色空间转换公式将所述RGB数据转换为YUV数据,在将RGB数据转换为YUV数据的过程中,可以选择亮度分量的值域范围为[16,235],色度分量的值域范围为[16,240]的颜色空间转换公式,由于至于范围的缩减,可以极大的减小转换后YUV数据的数据量,但导致的失真程度较大;还可以选择亮度分量和色度分量的值域范围均为[0,255]颜色空间转换公式,可以减小转换后YUV数据的失真,但转换后YUV数据的数据量较大,亮度分量和色度分量的值域范围均为[0,255]的颜色空间转换公式为:
Y=0.299R+0.587G+0.114B;
U=-0.1687R-0.3313G+0.5B+128;
V=0.5R-0.4187G-0.0813B+128;
其中,YUV是一种视频数据格式,Y为亮度分量,UV为色度分量,通过颜色空间转换公式可以对每帧图像的像素点进行光栅扫描处理,将每帧RGB数据转换为对应的YUV数据。
S2003,所述发送端对所述YUV数据进行编码以生成码流数据;
具体的,所述发送端可以进一步对所述YUV数据进行编码处理,生成码流数据,所述编码可以包括预测编码、变换编码、量化编码和熵编码,例如:所述发送端可以采用IPPP模式对所述YUV数据进行压缩,第一帧YUV数据为I帧,I帧即为帧内预测帧,其余帧YUV数据为P帧,P帧即为帧间预测帧,可以有效的压缩图片文件的文件数据量,还可以采用固定QP的方式来稳定不同帧之间的质量等。熵编码则可以包括哈夫曼编码、算数编码等。
进一步的,在对所述YUV数据进行编码过程中,可以支持用户添加配置参数,所述配置参数可以为对所述YUV数据进行编码的参数,所述配置参数可以包括标清模式参数、高清模式参数和无损模式参数中的任一种,要求减少带宽,则可以选择标清模式参数(例如:YUV420模式参数);要求图像质量,则可以选择高清模式参数(例如:YUV444模式参数)等。所述发送端可以采用配置参数对所述YUV数据进行编码以生成码流数据。
可选的,在对所述YUV数据进行编码过程中,还可以支持用户添加编码器复杂度,所述编码器复杂度可以为根据所述发送端的硬件性能所决定的编码的精细度参数,所述编码器复杂度可以包括第一复杂度、第二复杂度和第三复杂度中的任一种,所述第一复杂度高于所述第二复杂度,所述第二复杂度高于所述第三复杂度,例如:可以对所述发送端的硬件性能进行检测以生成性能数值,例如:测试所述接收端的中央处理器的计算速率等,当所述性能数值位于第一预设数值范围内时,可以确定发送端硬件性能很高,则可以推荐使用第一复杂度的编码方式;当所述性能数值位于第二预设数值范围内时,可以确定发送端硬件性能中等,则可以推荐使用第二复杂度的编码方式;当所述性能数值位于第三预设数值范围内时,可以确定发送端硬件性能较差,或者当前要求实时转码等,则可以推荐使用第三复杂度的编码方式等。所述发送端可以配置编码器复杂度对所述YUV数据进行编码以生成码流数据。
需要说明的是,上述两种编码方式可以为并行的编码方式,即所述发送端可以同时采用配置参数和配置的编码器复杂度对所述YUV数据进行编码以生成码流数据。上述的性能数值、第一预设数值范围、第二通预设数值范围以及第三预设数值范围具体可以根据开发人员的人为经验进行设定。
S2004,所述发送端将压缩图像数据发送至中转设备;
具体的,所述发送端可以生成压缩图像数据,所述发送端可以对所述压缩图像数据进行存储,当检测到接收端对所述图片文件的请求时,所述发送端再将所述压缩图像数据发送至所述接收端,例如:当发送端检测到包含所述图片文件的网页开启时。所述发送端也可以直接将所述压缩图像数据发送至所述接收端,例如:即时通信应用中的一个客户端需要将所述图片文件发送至另一个客户端时,应用服务设备需要将所述图片文件进行转发等,所述压缩图像数据包含所述图片头信息数据段和所述码流数据。
S2005,所述中转设备接收所述发送端发送的所述压缩图像数据,并将所述压缩图像数据发送至接收端;
具体的,所述中转设备可以为所述发送端及所述接收端间的连接设备,在所述发送端和所述接收端无法直接进行连接的情况下,由中转设备进行压缩图像数据的中转处理,例如:针对即时通信应用中的两个客户端,所述中转设备可以为即时通信应用的后台服务设备等。所述中转设备接收所述发送端发送的所述压缩图像数据,可以将所述压缩图像数据按照所述发送端指示的接收端的应用标识发送至所述接收端。
S2006,所述接收端接收所述中转设备发送的所述压缩图像数据,解析所述压缩图像数据以获取所述图片头信息数据段和所述码流数据;
具体的,所述接收端接收所述中转设备发送的所述压缩图像数据,所述接收端可以对所述压缩图像数据进行解析处理,以获取所述压缩图像数据中的所述图片头信息数据段和所述码流数据。
S2007,所述接收端解码所述码流数据以生成所述YUV数据,并采用颜色空间转换公式将所述YUV数据转换为RGB数据;
具体的,所述接收端解码所述码流数据以生成所述YUV数据,并可以采用颜色空间转换公式将所述YUV数据转换为RGB数据,进一步的,所述接收端需要依据亮度分量的值域范围确定所采用的颜色空间转换公式,可以理解的是,针对YUV444模式下的YUV数据,可以选择亮度分量的值域范围为[16,235],色度分量的值域范围为[16,240]的颜色空间转换公式,也可以选择亮度分量和色度分量的值域范围均为[0,255]颜色空间转换公式,具体可以依据上述实施例中在将RGB数据转换为YUV数据时选择的颜色空间转换公式对应。需要说明的是,色度包括Cb和Cr两种色差信号中的任一种的样值矩阵和单个样值。两种色差信号需要分别进行上采样处理,两者进行上采样处理的方式均相同,其中,Cb对应YUV中的U,Cr对应YUV中的V。
若亮度分量的值域范围为[16,235],色度分量的值域范围为[16,240],则颜色空间转换公式为:
R=Clip3(0,255,(298*Y+409*(Cr–128)+128)>>8);
G=Clip3(0,255,(298*Y–100*(Cb-128)+208*(Cr-128)+128)>>8);
B=Clip3(0,255,(298*Y+516*(Cb-128)+128)>>8);
其中,“+128”用于对R值、B值、G值进行四舍五入,“>>8”表示除以2的8次方。
若亮度分量和色度分量的值域范围均为[0,255],则颜色空间转换公式为:
R=Clip3(0,255,Y+(359*(Cr–128)+128)>>8);
G=Clip3(0,255,Y–(88*(Cb-128)+183*(Cr-128)+128)>>8);
B=Clip3(0,255,Y+(454*(Cb-128)+128)>>8);
其中,“+128”用于对R值、B值、G值进行四舍五入,“>>8”表示除以2的8次方。
通过颜色空间转换公式可以对每帧图像的像素点进行光栅扫描处理,将每帧YUV数据转换为对应的RGB数据。
S2008,所述接收端采用所述全局颜色表信息对所述RGB数据中的各像素点的RGB值进行更新;
具体的,由于之前对所述YUV数据进行过编码处理,因此导致由所述YUV数据转换的RGB数据存在失真的情况,所述接收端可以采用所述全局颜色表信息对所述RGB数据中的各像素点的RGB值进行更新,可以理解的是,所述RGB数据中可以包含一个或多个像素点,当所述RGB数据中仅存在一个像素点时,可以采用所述全局颜色表信息对所述像素点的RGB值进行更新,当所述RGB数据中存在多个像素点时,可以采用所述全局颜色表信息对多个像素点中各像素点的RGB值进行更新,所述接收端需要重新对所述全局颜色表信息进行训练,以生成符合所述RGB数据的局部颜色表信息,而对于不存在全局颜色表信息的情况,所述接收端可以生成初始化颜色表信息,并通过对所述初始化颜色表信息进行训练,以生成符合所述RGB数据的局部颜色表信息。具体的处理过程如下所述:
在本发明实施例的第一种实施方式中,针对图片头信息数据段中存在全局颜色表信息的情况,当所述RGB数据为所述图片文件中的第一帧图像,所述接收端可以采用所述RGB数据中的各像素点的RGB值对所述全局颜色表信息进行训练以生成所述RGB数据的局部颜色表信息,并采用所述RGB数据的局部颜色表信息对所述各像素点的RGB值进行更新。
进一步的,当所述RGB数据为所述图片文件中的第一帧图像,且所述图片头信息数据段中存在全局颜色表信息时,所述接收端可以将所述全局颜色表信息中的至少一个源RGB值按照G分量的预设排序方式(例如:升序、降序等)进行排序,以生成训练颜色表信息,请一并参见图3,如图3所示,所述全局颜色表信息中包括颜色索引和源RGB值,例如:5,(8,1,10)、6,(8,9,8)、7,(1,7,6)、8,(10,8,6)、9,(5,8,5)、10,(9,10,1),按照G分量的升序排序可以生成训练颜色表信息,例如:5,(8,1,10)、6,(1,7,6)、7,(5,8,5)、8,(10,8,6)、9,(8,9,8)、10,(9,10,1)。
所述接收端在所述训练颜色表信息中获取G分量与所述RGB数据中当前像素点的G分量最接近的第一源RGB值,并获取所述第一源RGB值的第一颜色索引,可以理解的是,所述接收端可以采用所述当前像素点的G分量遍历所述训练颜色表信息中的源RGB值,获取G分量最为接近的第一源RGB值,请一并参见图4,假设第一帧RGB数据中有四个像素点,当前像素点为所述RGB数据中的第一个像素点,所述当前像素点的RGB值为(9,9,9),可以在所述训练颜色表信息中查找到(8,9,8)的G分量与当前像素点的RGB值中的G分量最接近,则将(8,9,8)确定为第一源RGB值,并获取所述第一源RGB值的第一颜色索引“9”。
所述接收端在所述训练颜色表信息中以所述第一颜色索引为中心的预设范围内,获取与所述当前像素点的RGB值误差最小的第二源RGB值,并获取所述第二源RGB值的第二颜色索引,可以理解的是,所述接收端可以以所述第一颜色索引为中心,在所述第一颜色索引的前后预设范围内获取多个源RGB值,并分别计算所述第一源RGB值以及所述多个源RGB值与所述当前像素点的RGB值的误差,并将多个源RGB值中误差最小的源RGB值确定为第二源RGB值,依据上述举例,假设预设范围为正负1的范围,则以“9”为中心,获取(10,8,6)和(9,10,1)两个源RGB值,并分别计算(10,8,6)、(8,9,8)和(9,10,1)三者与(9,9,9)的误差值,其中颜色索引“8”的误差值为|9-10|+|9-8|+|9-6|=5,颜色索引“9”的误差值为|9-8|+|9-9|+|9-8|=2,颜色索引“10”的误差值为|9-9|+|9-10|+|9-1|=9,则确定源RGB值(8,9,8)为所述第二源RGB值,并获取第二源RGB值的第二颜色索引“9”。可以理解的是,上述获取的第一源RGB值和第一颜色索引存在与第二源RGB值和第二颜色索引相同的情况,也可以存在不相同的情况,具体由实际执行过程确定。
所述接收端将所述第二源RGB值替换为所述当前像素点的RGB值,并采用预设权重值和所述当前像素点的RGB值,对所述训练颜色表信息中以所述第二颜色索引为中心的预设范围内的多个源RGB值进行修改,请一并参见图5,依据上述举例,所述第二源RGB值为(8,9,8),则将(8,9,8)替换为当前像素点的RGB值(9,9,9),同时可以依据预设权重值以及当前像素点的RGB值对以所述第二颜色索引为中心的预设范围内的多个源RGB值进行修改,假设预设范围为正负1,则需要对(10,8,6)和(9,10,1)两个源RGB值进行修改,所述预设权重值可以为动态的权重值,对于距离所述第二颜色索引越近源RGB值,其受到当前像素点的RGB值的影响越大,假设当前权重值的分配为2:8,则采用(9,9,9)对(10,8,6)进行修改,例如,R分量=9*0.8+10*0.2=9.2,G分量=9*0.8+8*0.2=8.8,B分量=9*0.8+6*0.2=8.4,对以上结果采用四舍五入的方式,确定颜色索引“8”的源RGB值由(10,8,6)修改为(9,9,8),同理,颜色索引“10”的源RGB值由(9,10,1)修改为(9,9,7)。
当所述当前像素点不为所述RGB数据中的最后一个像素点时,例如当前像素点为图4或图5中所示的RGB数据中的第一个像素点时,所述接收端获取修改后得到的所述训练颜色表信息,将所述当前像素点的下一个像素点作为当前像素点,并转入执行在所述训练颜色表信息中获取G分量与所述RGB数据中当前像素点的G分量最接近的第一源RGB值,例如:将所述RGB数据中的第二个像素点作为当前像素点,对修改后得到的所述训练颜色表信息再一次进行训练。具体的训练过程可以参见上述训练过程的描述,在此不进行赘述。
当所述当前像素点为所述RGB数据中的最后一个像素点时,例如当前像素点为图4或图5中所示的RGB数据中的第四个像素点时,所述接收端获取修改后得到的所述训练颜色表信息,并将所述训练颜色表信息确定为所述RGB数据的局部颜色表信息。
所述接收端可以采用所述RGB数据的局部颜色表信息对所述各像素点的RGB值进行更新,进一步的,所述接收端可以在所述RGB数据的局部颜色表信息中依次获取与所述各像素点相同或误差最小的源RGB值分别替换所述各像素点的RGB值,优选的,所述接收端可以将与所述各像素点相同或误差最小的源RGB值对应的颜色索引分别替换所述各像素点的RGB值,请一并参见图6,依据上述举例,所述RGB数据的第一个像素点的RGB值为(9,9,9),在所述局部颜色表信息中与(9,9,9)误差最小的为(9,9,8),则将(9,9,8)对应的颜色索引“8”替换所述第一个像素点的RGB值,同理,第二个像素点的颜色索引为“10”,第三个像素点的颜色索引为“9”,第四个像素点的颜色索引为“6”。
在本发明实施例的第二种实施方式中,针对图片头信息数据段中不存在全局颜色表信息的情况,当所述RGB数据为所述图片文件中的第一帧图像,所述接收端可以采用所述RGB数据中的各像素点的RGB值对初始化颜色表信息进行训练以生成所述RGB数据的局部颜色表信息,并采用所述RGB数据的局部颜色表信息对所述各像素点的RGB值进行更新。
进一步的,当所述RGB数据为所述图片文件中的第一帧图像,且所述图片头信息数据段中不存在全局颜色表信息时,所述接收端可以生成一个初始化颜色表信息,例如:(0,0,0)、(1,1,1)、(2,2,2)、……、(255,255,255),所述接收端在初始化颜色表信息中获取G分量与所述RGB数据中当前像素点的G分量最接近的第三源RGB值,并获取所述第三源RGB值的第三颜色索引,所述接收端在所述初始化颜色表信息中以所述第三颜色索引为中心的预设范围内,获取与所述当前像素点的RGB值误差最小的第四源RGB值,并获取所述第四源RGB值的第四颜色索引,所述接收端将所述第四源RGB值替换为所述当前像素点的RGB值,并采用预设权重值和所述当前像素点的RGB值,对所述初始化颜色表信息中以所述第四颜色索引为中心的预设范围内的多个源RGB值进行修改,当所述当前像素点不为所述RGB数据中的最后一个像素点时,所述接收端获取修改后得到的所述初始化颜色表信息,将所述当前像素点的下一个像素点作为当前像素点,并转入执行在所述初始化颜色表信息中获取G分量与所述RGB数据中当前像素点的G分量最接近的第三源RGB值,当所述当前像素点为所述RGB数据中的最后一个像素点时,所述接收端获取修改后得到的所述训练颜色表信息,并将所述初始化颜色表信息确定为所述RGB数据的局部颜色表信息,所述接收端可以采用所述RGB数据的局部颜色表信息对所述各像素点的RGB值进行更新。需要说明的是,第二种实施方式中对初始化颜色表信息进行训练以及采用RGB数据的局部颜色表信息对各像素点的RGB值进行更新的过程均可以参见上述第一种实施方式的执行过程,在此不进行赘述。
针对上述第一种实施方式和第二种实施方式,在本发明实施例的第三种实施方式中,针对所述RGB数据不为所述图片文件中的第一帧图像,即所述RGB数据为所述图片文件中的第N帧图像时,其中,N为大于1且小于或等于所述总帧数的正整数,所述接收端可以采用所述RGB数据中的各像素点的RGB值对第N-1帧RGB数据的局部颜色表信息进行训练以生成所述RGB数据的局部颜色表信息,并采用所述RGB数据的局部颜色表信息对所述各像素点的RGB值进行更新。
进一步的,当所述RGB数据为所述图片文件中的第N帧图像时,所述接收端可以将第N-1帧RGB数据的局部颜色表信息中的至少一个源RGB值按照G分量的预设排序方式进行排序,以生成训练颜色表信息,所述接收端在所述训练颜色表信息中获取G分量与所述RGB数据中当前像素点的G分量最接近的第五源RGB值,并获取所述第五源RGB值的第五颜色索引,所述接收端在所述训练颜色表信息中以所述第五颜色索引为中心的预设范围内,获取与所述当前像素点的RGB值误差最小的第六源RGB值,并获取所述第六源RGB值的第六颜色索引,所述接收端将所述第六源RGB值替换为所述当前像素点的RGB值,并采用预设权重值和所述当前像素点的RGB值,对所述训练颜色表信息中以所述第六颜色索引为中心的预设范围内的多个源RGB值进行修改,当所述当前像素点不为所述RGB数据中的最后一个像素点时,所述接收端获取修改后得到的所述训练颜色表信息,将所述当前像素点的下一个像素点作为当前像素点,并转入执行在所述训练颜色表信息中获取G分量与所述RGB数据中当前像素点的G分量最接近的第五源RGB值,当所述当前像素点为所述RGB数据中的最后一个像素点时,所述接收端获取修改后得到的所述训练颜色表信息,并将所述训练颜色表信息确定为所述RGB数据的局部颜色表信息,所述接收端可以采用所述RGB数据的局部颜色表信息对所述各像素点的RGB值进行更新。需要说明的是,第三种实施方式中对训练颜色表信息进行训练以及采用RGB数据的局部颜色表信息对各像素点的RGB值进行更新的过程均可以参见上述第一种实施方式的执行过程,在此不进行赘述。
需要说明的是,上述采用G分量作为对颜色表信息进行训练的引导仅为举例,本发明实施例同样可以采用R分量或者B分量作为对颜色表信息进行训练的引导,执行过程均可以参见上述内容中的描述,在此不进行赘述。上述第一源RGB值、第二源RGB值、第三源RGB值、第四源RGB值、第五源RGB值、第六源RGB值以及第一颜色索引、第二颜色索引、第三颜色索引、第四颜色索引、第五颜色索引、第六颜色索引均可以表示相同的源RGB值和颜色索引的含义,采用此方式进行命名仅为了区分不同的执行场景,例如:当所述RGB数据为所述图片文件中的第一帧图像,且所述图片头信息数据段中存在全局颜色表信息时;当所述RGB数据为所述图片文件中的第一帧图像,且所述图片头信息数据段中不存在全局颜色表信息时;当所述RGB数据为所述图片文件中的第N帧图像时,以上三种执行场景。
S2009,所述接收端采用所述延时时间和所述总帧数将更新后的所述RGB数据进行图像编码以生成所述图片文件;
具体的,所述接收端采用所述延时时间和所述总帧数将更新后的所述RGB数据进行图像编码以生成所述图片文件,优选的,所述接收端可以基于所述延时时间和所述总帧数,并采用兰博-立夫-卫曲编码法(Lempel-Ziv-Welch Encoding,LZW)对所述RGB数据中各像素点的颜色索引进行图像编码,生成所述图片文件,所述接收端可以对所述图片文件进行存储或者展示。可以理解的是,所述图像编码的方式具体由图片文件的图像格式决定,例如:若需要生成的图片文件为GIF图像,则所述图像编码可以为GIF编码等。
在本发明实施例中,根据原始的图片文件生成图片文件的图片头信息数据段,将图片文件中每帧图像转换为YUV数据,再基于YUV数据进行编码后得到的码流数据以及图片头信息数据段生成压缩图像数据,并将压缩图像数据进行传输,在接收到压缩图像数据时,可以根据码流数据生成YUV数据,再基于图片头信息数据段对YUV数据进行处理生成图片文件。通过将文件数据量较大的图片文件中每帧图像转换为数据量较小的YUV数据,再对YUV数据编码得到码流数据,极大的缩小了图片文件在传输过程中的文件数据量,降低了带宽成本;通过灵活控制配置参数的使用以及配置编码器复杂度,可以满足不同的业务场景以及不同的机器性能,优化图片文件的编码效率;通过对全局颜色表信息或初始化颜色表信息进行训练,生成RGB数据的局部颜色表信息,有效的减少了图像的失真;通过采用G分量获取最接近的源RGB值,并在颜色表信息中进行小范围的颜色索引搜索,无需遍历整个颜色表信息,降低了对局部颜色表信息训练的复杂度,进一步提升了图片文件的编码效率。
请参见图8,为本发明实施例提供了另一种图片文件处理方法的流程示意图。本发明实施例从发送端侧阐述图片文件处理方法的具体流程,该方法可以包括以下步骤S301-步骤S303。
S301,根据原始图片文件生成所述图片文件的图片头信息数据段,并将图片文件中每帧图像转换为YUV数据;
具体的,发送端可以解码原始图片文件以生成所述图片文件的图片头信息数据段,所述图片文件可以是由开发人员完成对图像制作后所输入的图像,也可以是从其它端接收的图像,所述图片头信息数据段可以包括所述图片文件的延时信息、总帧数等,所述延时信息记录有所述图片文件中每帧图像之间的播放间隔时间,所述总帧数为所述图片文件中的图像帧数,可以理解的是,所述图片头信息数据段中还可以包括所述图片文件的全局颜色表信息,所述全局颜色表信息包含每帧图像的每个像素点的RGB值,针对一些图片文件,其包含的所有图像均共用一个全局颜色表信息,而对于另外一些图片文件,其每帧图像都存在各自的局部颜色表信息,因此若所述图片文件中存在全局颜色表信息,则获取该全局颜色表信息,若所述图片文件中仅存在局部颜色表信息,则不对局部颜色表信息进行获取。所述发送端进一步将所述图片文件中每帧图像转换为YUV数据。
S302,对所述YUV数据进行编码以生成码流数据;
具体的,所述发送端可以进一步对所述YUV数据进行编码处理,生成码流数据,所述编码可以包括预测编码、变换编码、量化编码和熵编码,例如:所述发送端可以采用IPPP模式对所述YUV数据进行压缩,第一帧YUV数据为I帧,I帧即为帧内预测帧,其余帧YUV数据为P帧,P帧即为帧间预测帧,可以有效的压缩图片文件的文件数据量,还可以采用固定QP的方式来稳定不同帧之间的质量等。熵编码则可以包括哈夫曼编码、算数编码等。
S303,将压缩图像数据发送至接收端;
具体的,所述发送端可以生成压缩图像数据,所述发送端可以对所述压缩图像数据进行存储,当检测到接收端对所述图片文件的请求时,所述发送端再将所述压缩图像数据发送至所述接收端,例如:当发送端检测到包含所述图片文件的网页开启时。所述发送端也可以直接将所述压缩图像数据发送至所述接收端,例如:即时通信应用中的一个客户端需要将所述图片文件发送至另一个客户端时,应用服务设备需要将所述图片文件进行转发等,所述压缩图像数据包含所述图片头信息数据段和所述码流数据。
所述接收端接收所述发送端发送的所述压缩图像数据,所述接收端可以对所述压缩图像数据进行解析处理,以获取所述压缩图像数据中的所述图片头信息数据段和所述码流数据。
所述接收端解码所述码流数据以生成所述YUV数据,并基于图片头信息数据段中的时延信息、总帧数、全局颜色表信息等对所述YUV数据进行编码处理以生成所述图片文件。
在本发明实施例中,在对原始的图片文件进行解码后获得图片文件的图片头信息数据段,将图片文件中每帧图像转换为YUV数据,再基于YUV数据进行编码后得到的码流数据以及图片头信息数据段生成压缩图像数据,并将压缩图像数据进行传输,在接收到压缩图像数据时,可以解码码流数据生成YUV数据,再基于图片头信息数据段对YUV数据进行编码处理生成图片文件。通过将文件数据量较大的图片文件中每帧图像转换为数据量较小的YUV数据,再对YUV数据编码得到码流数据,极大的缩小了图片文件在传输过程中的文件数据量,降低了带宽成本。
请参见图9,为本发明实施例提供了又一种图片文件处理方法的流程示意图。本发明实施例从发送端侧阐述图片文件处理方法的具体流程,该方法可以包括以下步骤S401-步骤S404。
S401,解码原始图片文件以生成图片文件的图片头信息数据段以及图片文件中每帧图像对应的RGB数据;
具体的,所述发送端可以解码原始图片文件以生成所述图片文件的图片头信息数据段以及所述图片文件中每帧图像对应的RGB数据,所述图片文件可以是由开发人员完成对图像制作后所输入的图像,也可以是从其它端接收的图像,所述图片头信息数据段可以包括所述图片文件的延时信息、总帧数等,所述延时信息记录有所述图片文件中每帧图像之间的播放间隔时间,所述总帧数为所述图片文件中的图像帧数,可以理解的是,所述图片头信息数据段中还可以包括所述图片文件的全局颜色表信息,所述全局颜色表信息包含每帧图像的每个像素点的RGB值,针对一些图片文件,其包含的所有图像均共用一个全局颜色表信息,而对于另外一些图片文件,其每帧图像都存在各自的局部颜色表信息,因此若所述图片文件中存在全局颜色表信息,则获取该全局颜色表信息,若所述图片文件中仅存在局部颜色表信息,则不对局部颜色表信息进行获取。
S402,采用颜色空间转换公式将所述RGB数据转换为YUV数据;
具体的,所述发送端可以采用颜色空间转换公式将所述RGB数据转换为YUV数据,在将RGB数据转换为YUV数据的过程中,可以选择亮度分量的值域范围为[16,235],色度分量的值域范围为[16,240]的颜色空间转换公式,由于至于范围的缩减,可以极大的减小转换后YUV数据的数据量,但导致的失真程度较大;还可以选择亮度分量和色度分量的值域范围均为[0,255]颜色空间转换公式,可以减小转换后YUV数据的失真,但转换后YUV数据的数据量较大,亮度分量和色度分量的值域范围均为[0,255]的颜色空间转换公式为:
Y=0.299R+0.587G+0.114B;
U=-0.1687R-0.3313G+0.5B+128;
V=0.5R-0.4187G-0.0813B+128;
其中,YUV是一种视频数据格式,Y为亮度分量,UV为色度分量,通过颜色空间转换公式可以对每帧图像的像素点进行光栅扫描处理,将每帧RGB数据转换为对应的YUV数据。
S403,对所述YUV数据进行编码以生成码流数据;
具体的,所述发送端可以进一步对所述YUV数据进行编码处理,生成码流数据,所述编码可以包括预测编码、变换编码、量化编码和熵编码,例如:所述发送端可以采用IPPP模式对所述YUV数据进行压缩,第一帧YUV数据为I帧,I帧即为帧内预测帧,其余帧YUV数据为P帧,P帧即为帧间预测帧,可以有效的压缩图片文件的文件数据量,还可以采用固定QP的方式来稳定不同帧之间的质量等。熵编码则可以包括哈夫曼编码、算数编码等。
进一步的,在对所述YUV数据进行编码过程中,可以支持用户添加配置参数,所述配置参数可以为对所述YUV数据进行编码的参数,所述配置参数可以包括标清模式参数、高清模式参数和无损模式参数中的任一种,要求减少带宽,则可以选择标清模式参数(例如:YUV420模式参数);要求图像质量,则可以选择高清模式参数(例如:YUV444模式参数)等。所述发送端可以采用配置参数对所述YUV数据进行编码以生成码流数据。
可选的,在对所述YUV数据进行编码过程中,还可以支持用户添加编码器复杂度,所述编码器复杂度可以为根据所述发送端的硬件性能所决定的编码的精细度参数,所述编码器复杂度可以包括第一复杂度、第二复杂度和第三复杂度中的任一种,所述第一复杂度高于所述第二复杂度,所述第二复杂度高于所述第三复杂度,例如:可以对所述发送端的硬件性能进行检测以生成性能数值,例如:测试所述接收端的中央处理器的计算速率等,当所述性能数值位于第一预设数值范围内时,可以确定发送端硬件性能很高,则可以推荐使用第一复杂度的编码方式;当所述性能数值位于第二预设数值范围内时,可以确定发送端硬件性能中等,则可以推荐使用第二复杂度的编码方式;当所述性能数值位于第三预设数值范围内时,可以确定发送端硬件性能较差,或者当前要求实时转码等,则可以推荐使用第三复杂度的编码方式等。所述发送端可以配置编码器复杂度对所述YUV数据进行编码以生成码流数据。
需要说明的是,上述两种编码方式可以为并行的编码方式,即所述发送端可以同时采用配置参数和配置的编码器复杂度对所述YUV数据进行编码以生成码流数据。上述的性能数值、第一预设数值范围、第二通预设数值范围以及第三预设数值范围具体可以根据开发人员的人为经验进行设定。
S404,将压缩图像数据发送至接收端;
具体的,所述发送端可以生成压缩图像数据,所述发送端可以对所述压缩图像数据进行存储,当检测到接收端对所述图片文件的请求时,所述发送端再将所述压缩图像数据发送至所述接收端,例如:当发送端检测到包含所述图片文件的网页开启时。所述发送端也可以直接将所述压缩图像数据发送至所述接收端,例如:即时通信应用中的一个客户端需要将所述图片文件发送至另一个客户端时,应用服务设备需要将所述图片文件进行转发等,所述压缩图像数据包含所述图片头信息数据段和所述码流数据。
所述接收端接收所述发送端发送的所述压缩图像数据,所述接收端可以对所述压缩图像数据进行解析处理,以获取所述压缩图像数据中的所述图片头信息数据段和所述码流数据。
所述接收端解码所述码流数据以生成所述YUV数据,并基于图片头信息数据段中的时延信息、总帧数、全局颜色表信息等对所述YUV数据进行编码处理以生成所述图片文件。
在本发明实施例中,根据原始的图片文件生成图片文件的图片头信息数据段,将图片文件中每帧图像转换为YUV数据,再基于YUV数据进行编码后得到的码流数据以及图片头信息数据段生成压缩图像数据,并将压缩图像数据进行传输,在接收到压缩图像数据时,可以根据码流数据生成YUV数据,再基于图片头信息数据段对YUV数据进行处理生成图片文件。通过将文件数据量较大的图片文件中每帧图像转换为数据量较小的YUV数据,再对YUV数据编码得到码流数据,极大的缩小了图片文件在传输过程中的文件数据量,降低了带宽成本;通过灵活控制配置参数的使用以及配置编码器复杂度,可以满足不同的业务场景以及不同的机器性能,优化图片文件的编码效率。
请参见图10,为本发明实施例提供了一种压缩图像数据生成的举例示意图。如图10所示,在解码原始图片文件时,可以获取所述图片文件的延时信息、总帧数、全局颜色表信息等,所述延时信息记录有所述图片文件中每帧图像之间的播放间隔时间,所述总帧数为所述图片文件中的图像帧数,可以理解的是,所述图片头信息数据段中还可以包括所述图片文件的全局颜色表信息,所述全局颜色表信息包含每帧图像的每个像素点的RGB值,针对一些图片文件,其包含的所有图像均共用一个全局颜色表信息,而对于另外一些图片文件,其每帧图像都存在各自的局部颜色表信息,因此若所述图片文件中存在全局颜色表信息,则获取该全局颜色表信息,若所述图片文件中仅存在局部颜色表信息,则不对局部颜色表信息进行获取。可以对所述图片文件的延时信息、总帧数、全局颜色表信息等进行封装,以生成所述图片文件的图片头信息数据段。同时解码所述图片文件还可以获取图片文件中每帧图像对应的RGB数据可以采用颜色空间转换公式将所述RGB数据转换为YUV数据,通过颜色空间转换公式可以对每帧图像的像素点进行光栅扫描处理,将每帧RGB数据转换为对应的YUV数据。可以进一步对所述YUV数据进行编码处理,生成码流数据,所述编码可以包括预测编码、变换编码、量化编码和熵编码。在对所述YUV数据进行编码过程中,可以支持用户添加配置参数,还可以支持用户添加编码器复杂度。最终可以生成压缩图像数据。
请参见图11,为本发明实施例提供了又一种图片文件处理方法的流程示意图。本发明实施例从接收端侧阐述图片文件处理方法的具体流程,该方法可以包括以下步骤S501和步骤S502。
S501,接收发送端发送的针对原始图片文件的压缩图像数据,解析所述压缩图像数据以获取图片文件的图片头信息数据段和码流数据;
具体的,发送端可以解码原始图片文件以生成所述图片文件的图片头信息数据段,所述图片文件可以是由开发人员完成对图像制作后所输入的图像,也可以是从其它端接收的图像,所述图片头信息数据段可以包括所述图片文件的延时信息、总帧数等,所述延时信息记录有所述图片文件中每帧图像之间的播放间隔时间,所述总帧数为所述图片文件中的图像帧数,可以理解的是,所述图片头信息数据段中还可以包括所述图片文件的全局颜色表信息,所述全局颜色表信息包含每帧图像的每个像素点的RGB值,针对一些图片文件,其包含的所有图像均共用一个全局颜色表信息,而对于另外一些图片文件,其每帧图像都存在各自的局部颜色表信息,因此若所述图片文件中存在全局颜色表信息,则获取该全局颜色表信息,若所述图片文件中仅存在局部颜色表信息,则不对局部颜色表信息进行获取。所述发送端进一步将所述图片文件中每帧图像转换为YUV数据。
所述发送端可以进一步对所述YUV数据进行编码处理,生成码流数据,所述编码可以包括预测编码、变换编码、量化编码和熵编码,例如:所述发送端可以采用IPPP模式对所述YUV数据进行压缩,第一帧YUV数据为I帧,I帧即为帧内预测帧,其余帧YUV数据为P帧,P帧即为帧间预测帧,可以有效的压缩图片文件的文件数据量,还可以采用固定QP的方式来稳定不同帧之间的质量等。熵编码则可以包括哈夫曼编码、算数编码等。
所述发送端可以生成压缩图像数据,所述发送端可以对所述压缩图像数据进行存储,当检测到接收端对所述图片文件的请求时,所述发送端再将所述压缩图像数据发送至所述接收端,例如:当发送端检测到包含所述图片文件的网页开启时。所述发送端也可以直接将所述压缩图像数据发送至所述接收端,例如:即时通信应用中的一个客户端需要将所述图片文件发送至另一个客户端时,应用服务设备需要将所述图片文件进行转发等。
所述接收端接收所述发送端发送的所述压缩图像数据,所述接收端可以对所述压缩图像数据进行解析处理,以获取所述压缩图像数据中的所述图片头信息数据段和所述码流数据。
S502,根据所述码流数据生成所述YUV数据,并基于所述图片头信息数据段对所述YUV数据进行处理以生成所述图片文件;
具体的,所述接收端解码所述码流数据以生成所述YUV数据,并基于图片头信息数据段中的时延信息、总帧数、全局颜色表信息等对所述YUV数据进行编码处理以生成所述图片文件。
在本发明实施例中,在接收到压缩图像数据时,可以根据码流数据生成YUV数据,再基于图片头信息数据段对YUV数据进行处理生成图片文件。通过将文件数据量较大的图片文件中每帧图像转换为数据量较小的YUV数据,再对YUV数据编码得到码流数据,极大的缩小了图片文件在传输过程中的文件数据量,降低了带宽成本。
请参见图12,为本发明实施例提供了又一种图片文件处理方法的流程示意图。本发明实施例从接收端侧阐述图片文件处理方法的具体流程,该方法可以包括以下步骤S601-步骤S604。
S601,接收发送端发送的针对原始图片文件的压缩图像数据,解析所述压缩图像数据以获取图片文件的图片头信息数据段和码流数据;
具体的,所述发送端可以解码原始图片文件以生成所述图片文件的图片头信息数据段以及所述图片文件中每帧图像对应的RGB数据,所述图片文件可以是由开发人员完成对图像制作后所输入的图像,也可以是从其它端接收的图像,所述图片头信息数据段可以包括所述图片文件的延时信息、总帧数等,所述延时信息记录有所述图片文件中每帧图像之间的播放间隔时间,所述总帧数为所述图片文件中的图像帧数,可以理解的是,所述图片头信息数据段中还可以包括所述图片文件的全局颜色表信息,所述全局颜色表信息包含每帧图像的每个像素点的RGB值,针对一些图片文件,其包含的所有图像均共用一个全局颜色表信息,而对于另外一些图片文件,其每帧图像都存在各自的局部颜色表信息,因此若所述图片文件中存在全局颜色表信息,则获取该全局颜色表信息,若所述图片文件中仅存在局部颜色表信息,则不对局部颜色表信息进行获取。
所述发送端可以采用颜色空间转换公式将所述RGB数据转换为YUV数据,在将RGB数据转换为YUV数据的过程中,可以选择亮度分量的值域范围为[16,235],色度分量的值域范围为[16,240]的颜色空间转换公式,由于至于范围的缩减,可以极大的减小转换后YUV数据的数据量,但导致的失真程度较大;还可以选择亮度分量和色度分量的值域范围均为[0,255]颜色空间转换公式,可以减小转换后YUV数据的失真,但转换后YUV数据的数据量较大,亮度分量和色度分量的值域范围均为[0,255]的颜色空间转换公式为:
Y=0.299R+0.587G+0.114B;
U=-0.1687R-0.3313G+0.5B+128;
V=0.5R-0.4187G-0.0813B+128;
其中,YUV是一种视频数据格式,Y为亮度分量,UV为色度分量,通过颜色空间转换公式可以对每帧图像的像素点进行光栅扫描处理,将每帧RGB数据转换为对应的YUV数据。
所述发送端可以进一步对所述YUV数据进行编码处理,生成码流数据,所述编码可以包括预测编码、变换编码、量化编码和熵编码,例如:所述发送端可以采用IPPP模式对所述YUV数据进行压缩,第一帧YUV数据为I帧,I帧即为帧内预测帧,其余帧YUV数据为P帧,P帧即为帧间预测帧,可以有效的压缩图片文件的文件数据量,还可以采用固定QP的方式来稳定不同帧之间的质量等。熵编码则可以包括哈夫曼编码、算数编码等。
所述发送端可以生成压缩图像数据,所述发送端可以对所述压缩图像数据进行存储,当检测到接收端对所述图片文件的请求时,所述发送端再将所述压缩图像数据发送至所述接收端,例如:当发送端检测到包含所述图片文件的网页开启时。所述发送端也可以直接将所述压缩图像数据发送至所述接收端,例如:即时通信应用中的一个客户端需要将所述图片文件发送至另一个客户端时,应用服务设备需要将所述图片文件进行转发等。
所述接收端接收所述发送端发送的所述压缩图像数据,所述接收端可以对所述压缩图像数据进行解析处理,以获取所述压缩图像数据中的所述图片头信息数据段和所述码流数据。
S602,解码所述码流数据以生成所述YUV数据,并采用颜色空间转换公式将所述YUV数据转换为RGB数据;
具体的,所述接收端解码所述码流数据以生成所述YUV数据,并可以采用颜色空间转换公式将所述YUV数据转换为RGB数据,进一步的,所述接收端需要依据亮度分量的值域范围确定所采用的颜色空间转换公式,可以理解的是,针对YUV444模式下的YUV数据,可以选择亮度分量的值域范围为[16,235],色度分量的值域范围为[16,240]的颜色空间转换公式,也可以选择亮度分量和色度分量的值域范围均为[0,255]颜色空间转换公式,具体可以依据上述实施例中在将RGB数据转换为YUV数据时选择的颜色空间转换公式对应。需要说明的是,色度包括Cb和Cr两种色差信号中的任一种的样值矩阵和单个样值。两种色差信号需要分别进行上采样处理,两者进行上采样处理的方式均相同,其中,Cb对应YUV中的U,Cr对应YUV中的V。
若亮度分量的值域范围为[16,235],色度分量的值域范围为[16,240],则颜色空间转换公式为:
R=Clip3(0,255,(298*Y+409*(Cr–128)+128)>>8);
G=Clip3(0,255,(298*Y–100*(Cb-128)+208*(Cr-128)+128)>>8);
B=Clip3(0,255,(298*Y+516*(Cb-128)+128)>>8);
其中,“+128”用于对R值、B值、G值进行四舍五入,“>>8”表示除以2的8次方。
若亮度分量和色度分量的值域范围均为[0,255],则颜色空间转换公式为:
R=Clip3(0,255,Y+(359*(Cr–128)+128)>>8);
G=Clip3(0,255,Y–(88*(Cb-128)+183*(Cr-128)+128)>>8);
B=Clip3(0,255,Y+(454*(Cb-128)+128)>>8);
其中,“+128”用于对R值、B值、G值进行四舍五入,“>>8”表示除以2的8次方。
通过颜色空间转换公式可以对每帧图像的像素点进行光栅扫描处理,将每帧YUV数据转换为对应的RGB数据。
S603,采用所述全局颜色表信息对RGB数据中的各像素点的RGB值进行更新;
具体的,由于之前对所述YUV数据进行过编码处理,因此导致由所述YUV数据转换的RGB数据存在失真的情况,所述接收端可以采用所述全局颜色表信息对所述RGB数据中的各像素点的RGB值进行更新,可以理解的是,所述RGB数据中可以包含一个或多个像素点,当所述RGB数据中仅存在一个像素点时,可以采用所述全局颜色表信息对所述像素点的RGB值进行更新,当所述RGB数据中存在多个像素点时,可以采用所述全局颜色表信息对多个像素点中各像素点的RGB值进行更新,所述接收端需要重新对所述全局颜色表信息进行训练,以生成符合所述RGB数据的局部颜色表信息,而对于不存在全局颜色表信息的情况,所述接收端可以生成初始化颜色表信息,并通过对所述初始化颜色表信息进行训练,以生成符合所述RGB数据的局部颜色表信息。具体的处理过程如下所述:
在本发明实施例的第一种实施方式中,针对图片头信息数据段中存在全局颜色表信息的情况,当所述RGB数据为所述图片文件中的第一帧图像,所述接收端可以采用所述RGB数据中的各像素点的RGB值对所述全局颜色表信息进行训练以生成所述RGB数据的局部颜色表信息,并采用所述RGB数据的局部颜色表信息对所述各像素点的RGB值进行更新。
进一步的,当所述RGB数据为所述图片文件中的第一帧图像,且所述图片头信息数据段中存在全局颜色表信息时,所述接收端可以将所述全局颜色表信息中的至少一个源RGB值按照G分量的预设排序方式(例如:升序、降序等)进行排序,以生成训练颜色表信息,请一并参见图3,如图3所示,所述全局颜色表信息中包括颜色索引和源RGB值,例如:5,(8,1,10)、6,(8,9,8)、7,(1,7,6)、8,(10,8,6)、9,(5,8,5)、10,(9,10,1),按照G分量的升序排序可以生成训练颜色表信息,例如:5,(8,1,10)、6,(1,7,6)、7,(5,8,5)、8,(10,8,6)、9,(8,9,8)、10,(9,10,1)。
所述接收端在所述训练颜色表信息中获取G分量与所述RGB数据中当前像素点的G分量最接近的第一源RGB值,并获取所述第一源RGB值的第一颜色索引,可以理解的是,所述接收端可以采用所述当前像素点的G分量遍历所述训练颜色表信息中的源RGB值,获取G分量最为接近的第一源RGB值,请一并参见图4,假设第一帧RGB数据中有四个像素点,当前像素点为所述RGB数据中的第一个像素点,所述当前像素点的RGB值为(9,9,9),可以在所述训练颜色表信息中查找到(8,9,8)的G分量与当前像素点的RGB值中的G分量最接近,则将(8,9,8)确定为第一源RGB值,并获取所述第一源RGB值的第一颜色索引“9”。
所述接收端在所述训练颜色表信息中以所述第一颜色索引为中心的预设范围内,获取与所述当前像素点的RGB值误差最小的第二源RGB值,并获取所述第二源RGB值的第二颜色索引,可以理解的是,所述接收端可以以所述第一颜色索引为中心,在所述第一颜色索引的前后预设范围内获取多个源RGB值,并分别计算所述第一源RGB值以及所述多个源RGB值与所述当前像素点的RGB值的误差,并将多个源RGB值中误差最小的源RGB值确定为第二源RGB值,依据上述举例,假设预设范围为正负1的范围,则以“9”为中心,获取(10,8,6)和(9,10,1)两个源RGB值,并分别计算(10,8,6)、(8,9,8)和(9,10,1)三者与(9,9,9)的误差值,其中颜色索引“8”的误差值为|9-10|+|9-8|+|9-6|=5,颜色索引“9”的误差值为|9-8|+|9-9|+|9-8|=2,颜色索引“10”的误差值为|9-9|+|9-10|+|9-1|=9,则确定源RGB值(8,9,8)为所述第二源RGB值,并获取第二源RGB值的第二颜色索引“9”。可以理解的是,上述获取的第一源RGB值和第一颜色索引存在与第二源RGB值和第二颜色索引相同的情况,也可以存在不相同的情况,具体由实际执行过程确定。
所述接收端将所述第二源RGB值替换为所述当前像素点的RGB值,并采用预设权重值和所述当前像素点的RGB值,对所述训练颜色表信息中以所述第二颜色索引为中心的预设范围内的多个源RGB值进行修改,请一并参见图5,依据上述举例,所述第二源RGB值为(8,9,8),则将(8,9,8)替换为当前像素点的RGB值(9,9,9),同时可以依据预设权重值以及当前像素点的RGB值对以所述第二颜色索引为中心的预设范围内的多个源RGB值进行修改,假设预设范围为正负1,则需要对(10,8,6)和(9,10,1)两个源RGB值进行修改,所述预设权重值可以为动态的权重值,对于距离所述第二颜色索引越近源RGB值,其受到当前像素点的RGB值的影响越大,假设当前权重值的分配为2:8,则采用(9,9,9)对(10,8,6)进行修改,例如,R分量=9*0.8+10*0.2=9.2,G分量=9*0.8+8*0.2=8.8,B分量=9*0.8+6*0.2=8.4,对以上结果采用四舍五入的方式,确定颜色索引“8”的源RGB值由(10,8,6)修改为(9,9,8),同理,颜色索引“10”的源RGB值由(9,10,1)修改为(9,9,7)。
当所述当前像素点不为所述RGB数据中的最后一个像素点时,例如当前像素点为图4或图5中所示的RGB数据中的第一个像素点时,所述接收端获取修改后得到的所述训练颜色表信息,将所述当前像素点的下一个像素点作为当前像素点,并转入执行在所述训练颜色表信息中获取G分量与所述RGB数据中当前像素点的G分量最接近的第一源RGB值,例如:将所述RGB数据中的第二个像素点作为当前像素点,对修改后得到的所述训练颜色表信息再一次进行训练。具体的训练过程可以参见上述训练过程的描述,在此不进行赘述。
当所述当前像素点为所述RGB数据中的最后一个像素点时,例如当前像素点为图4或图5中所示的RGB数据中的第四个像素点时,所述接收端获取修改后得到的所述训练颜色表信息,并将所述训练颜色表信息确定为所述RGB数据的局部颜色表信息。
所述接收端可以采用所述RGB数据的局部颜色表信息对所述各像素点的RGB值进行更新,进一步的,所述接收端可以在所述RGB数据的局部颜色表信息中依次获取与所述各像素点相同或误差最小的源RGB值分别替换所述各像素点的RGB值,优选的,所述接收端可以将与所述各像素点相同或误差最小的源RGB值对应的颜色索引分别替换所述各像素点的RGB值,请一并参见图6,依据上述举例,所述RGB数据的第一个像素点的RGB值为(9,9,9),在所述局部颜色表信息中与(9,9,9)误差最小的为(9,9,8),则将(9,9,8)对应的颜色索引“8”替换所述第一个像素点的RGB值,同理,第二个像素点的颜色索引为“10”,第三个像素点的颜色索引为“9”,第四个像素点的颜色索引为“6”。
在本发明实施例的第二种实施方式中,针对图片头信息数据段中不存在全局颜色表信息的情况,当所述RGB数据为所述图片文件中的第一帧图像,所述接收端可以采用所述RGB数据中的各像素点的RGB值对初始化颜色表信息进行训练以生成所述RGB数据的局部颜色表信息,并采用所述RGB数据的局部颜色表信息对所述各像素点的RGB值进行更新。
进一步的,当所述RGB数据为所述图片文件中的第一帧图像,且所述图片头信息数据段中不存在全局颜色表信息时,所述接收端可以生成一个初始化颜色表信息,例如:(0,0,0)、(1,1,1)、(2,2,2)、……、(255,255,255),所述接收端在初始化颜色表信息中获取G分量与所述RGB数据中当前像素点的G分量最接近的第三源RGB值,并获取所述第三源RGB值的第三颜色索引,所述接收端在所述初始化颜色表信息中以所述第三颜色索引为中心的预设范围内,获取与所述当前像素点的RGB值误差最小的第四源RGB值,并获取所述第四源RGB值的第四颜色索引,所述接收端将所述第四源RGB值替换为所述当前像素点的RGB值,并采用预设权重值和所述当前像素点的RGB值,对所述初始化颜色表信息中以所述第四颜色索引为中心的预设范围内的多个源RGB值进行修改,当所述当前像素点不为所述RGB数据中的最后一个像素点时,所述接收端获取修改后得到的所述初始化颜色表信息,将所述当前像素点的下一个像素点作为当前像素点,并转入执行在所述初始化颜色表信息中获取G分量与所述RGB数据中当前像素点的G分量最接近的第三源RGB值,当所述当前像素点为所述RGB数据中的最后一个像素点时,所述接收端获取修改后得到的所述训练颜色表信息,并将所述初始化颜色表信息确定为所述RGB数据的局部颜色表信息,所述接收端可以采用所述RGB数据的局部颜色表信息对所述各像素点的RGB值进行更新。需要说明的是,第二种实施方式中对初始化颜色表信息进行训练以及采用RGB数据的局部颜色表信息对各像素点的RGB值进行更新的过程均可以参见上述第一种实施方式的执行过程,在此不进行赘述。
针对上述第一种实施方式和第二种实施方式,在本发明实施例的第三种实施方式中,针对所述RGB数据不为所述图片文件中的第一帧图像,即所述RGB数据为所述图片文件中的第N帧图像时,其中,N为大于1且小于或等于所述总帧数的正整数,所述接收端可以采用所述RGB数据中的各像素点的RGB值对第N-1帧RGB数据的局部颜色表信息进行训练以生成所述RGB数据的局部颜色表信息,并采用所述RGB数据的局部颜色表信息对所述各像素点的RGB值进行更新。
进一步的,当所述RGB数据为所述图片文件中的第N帧图像时,所述接收端可以将第N-1帧RGB数据的局部颜色表信息中的至少一个源RGB值按照G分量的预设排序方式进行排序,以生成训练颜色表信息,所述接收端在所述训练颜色表信息中获取G分量与所述RGB数据中当前像素点的G分量最接近的第五源RGB值,并获取所述第五源RGB值的第五颜色索引,所述接收端在所述训练颜色表信息中以所述第五颜色索引为中心的预设范围内,获取与所述当前像素点的RGB值误差最小的第六源RGB值,并获取所述第六源RGB值的第六颜色索引,所述接收端将所述第六源RGB值替换为所述当前像素点的RGB值,并采用预设权重值和所述当前像素点的RGB值,对所述训练颜色表信息中以所述第六颜色索引为中心的预设范围内的多个源RGB值进行修改,当所述当前像素点不为所述RGB数据中的最后一个像素点时,所述接收端获取修改后得到的所述训练颜色表信息,将所述当前像素点的下一个像素点作为当前像素点,并转入执行在所述训练颜色表信息中获取G分量与所述RGB数据中当前像素点的G分量最接近的第五源RGB值,当所述当前像素点为所述RGB数据中的最后一个像素点时,所述接收端获取修改后得到的所述训练颜色表信息,并将所述训练颜色表信息确定为所述RGB数据的局部颜色表信息,所述接收端可以采用所述RGB数据的局部颜色表信息对所述各像素点的RGB值进行更新。需要说明的是,第三种实施方式中对训练颜色表信息进行训练以及采用RGB数据的局部颜色表信息对各像素点的RGB值进行更新的过程均可以参见上述第一种实施方式的执行过程,在此不进行赘述。
需要说明的是,上述采用G分量作为对颜色表信息进行训练的引导仅为举例,本发明实施例同样可以采用R分量或者B分量作为对颜色表信息进行训练的引导,执行过程均可以参见上述内容中的描述,在此不进行赘述。上述第一源RGB值、第二源RGB值、第三源RGB值、第四源RGB值、第五源RGB值、第六源RGB值以及第一颜色索引、第二颜色索引、第三颜色索引、第四颜色索引、第五颜色索引、第六颜色索引均可以表示相同的源RGB值和颜色索引的含义,采用此方式进行命名仅为了区分不同的执行场景,例如:当所述RGB数据为所述图片文件中的第一帧图像,且所述图片头信息数据段中存在全局颜色表信息时;当所述RGB数据为所述图片文件中的第一帧图像,且所述图片头信息数据段中不存在全局颜色表信息时;当所述RGB数据为所述图片文件中的第N帧图像时,以上三种执行场景。
S604,采用所述延时时间和所述总帧数将更新后的所述RGB数据进行图像编码以生成所述图片文件;
具体的,所述接收端采用所述延时时间和所述总帧数将更新后的所述RGB数据进行图像编码以生成所述图片文件,优选的,所述接收端可以基于所述延时时间和所述总帧数,并采用LZW对所述RGB数据中各像素点的颜色索引进行图像编码,生成所述图片文件,所述接收端可以对所述图片文件进行存储或者展示。可以理解的是,所述图像编码的方式具体由图片文件的图像格式决定,例如:若需要生成的图片文件为GIF图像,则所述图像编码可以为GIF编码等。
在本发明实施例中,在接收到压缩图像数据时,可以根据码流数据生成YUV数据,再基于图片头信息数据段对YUV数据进行处理生成图片文件。通过将文件数据量较大的图片文件中每帧图像转换为数据量较小的YUV数据,再对YUV数据编码得到码流数据,极大的缩小了图片文件在传输过程中的文件数据量,降低了带宽成本;通过对全局颜色表信息或初始化颜色表信息进行训练,生成RGB数据的局部颜色表信息,有效的减少了图像的失真;通过采用G分量获取最接近的源RGB值,并在颜色表信息中进行小范围的颜色索引搜索,无需遍历整个颜色表信息,降低了对局部颜色表信息训练的复杂度,进一步提升了图片文件的编码效率。
请参见图13,为本发明实施例提供了一种图片文件生成的举例示意图。如图13所示,在获取压缩图像数据时,可以解析所述压缩图像数据,获取所述压缩图像数据中的图片头信息数据段和码流数据,所述图片头信息数据段中可以包含延时信息、总帧数、全局颜色表信息等,所述延时信息记录有所述图片文件中每帧图像之间的播放间隔时间,所述总帧数为所述图片文件中的图像帧数,可以理解的是,所述全局颜色表信息包含每帧图像的每个像素点的RGB值,针对一些图片文件,其包含的所有图像均共用一个全局颜色表信息,而对于另外一些图片文件,其每帧图像都存在各自的局部颜色表信息,因此若所述图片文件中存在全局颜色表信息,则图片头信息数据段中存在全局颜色表信息,若所述图片文件中仅存在局部颜色表信息,则图片头信息数据段中不存在局部颜色表信息。进一步可以解码所述码流数据以生成所述YUV数据,并采用颜色空间转换公式将所述YUV数据转换为RGB数据,若当前处理的RGB数据为所述图片文件中的第一帧RGB数据,则判断图片头信息数据段中是否存在全局颜色表信息,若存在,则采用所述RGB数据中的各像素点的RGB值对所述全局颜色表信息进行训练以生成所述RGB数据的局部颜色表信息,并采用所述RGB数据的局部颜色表信息对所述各像素点的RGB值进行更新,若不存在全局颜色表信息,则可以生成初始化颜色表信息,采用所述RGB数据中的各像素点的RGB值对初始化颜色表信息进行训练以生成所述RGB数据的局部颜色表信息,并采用所述RGB数据的局部颜色表信息对所述各像素点的RGB值进行更新。若当前处理的RGB数据为所述图片文件中的第N帧RGB数据,其中N为大于1的正整数,则可以采用所述RGB数据中的各像素点的RGB值对第N-1帧RGB数据的局部颜色表信息进行训练以生成所述RGB数据的局部颜色表信息,并采用所述RGB数据的局部颜色表信息对所述各像素点的RGB值进行更新。最终采用所述延时时间和所述总帧数将更新后的所述RGB数据进行图像编码以生成所述图片文件。
请参见图14,为本发明实施例提供了又一种图片文件处理方法的流程示意图。如图14所示,本发明实施例中的图片文件处理设备可以为分布式服务设备,或者可以为分布式服务设备中的图像处理模块,本发明实施例的所述方法可以包括以下步骤S701-步骤S705。
S701,根据原始图片文件生成图片文件的图片头信息数据段,并将图片文件中每帧图像转换为YUV数据;
具体的,图片文件处理设备可以解码原始图片文件以生成所述图片文件的图片头信息数据段,所述图片文件可以是由开发人员完成对图像制作后所输入的图像,也可以是从其它端接收的图像,所述图片头信息数据段可以包括所述图片文件的延时信息、总帧数等,所述延时信息记录有所述图片文件中每帧图像之间的播放间隔时间,所述总帧数为所述图片文件中的图像帧数,可以理解的是,所述图片头信息数据段中还可以包括所述图片文件的全局颜色表信息,所述全局颜色表信息包含每帧图像的每个像素点的RGB值,针对一些图片文件,其包含的所有图像均共用一个全局颜色表信息,而对于另外一些图片文件,其每帧图像都存在各自的局部颜色表信息,因此若所述图片文件中存在全局颜色表信息,则获取该全局颜色表信息,若所述图片文件中仅存在局部颜色表信息,则不对局部颜色表信息进行获取。所述图片文件处理设备进一步将所述图片文件中每帧图像转换为YUV数据。
S702,对所述YUV数据进行编码以生成码流数据;
具体的,所述图片文件处理设备可以进一步对所述YUV数据进行编码处理,生成码流数据,所述编码可以包括预测编码、变换编码、量化编码和熵编码,例如:所述图片文件处理设备可以采用IPPP模式对所述YUV数据进行压缩,第一帧YUV数据为I帧,I帧即为帧内预测帧,其余帧YUV数据为P帧,P帧即为帧间预测帧,可以有效的压缩图片文件的文件数据量,还可以采用固定QP的方式来稳定不同帧之间的质量等。熵编码则可以包括哈夫曼编码、算数编码等。
S703,存储压缩图像数据;
具体的,所述图片文件处理设备可以生成压缩图像数据,所述图片文件处理设备可以对所述压缩图像数据进行存储,所述压缩图像数据包含所述图片头信息数据段和所述码流数据。
S704,解析所述压缩图像数据以获取所述图片头信息数据段和所述码流数据;
具体的,所述图片文件处理设备可以对所述压缩图像数据进行解析处理,以获取所述压缩图像数据中的所述图片头信息数据段和所述码流数据。
S705,根据所述码流数据生成所述YUV数据,并基于所述图片头信息数据段对所述YUV数据进行编码处理以生成所述图片文件;
具体的,所述图片文件处理设备解码所述码流数据以生成所述YUV数据,并基于图片头信息数据段中的时延信息、总帧数、全局颜色表信息等对所述YUV数据进行编码处理以生成所述图片文件。
在本发明实施例中,根据原始的图片文件生成图片文件的图片头信息数据段,将图片文件中每帧图像转换为YUV数据,再基于YUV数据进行编码后得到的码流数据以及图片头信息数据段生成压缩图像数据,并将压缩图像数据进行存储,在获取到压缩图像数据时,可以根据码流数据生成YUV数据,再基于图片头信息数据段对YUV数据进行处理生成图片文件。通过将文件数据量较大的图片文件中每帧图像转换为数据量较小的YUV数据,再对YUV数据编码得到码流数据,极大的缩小了图片文件在传输过程中的文件数据量,降低了存储成本。
请参见图15,为本发明实施例提供了又一种图片文件处理方法的流程示意图。如图15所示,本发明实施例中的图片文件处理设备可以为分布式服务设备,或者可以为分布式服务设备中的图像处理模块,本发明实施例具体阐述了将图片文件压缩为压缩图像数据的过程,所述方法可以包括以下步骤S801-步骤S807。
S801,解码原始图片文件;
S802,判断所述图片文件的颜色表信息是否为所述图片文件的全局颜色表信息;
具体的,所述图片文件处理设备可以解码原始图片文件,可以理解的是,所述全局颜色表信息包含所述图片文件中每帧图像的每个像素点的RGB值,针对一些图片文件,其包含的所有图像均共用一个全局颜色表信息,而对于另外一些图片文件,其每帧图像都存在各自的局部颜色表信息,所述图片文件处理设备可以进一步判断所述图片文件中的颜色表信息是否为所述图片文件的全局颜色表信息,若是,则转入执行步骤S803;若否,则转入执行步骤S804。
S803,生成包含延时信息、总帧数、全局颜色表信息的图片头信息数据段以及图片文件中每帧图像对应的RGB数据;
具体的,当判断所述图片文件的颜色表信息为所述图片文件的全局颜色表信息时,所述图片文件处理设备可以生成包含延时信息、总帧数、全局颜色表信息等的图片头信息数据段,所述延时信息记录有所述图片文件中每帧图像之间的播放间隔时间,所述总帧数为所述图片文件中的图像帧数,同时还生成所述图片文件中每帧图像对应的RGB数据。
S804,生成包含延时信息、总帧数的图片头信息数据段以及图片文件中每帧图像对应的RGB数据;
具体的,当判断所述图片文件的颜色表信息不为所述图片文件的全局颜色表信息时,所述图片文件处理设备可以生成包含延时信息、总帧数等的图片头信息数据段,所述延时信息记录有所述图片文件中每帧图像之间的播放间隔时间,所述总帧数为所述图片文件中的图像帧数,同时还生成所述图片文件中每帧图像对应的RGB数据。
S805,采用颜色空间转换公式将所述RGB数据转换为YUV数据;
具体的,所述图片文件处理设备可以采用颜色空间转换公式将所述RGB数据转换为YUV数据,在将RGB数据转换为YUV数据的过程中,可以选择亮度分量的值域范围为[16,235],色度分量的值域范围为[16,240]的颜色空间转换公式,由于至于范围的缩减,可以极大的减小转换后YUV数据的数据量,但导致的失真程度较大;还可以选择亮度分量和色度分量的值域范围均为[0,255]颜色空间转换公式,可以减小转换后YUV数据的失真,但转换后YUV数据的数据量较大,亮度分量和色度分量的值域范围均为[0,255]的颜色空间转换公式为:
Y=0.299R+0.587G+0.114B;
U=-0.1687R-0.3313G+0.5B+128;
V=0.5R-0.4187G-0.0813B+128;
其中,YUV是一种视频数据格式,Y为亮度分量,UV为色度分量,通过颜色空间转换公式可以对每帧图像的像素点进行光栅扫描处理,将每帧RGB数据转换为对应的YUV数据。
S806,对所述YUV数据进行编码以生成码流数据;
具体的,所述图片文件处理设备可以进一步对所述YUV数据进行编码处理,生成码流数据,所述编码可以包括预测编码、变换编码、量化编码和熵编码,例如:所述图片文件处理设备可以采用IPPP模式对所述YUV数据进行压缩,第一帧YUV数据为I帧,I帧即为帧内预测帧,其余帧YUV数据为P帧,P帧即为帧间预测帧,可以有效的压缩图片文件的文件数据量,还可以采用固定QP的方式来稳定不同帧之间的质量等。熵编码则可以包括哈夫曼编码、算数编码等。
进一步的,在对所述YUV数据进行编码过程中,可以支持用户添加配置参数,所述配置参数可以为对所述YUV数据进行编码的参数,所述配置参数可以包括标清模式参数、高清模式参数和无损模式参数中的任一种,要求减少带宽,则可以选择标清模式参数(例如:YUV420模式参数);要求图像质量,则可以选择高清模式参数(例如:YUV444模式参数)等。所述图片文件处理设备可以采用配置参数对所述YUV数据进行编码以生成码流数据。
可选的,在对所述YUV数据进行编码过程中,还可以支持用户添加编码器复杂度,所述编码器复杂度可以为根据所述图片文件处理设备的硬件性能所决定的编码的精细度参数,所述编码器复杂度可以包括第一复杂度、第二复杂度和第三复杂度中的任一种,所述第一复杂度高于所述第二复杂度,所述第二复杂度高于所述第三复杂度,例如:可以对所述图片文件处理设备的硬件性能进行检测以生成性能数值,例如:测试所述接收端的中央处理器的计算速率等,当所述性能数值位于第一预设数值范围内时,可以确定图片文件处理设备硬件性能很高,则可以推荐使用第一复杂度的编码方式;当所述性能数值位于第二预设数值范围内时,可以确定发送端硬件性能中等,则可以推荐使用第二复杂度的编码方式;当所述性能数值位于第三预设数值范围内时,可以确定图片文件处理设备硬件性能较差,或者当前要求实时转码等,则可以推荐使用第三复杂度的编码方式等。所述图片文件处理设备可以配置编码器复杂度对所述YUV数据进行编码以生成码流数据。
需要说明的是,上述两种编码方式可以为并行的编码方式,即所述图片文件处理设备可以同时采用配置参数和配置的编码器复杂度对所述YUV数据进行编码以生成码流数据。上述的性能数值、第一预设数值范围、第二通预设数值范围以及第三预设数值范围具体可以根据开发人员的人为经验进行设定。
S807,存储压缩图像数据;
具体的,所述图片文件处理设备可以生成压缩图像数据,所述图片文件处理设备可以对所述压缩图像数据进行存储,所述压缩图像数据包含所述图片头信息数据段和所述码流数据。
在本发明实施例中,根据原始的图片文件生成图片文件的图片头信息数据段,将图片文件中每帧图像转换为YUV数据,再基于YUV数据进行编码后得到的码流数据以及图片头信息数据段生成压缩图像数据,并将压缩图像数据进行存储。通过将文件数据量较大的图片文件中每帧图像转换为数据量较小的YUV数据,再对YUV数据编码得到码流数据,极大的缩小了图片文件在存储过程中的文件数据量,降低了存储成本。
请参见图16,为本发明实施例提供了又一种图片文件处理方法的流程示意图。如图16所示,本发明实施例中的图片文件处理设备可以为分布式服务设备,或者可以为分布式服务设备中的图像处理模块,本发明实施例具体阐述了将压缩图像数据解压为图片文件的过程,所述方法可以包括以下步骤S901-步骤S907。
S901,解析所述压缩图像数据以获取所述图片头信息数据段和所述码流数据;
具体的,所述图片文件处理设备可以对所述压缩图像数据进行解析处理,以获取所述压缩图像数据中的所述图片头信息数据段和所述码流数据。可以理解的是,所述图片头信息数据段可以包括所述图片文件的延时信息、总帧数等图像特征信息数据段,所述延时信息记录有所述图片文件中每帧图像之间的播放间隔时间,所述总帧数为所述图片文件中的图像帧数,可以理解的是,所述图片头信息数据段中还可以包括所述图片文件的全局颜色表信息,所述全局颜色表信息包含每帧图像的每个像素点的RGB值,针对一些图片文件,其包含的所有图像均共用一个全局颜色表信息,而对于另外一些图片文件,其每帧图像都存在各自的局部颜色表信息,因此若所述图片文件中存在全局颜色表信息,则获取该全局颜色表信息,若所述图片文件中仅存在局部颜色表信息,则不对局部颜色表信息进行获取。
S902,解码所述码流数据以生成所述YUV数据,并采用颜色空间转换公式将所述YUV数据转换为RGB数据;
具体的,所述图片文件处理设备解码所述码流数据以生成所述YUV数据,并可以采用颜色空间转换公式将所述YUV数据转换为RGB数据,进一步的,所述接收端需要依据亮度分量的值域范围确定所采用的颜色空间转换公式,可以理解的是,针对YUV444模式下的YUV数据,可以选择亮度分量的值域范围为[16,235],色度分量的值域范围为[16,240]的颜色空间转换公式,也可以选择亮度分量和色度分量的值域范围均为[0,255]颜色空间转换公式,具体可以依据上述实施例中在将RGB数据转换为YUV数据时选择的颜色空间转换公式对应。需要说明的是,色度包括Cb和Cr两种色差信号中的任一种的样值矩阵和单个样值。两种色差信号需要分别进行上采样处理,两者进行上采样处理的方式均相同,其中,Cb对应YUV中的U,Cr对应YUV中的V。
若亮度分量的值域范围为[16,235],色度分量的值域范围为[16,240],则颜色空间转换公式为:
R=Clip3(0,255,(298*Y+409*(Cr–128)+128)>>8);
G=Clip3(0,255,(298*Y–100*(Cb-128)+208*(Cr-128)+128)>>8);
B=Clip3(0,255,(298*Y+516*(Cb-128)+128)>>8);
其中,“+128”用于对R值、B值、G值进行四舍五入,“>>8”表示除以2的8次方。
若亮度分量和色度分量的值域范围均为[0,255],则颜色空间转换公式为:
R=Clip3(0,255,Y+(359*(Cr–128)+128)>>8);
G=Clip3(0,255,Y–(88*(Cb-128)+183*(Cr-128)+128)>>8);
B=Clip3(0,255,Y+(454*(Cb-128)+128)>>8);
其中,“+128”用于对R值、B值、G值进行四舍五入,“>>8”表示除以2的8次方。
通过颜色空间转换公式可以对每帧图像的像素点进行光栅扫描处理,将每帧YUV数据转换为对应的RGB数据。
S903,判断所述图片头信息数据段中是否包含所述图片文件的全局颜色表信息;
具体的,所述图片文件处理设备判断所述图片头信息数据段中是否包含所述图片文件的全局颜色表信息,若是,则转入执行步骤S904;若否,则转入执行步骤S905。
由于之前对所述YUV数据进行过编码处理,因此导致由所述YUV数据转换的RGB数据存在失真的情况,所述图片文件处理设备可以采用所述全局颜色表信息对所述RGB数据中的各像素点的RGB值进行更新,可以理解的是,所述RGB数据中可以包含一个或多个像素点,当所述RGB数据中仅存在一个像素点时,可以采用所述全局颜色表信息对所述像素点的RGB值进行更新,当所述RGB数据中存在多个像素点时,可以采用所述全局颜色表信息对多个像素点中各像素点的RGB值进行更新,所述图片文件处理设备需要重新对所述全局颜色表信息进行训练,以生成符合所述RGB数据的局部颜色表信息,而对于不存在全局颜色表信息的情况,所述图片文件处理设备可以生成初始化颜色表信息,并通过对所述初始化颜色表信息进行训练,以生成符合所述RGB数据的局部颜色表信息。
S904,当所述RGB数据为图片文件中的第一帧图像时,采用RGB数据中的各像素点的RGB值对所述全局颜色表信息进行训练以生成RGB数据的局部颜色表信息,并采用RGB数据的局部颜色表信息对各像素点的RGB值进行更新;
具体的,在第一种实施方式中,针对图片头信息数据段中存在全局颜色表信息的情况,当所述RGB数据为所述图片文件中的第一帧图像,所述图片文件处理设备可以采用所述RGB数据中的各像素点的RGB值对所述全局颜色表信息进行训练以生成所述RGB数据的局部颜色表信息,并采用所述RGB数据的局部颜色表信息对所述各像素点的RGB值进行更新。
进一步的,当所述RGB数据为所述图片文件中的第一帧图像,且所述图片头信息数据段中存在全局颜色表信息时,所述图片文件处理设备可以将所述全局颜色表信息中的至少一个源RGB值按照G分量的预设排序方式(例如:升序、降序等)进行排序,以生成训练颜色表信息,请一并参见图3,如图3所示,所述全局颜色表信息中包括颜色索引和源RGB值,例如:5,(8,1,10)、6,(8,9,8)、7,(1,7,6)、8,(10,8,6)、9,(5,8,5)、10,(9,10,1),按照G分量的升序排序可以生成训练颜色表信息,例如:5,(8,1,10)、6,(1,7,6)、7,(5,8,5)、8,(10,8,6)、9,(8,9,8)、10,(9,10,1)。
所述图片文件处理设备在所述训练颜色表信息中获取G分量与所述RGB数据中当前像素点的G分量最接近的第一源RGB值,并获取所述第一源RGB值的第一颜色索引,可以理解的是,所述图片文件处理设备可以采用所述当前像素点的G分量遍历所述训练颜色表信息中的源RGB值,获取G分量最为接近的第一源RGB值,请一并参见图4,假设第一帧RGB数据中有四个像素点,当前像素点为所述RGB数据中的第一个像素点,所述当前像素点的RGB值为(9,9,9),可以在所述训练颜色表信息中查找到(8,9,8)的G分量与当前像素点的RGB值中的G分量最接近,则将(8,9,8)确定为第一源RGB值,并获取所述第一源RGB值的第一颜色索引“9”。
所述图片文件处理设备在所述训练颜色表信息中以所述第一颜色索引为中心的预设范围内,获取与所述当前像素点的RGB值误差最小的第二源RGB值,并获取所述第二源RGB值的第二颜色索引,可以理解的是,所述图片文件处理设备可以以所述第一颜色索引为中心,在所述第一颜色索引的前后预设范围内获取多个源RGB值,并分别计算所述第一源RGB值以及所述多个源RGB值与所述当前像素点的RGB值的误差,并将多个源RGB值中误差最小的源RGB值确定为第二源RGB值,依据上述举例,假设预设范围为正负1的范围,则以“9”为中心,获取(10,8,6)和(9,10,1)两个源RGB值,并分别计算(10,8,6)、(8,9,8)和(9,10,1)三者与(9,9,9)的误差值,其中颜色索引“8”的误差值为|9-10|+|9-8|+|9-6|=5,颜色索引“9”的误差值为|9-8|+|9-9|+|9-8|=2,颜色索引“10”的误差值为|9-9|+|9-10|+|9-1|=9,则确定源RGB值(8,9,8)为所述第二源RGB值,并获取第二源RGB值的第二颜色索引“9”。可以理解的是,上述获取的第一源RGB值和第一颜色索引存在与第二源RGB值和第二颜色索引相同的情况,也可以存在不相同的情况,具体由实际执行过程确定。
所述图片文件处理设备将所述第二源RGB值替换为所述当前像素点的RGB值,并采用预设权重值和所述当前像素点的RGB值,对所述训练颜色表信息中以所述第二颜色索引为中心的预设范围内的多个源RGB值进行修改,请一并参见图5,依据上述举例,所述第二源RGB值为(8,9,8),则将(8,9,8)替换为当前像素点的RGB值(9,9,9),同时可以依据预设权重值以及当前像素点的RGB值对以所述第二颜色索引为中心的预设范围内的多个源RGB值进行修改,假设预设范围为正负1,则需要对(10,8,6)和(9,10,1)两个源RGB值进行修改,所述预设权重值可以为动态的权重值,对于距离所述第二颜色索引越近源RGB值,其受到当前像素点的RGB值的影响越大,假设当前权重值的分配为2:8,则采用(9,9,9)对(10,8,6)进行修改,例如,R分量=9*0.8+10*0.2=9.2,G分量=9*0.8+8*0.2=8.8,B分量=9*0.8+6*0.2=8.4,对以上结果采用四舍五入的方式,确定颜色索引“8”的源RGB值由(10,8,6)修改为(9,9,8),同理,颜色索引“10”的源RGB值由(9,10,1)修改为(9,9,7)。
当所述当前像素点不为所述RGB数据中的最后一个像素点时,例如当前像素点为图4或图5中所示的RGB数据中的第一个像素点时,所述图片文件处理设备获取修改后得到的所述训练颜色表信息,将所述当前像素点的下一个像素点作为当前像素点,并转入执行在所述训练颜色表信息中获取G分量与所述RGB数据中当前像素点的G分量最接近的第一源RGB值,例如:将所述RGB数据中的第二个像素点作为当前像素点,对修改后得到的所述训练颜色表信息再一次进行训练。具体的训练过程可以参见上述训练过程的描述,在此不进行赘述。
当所述当前像素点为所述RGB数据中的最后一个像素点时,例如当前像素点为图4或图5中所示的RGB数据中的第四个像素点时,所述图片文件处理设备获取修改后得到的所述训练颜色表信息,并将所述训练颜色表信息确定为所述RGB数据的局部颜色表信息。
所述图片文件处理设备可以采用所述RGB数据的局部颜色表信息对所述各像素点的RGB值进行更新,进一步的,所述图片文件处理设备可以在所述RGB数据的局部颜色表信息中依次获取与所述各像素点相同或误差最小的源RGB值分别替换所述各像素点的RGB值,优选的,所述图片文件处理设备可以将与所述各像素点相同或误差最小的源RGB值对应的颜色索引分别替换所述各像素点的RGB值,请一并参见图6,依据上述举例,所述RGB数据的第一个像素点的RGB值为(9,9,9),在所述局部颜色表信息中与(9,9,9)误差最小的为(9,9,8),则将(9,9,8)对应的颜色索引“8”替换所述第一个像素点的RGB值,同理,第二个像素点的颜色索引为“10”,第三个像素点的颜色索引为“9”,第四个像素点的颜色索引为“6”。
S905,当所述RGB数据为图片文件中的第一帧图像时,采用RGB数据中的各像素点的RGB值对初始化颜色表信息进行训练以生成RGB数据的局部颜色表信息,并采用RGB数据的局部颜色表信息对各像素点的RGB值进行更新;
具体的,在第二种实施方式中,针对图片头信息数据段中不存在全局颜色表信息的情况,当所述RGB数据为所述图片文件中的第一帧图像,所述图片文件处理设备可以采用所述RGB数据中的各像素点的RGB值对初始化颜色表信息进行训练以生成所述RGB数据的局部颜色表信息,并采用所述RGB数据的局部颜色表信息对所述各像素点的RGB值进行更新。
进一步的,当所述RGB数据为所述图片文件中的第一帧图像,且所述图片头信息数据段中不存在全局颜色表信息时,所述图片文件处理设备可以生成一个初始化颜色表信息,例如:(0,0,0)、(1,1,1)、(2,2,2)、……、(255,255,255),所述图片文件处理设备在初始化颜色表信息中获取G分量与所述RGB数据中当前像素点的G分量最接近的第三源RGB值,并获取所述第三源RGB值的第三颜色索引,所述图片文件处理设备在所述初始化颜色表信息中以所述第三颜色索引为中心的预设范围内,获取与所述当前像素点的RGB值误差最小的第四源RGB值,并获取所述第四源RGB值的第四颜色索引,所述图片文件处理设备将所述第四源RGB值替换为所述当前像素点的RGB值,并采用预设权重值和所述当前像素点的RGB值,对所述初始化颜色表信息中以所述第四颜色索引为中心的预设范围内的多个源RGB值进行修改,当所述当前像素点不为所述RGB数据中的最后一个像素点时,所述图片文件处理设备获取修改后得到的所述初始化颜色表信息,将所述当前像素点的下一个像素点作为当前像素点,并转入执行在所述初始化颜色表信息中获取G分量与所述RGB数据中当前像素点的G分量最接近的第三源RGB值,当所述当前像素点为所述RGB数据中的最后一个像素点时,所述图片文件处理设备获取修改后得到的所述训练颜色表信息,并将所述初始化颜色表信息确定为所述RGB数据的局部颜色表信息,所述图片文件处理设备可以采用所述RGB数据的局部颜色表信息对所述各像素点的RGB值进行更新。需要说明的是,第二种实施方式中对初始化颜色表信息进行训练以及采用RGB数据的局部颜色表信息对各像素点的RGB值进行更新的过程均可以参见上述第一种实施方式的执行过程,在此不进行赘述。
S906,当所述RGB数据为图片文件中的第N帧图像时,采用RGB数据中的各像素点的RGB值对第N-1帧RGB数据的局部颜色表信息进行训练以生成RGB数据的局部颜色表信息,并采用RGB数据的局部颜色表信息对各像素点的RGB值进行更新;
具体的,在第三种实施方式中,针对所述RGB数据不为所述图片文件中的第一帧图像,即所述RGB数据为所述图片文件中的第N帧图像时,其中,N为大于1且小于或等于所述总帧数的正整数,所述图片文件处理设备可以采用所述RGB数据中的各像素点的RGB值对第N-1帧RGB数据的局部颜色表信息进行训练以生成所述RGB数据的局部颜色表信息,并采用所述RGB数据的局部颜色表信息对所述各像素点的RGB值进行更新。
进一步的,当所述RGB数据为所述图片文件中的第N帧图像时,所述图片文件处理设备可以将第N-1帧RGB数据的局部颜色表信息中的至少一个源RGB值按照G分量的预设排序方式进行排序,以生成训练颜色表信息,所述图片文件处理设备在所述训练颜色表信息中获取G分量与所述RGB数据中当前像素点的G分量最接近的第五源RGB值,并获取所述第五源RGB值的第五颜色索引,所述图片文件处理设备在所述训练颜色表信息中以所述第五颜色索引为中心的预设范围内,获取与所述当前像素点的RGB值误差最小的第六源RGB值,并获取所述第六源RGB值的第六颜色索引,所述图片文件处理设备将所述第六源RGB值替换为所述当前像素点的RGB值,并采用预设权重值和所述当前像素点的RGB值,对所述训练颜色表信息中以所述第六颜色索引为中心的预设范围内的多个源RGB值进行修改,当所述当前像素点不为所述RGB数据中的最后一个像素点时,所述图片文件处理设备获取修改后得到的所述训练颜色表信息,将所述当前像素点的下一个像素点作为当前像素点,并转入执行在所述训练颜色表信息中获取G分量与所述RGB数据中当前像素点的G分量最接近的第五源RGB值,当所述当前像素点为所述RGB数据中的最后一个像素点时,所述图片文件处理设备获取修改后得到的所述训练颜色表信息,并将所述训练颜色表信息确定为所述RGB数据的局部颜色表信息,所述图片文件处理设备可以采用所述RGB数据的局部颜色表信息对所述各像素点的RGB值进行更新。需要说明的是,第三种实施方式中对训练颜色表信息进行训练以及采用RGB数据的局部颜色表信息对各像素点的RGB值进行更新的过程均可以参见上述第一种实施方式的执行过程,在此不进行赘述。
需要说明的是,上述采用G分量作为对颜色表信息进行训练的引导仅为举例,本发明实施例同样可以采用R分量或者B分量作为对颜色表信息进行训练的引导,执行过程均可以参见上述内容中的描述,在此不进行赘述。上述第一源RGB值、第二源RGB值、第三源RGB值、第四源RGB值、第五源RGB值、第六源RGB值以及第一颜色索引、第二颜色索引、第三颜色索引、第四颜色索引、第五颜色索引、第六颜色索引均可以表示相同的源RGB值和颜色索引的含义,采用此方式进行命名仅为了区分不同的执行场景,例如:当所述RGB数据为所述图片文件中的第一帧图像,且所述图片头信息数据段中存在全局颜色表信息时;当所述RGB数据为所述图片文件中的第一帧图像,且所述图片头信息数据段中不存在全局颜色表信息时;当所述RGB数据为所述图片文件中的第N帧图像时,以上三种执行场景。
S907,采用所述延时时间和所述总帧数将更新后的所述RGB数据进行图像编码以生成所述图片文件;
具体的,所述图片文件处理设备采用所述延时时间和所述总帧数将更新后的所述RGB数据进行图像编码以生成所述图片文件,优选的,所述图片文件处理设备可以基于所述延时时间和所述总帧数,并采用LZW对所述RGB数据中各像素点的颜色索引进行图像编码,生成所述图片文件,所述图片文件处理设备可以对所述图片文件进行存储或者展示。可以理解的是,所述图像编码的方式具体由图片文件的图像格式决定,例如:若需要生成的图片文件为GIF图像,则所述图像编码可以为GIF编码等。
在本发明实施例中,根据原始的图片文件生成图片文件的图片头信息数据段,将图片文件中每帧图像转换为YUV数据,再基于YUV数据进行编码后得到的码流数据以及图片头信息数据段生成压缩图像数据,并将压缩图像数据进行传输,在接收到压缩图像数据时,可以根据码流数据生成YUV数据,再基于图片头信息数据段对YUV数据进行处理生成图片文件。通过将文件数据量较大的图片文件中每帧图像转换为数据量较小的YUV数据,再对YUV数据编码得到码流数据,极大的缩小了图片文件在传输过程中的文件数据量,降低了带宽成本;通过灵活控制配置参数的使用以及配置编码器复杂度,可以满足不同的业务场景以及不同的机器性能,优化图片文件的编码效率;通过对全局颜色表信息或初始化颜色表信息进行训练,生成RGB数据的局部颜色表信息,有效的减少了图像的失真;通过采用G分量获取最接近的源RGB值,并在颜色表信息中进行小范围的颜色索引搜索,无需遍历整个颜色表信息,降低了对局部颜色表信息训练的复杂度,进一步提升了图片文件的编码效率。
请参见图17,为本发明实施例提供了又一种图片文件处理方法的流程示意图。如图17所示,本发明实施例提供的图片文件处理方法为对图15所示实施例的进一步描述,所述方法包括以下步骤S1001-步骤S1009;
S1001,解码原始图片文件;
S1002,判断所述图片文件的颜色表信息是否为所述图片文件的全局颜色表信息;
S1003,生成包含延时信息、总帧数、全局颜色表信息的图片头信息数据段以及图片文件中每帧图像对应的RGB数据;
S1004,生成包含延时信息、总帧数的图片头信息数据段以及图片文件中每帧图像对应的RGB数据;
S1005,判断所采用的配置参数是否为无损模式参数;
具体的,所述图片文件处理设备可以获取用户自定义信息数据段,所述用户自定义信息数据段可以包括配置参数及编码器复杂度等,所述配置参数可以为对所述YUV数据进行编码的参数,所述配置参数可以包括标清模式参数、高清模式参数和无损模式参数中的任一种,要求减少带宽,则可以选择标清模式参数(例如:YUV420模式参数);要求图像质量,则可以选择高清模式参数(例如:YUV444模式参数)等,可以理解的是,若获取的配置参数为无损模式参数,则可以直接对所述RGB数据进行编码生成码流数据,若获取的配置参数为标清模式参数或者高清模式参数,则需要将RGB数据转换为YUV数据,再对所述YUV数据进行编码以生成码流数据。进一步的,所述图片文件处理设备可以判断用户自定义信息数据段中所采用的配置参数是否为无损模式参数,若是,则转入执行步骤S1006;若否,则转入执行步骤S1007-S1008。
所述编码器复杂度可以为根据所述图片文件处理设备的硬件性能所决定的编码的精细度参数,所述编码器复杂度可以包括第一复杂度、第二复杂度和第三复杂度中的任一种,所述第一复杂度高于所述第二复杂度,所述第二复杂度高于所述第三复杂度,例如:可以对所述图片文件处理设备的硬件性能进行检测以生成性能数值,例如:测试所述接收端的中央处理器的计算速率等,当所述性能数值位于第一预设数值范围内时,可以确定图片文件处理设备硬件性能很高,则可以推荐使用第一复杂度的编码方式;当所述性能数值位于第二预设数值范围内时,可以确定发送端硬件性能中等,则可以推荐使用第二复杂度的编码方式;当所述性能数值位于第三预设数值范围内时,可以确定图片文件处理设备硬件性能较差,或者当前要求实时转码等,则可以推荐使用第三复杂度的编码方式等。
需要说明的是,上述两种编码方式可以为并行的编码方式,即所述图片文件处理设备可以同时采用配置参数和配置的编码器复杂度对所述YUV数据进行编码以生成码流数据。上述的性能数值、第一预设数值范围、第二通预设数值范围以及第三预设数值范围具体可以根据开发人员的人为经验进行设定。
S1006,对所述RGB数据进行编码生成码流数据;
具体的,若所述图片文件处理设备判断用户自定义信息数据段中所采用的配置参数为无损模式参数,则所述图片文件处理设备可以对所述RGB数据进行编码生成码流数据,所述编码可以包括预测编码、变换编码、量化编码和熵编码,例如:所述图片文件处理设备可以采用IPPP模式对所述RGB数据进行压缩,第一帧RGB数据为I帧,I帧即为帧内预测帧,其余帧RGB数据为P帧,P帧即为帧间预测帧,可以有效的压缩图片文件的文件数据量,还可以采用固定QP的方式来稳定不同帧之间的质量等。熵编码则可以包括哈夫曼编码、算数编码等。
S1007,采用颜色域转换公式将所述RGB数据转换为YUV数据;
具体的,若所述图片文件处理设备判断用户自定义信息数据段中所采用的配置参数为无损模式参数,则所述图片文件处理设备可以采用颜色空间转换公式将所述RGB数据转换为YUV数据,在将RGB数据转换为YUV数据的过程中,可以选择亮度分量的值域范围为[16,235],色度分量的值域范围为[16,240]的颜色空间转换公式,由于至于范围的缩减,可以极大的减小转换后YUV数据的数据量,但导致的失真程度较大;还可以选择亮度分量和色度分量的值域范围均为[0,255]颜色空间转换公式,可以减小转换后YUV数据的失真,但转换后YUV数据的数据量较大,亮度分量和色度分量的值域范围均为[0,255]的颜色空间转换公式为:
Y=0.299R+0.587G+0.114B;
U=-0.1687R-0.3313G+0.5B+128;
V=0.5R-0.4187G-0.0813B+128;
其中,YUV是一种视频数据格式,Y为亮度分量,UV为色度分量,通过颜色空间转换公式可以对每帧图像的像素点进行光栅扫描处理,将每帧RGB数据转换为对应的YUV数据。
S1008,对所述YUV数据进行编码以生成码流数据;
具体的,所述图片文件处理设备可以进一步对所述YUV数据进行编码处理,生成码流数据,所述编码可以包括预测编码、变换编码、量化编码和熵编码,例如:所述图片文件处理设备可以采用IPPP模式对所述YUV数据进行压缩,第一帧YUV数据为I帧,I帧即为帧内预测帧,其余帧YUV数据为P帧,P帧即为帧间预测帧,可以有效的压缩图片文件的文件数据量,还可以采用固定QP的方式来稳定不同帧之间的质量等。熵编码则可以包括哈夫曼编码、算数编码等。
S1009,将配置参数添加至图片头信息数据段中,存储压缩图像数据;
具体的,所述图片文件处理设备可以将所述配置参数添加至图片头信息数据段中,进一步的,所述图片文件处理设备可以将所述用户自定义信息数据段添加至所述图片头信息数据段中,所述图片文件处理设备可以生成压缩图像数据,所述图片文件处理设备可以对所述压缩图像数据进行存储,所述压缩图像数据包含所述图片头信息数据段和所述码流数据。
其中,本发明实施例的步骤S1001-步骤S1004可以分别参见图15所示实施例的步骤S801-步骤S804的具体描述,在此不进行赘述。
在本发明实施例中,根据原始的图片文件生成图片文件的图片头信息数据段,将图片文件中每帧图像转换为YUV数据,再基于YUV数据进行编码后得到的码流数据以及图片头信息数据段生成压缩图像数据,并将压缩图像数据进行存储。通过将文件数据量较大的图片文件中每帧图像转换为数据量较小的YUV数据,再对YUV数据编码得到码流数据,极大的缩小了图片文件在存储过程中的文件数据量,降低了存储成本;通过加入用户自定义的配置参数,可以依据不同的配置参数实现不同清晰程度的编码过程,提升了用户体验。
请参见图18,为本发明实施例提供了又一种图片文件处理方法的流程示意图。如图18所示,本发明实施例提供的图片文件处理方法为对图16所示实施例的进一步描述,所述方法包括以下步骤S1101-步骤S1112;
S1101,解析所述压缩图像数据以获取所述图片头信息数据段和所述码流数据;
具体的,所述图片文件处理设备可以对所述压缩图像数据进行解析处理,以获取所述压缩图像数据中的所述图片头信息数据段和所述码流数据。可以理解的是,所述图片头信息数据段可以包括所述图片文件的延时信息、总帧数等图像特征信息数据段,所述延时信息记录有所述图片文件中每帧图像之间的播放间隔时间,所述总帧数为所述图片文件中的图像帧数,可以理解的是,所述图像特征信息数据段中还可以包括所述图片文件的全局颜色表信息,所述全局颜色表信息包含每帧图像的每个像素点的RGB值,针对一些图片文件,其包含的所有图像均共用一个全局颜色表信息,而对于另外一些图片文件,其每帧图像都存在各自的局部颜色表信息,因此若所述图片文件中存在全局颜色表信息,则获取该全局颜色表信息,若所述图片文件中仅存在局部颜色表信息,则不对局部颜色表信息进行获取。
优选的,所述图片头信息数据段还可以包括用户自定义信息数据段,所述用户自定义信息数据段可以包括配置参数及编码器复杂度等,所述配置参数可以为先前对所述YUV数据进行编码的参数,所述配置参数可以包括标清模式参数、高清模式参数和无损模式参数中的任一种。所述编码器复杂度可以为根据发送端的硬件性能所决定的编码的精细度参数,所述编码器复杂度可以包括第一复杂度、第二复杂度和第三复杂度中的任一种,所述第一复杂度高于所述第二复杂度,所述第二复杂度高于所述第三复杂度。
需要说明的是,上述的性能数值、第一预设数值范围、第二通预设数值范围以及第三预设数值范围具体可以根据开发人员的人为经验进行设定。
S1102,判断图片头信息数据段中的配置参数是否为无损模式参数;
具体的,所述图片文件处理设备可以判断图片头信息数据段中的配置参数是否为无损模式参数,若是,则转入执行步骤S1103;若否,则转入执行步骤S1104-S1107。
S1103,解码所述码流数据以生成RGB数据;
具体的,若所述图片头信息数据段中的配置参数为无损模式参数,由于在无损模式下,是直接对RGB数据进行编码生成的码流数据,因此所述图片文件处理设备可以解码所述码流数据直接生成RGB数据。
S1104,判断配置参数是否为YUV444模式参数;
具体的,若所述图片头信息数据段中的配置参数不为无损模式参数,即所述图片头信息数据段中的配置参数为标清模式参数或者高清模式参数,可以理解的是,所述标清模式参数优选为YUV420模式参数,所述高清模式参数优选为YUV444模式参数。所述图片文件处理设备可以进一步判断所述配置参数是否为YUV444模式参数,若是,则转入执行步骤S1105;若否,则转入执行步骤S1106-S1107。
S1105,解码所述码流数据以生成所述YUV数据,并采用颜色空间转换公式将所述YUV数据转换为RGB数据;
具体的,若所述图片文件处理设备判断所述配置参数为YUV444模式参数,即在对YUV数据进行编码时,完整保留了YUV数据中各像素点的亮度分量及色度分量,因此所述图片文件处理设备解码所述码流数据直接生成所述YUV数据,需要说明的是,色度包括Cb和Cr两种色差信号中的任一种的样值矩阵和单个样值。两种色差信号需要分别进行上采样处理,两者进行上采样处理的方式均相同,其中,Cb对应YUV中的U,Cr对应YUV中的V,YUV数据由Y图像、Cb图像和Cr图像组成。所述图片文件处理设备采用颜色空间转换公式将所述YUV数据转换为RGB数据,可以理解的是,针对YUV444模式下的YUV数据,可以选择亮度分量的值域范围为[16,235],色度分量的值域范围为[16,240]的颜色空间转换公式,也可以选择亮度分量和色度分量的值域范围均为[0,255]颜色空间转换公式,具体可以依据上述实施例中在将RGB数据转换为YUV数据时选择的颜色空间转换公式对应。
若亮度分量的值域范围为[16,235],色度分量的值域范围为[16,240],则颜色空间转换公式为:
R=Clip3(0,255,(298*Y+409*(Cr为式对应。亮度分量和色度分量的值域范围均为;
G=Clip3(0,255,(298*Y0量和色度分量的值域为式对应。亮度分量和色度分量的值域范围均为别进行上采样处理,两者进行上采样处理的;
B=Clip3(0,255,(298*Y+516*(Cb-128)+128)>>8);
其中,“+128”用于对R值、B值、G值进行四舍五入,“>>8”表示除以2的8次方。
若亮度分量和色度分量的值域范围均为[0,255],则颜色空间转换公式为:
R=Clip3(0,255,Y+(359*(Cr范围均为28)+128)>>8;
G=Clip3(0,255,Y 5p3(0(Cr范围均为28)+128)>>8)上采样处理,两者进行上采样处理8);
B=Clip3(0,255,Y+(454*(Cb-128)+128)>>8);
其中,“+128”用于对R值、B值、G值进行四舍五入,“>>8”表示除以2的8次方。
通过颜色空间转换公式可以对每帧图像的像素点进行光栅扫描处理,将每帧YUV数据转换为对应的RGB数据。
S1106,执行色度分量上采样处理;
具体的,若所述图片文件处理设备判断所述配置参数不为YUV444模式参数,即在对YUV数据进行编码时,仅保留了YUV数据中各像素点的亮度分量,但对YUV数据中各像素点的色度分量进行了压缩,例如:在采用YUV420模式参数对所述YUV数据进行编码的过程中,可以将YUV数据中上下左右相邻的四个像素点的色度分量压缩为一个色度分量。因此所述图片文件处理设备需要解码所述码流数据以生成所述YUV数据,并对所述YUV数据执行色度分量上采样处理,即将一个色度分量还原为四个像素点的色度分量的处理。需要说明的是,色度包括Cb和Cr两种色差信号中的任一种的样值矩阵和单个样值。两种色差信号需要分别进行上采样处理,两者进行上采样处理的方式均相同,其中,Cb对应YUV中的U,Cr对应YUV中的V,YUV数据由Y图像、Cb图像和Cr图像组成。下面将结合YUV420模式中的Cb图像进行说明。
请一并参见图19和图20,如图19所示,为压缩后的Cb图像,即源Cb图像,包含(H*K)个像素点,由于配置参数为YUV420模式参数,因此需要采用上采样算法将包含(H*K)个像素点的源Cb图像还原为如图20所示的包含(2H*2K)个像素点的目标Cb图像,其中src(x,y)表示源Cb图像中的像素点,dst(x,y)表示目标Cb图像中的像素点,所述上采样算法可以包括:
(1)针对dst(x,y)属于目标Cb图像中非边界像素点,非边界像素点每个上采样的Cb值由源Cb图像对应位置相邻四个像素点的Cb值共同决定。具体计算规则如下:
dst(2x,2y)=Clip3(0,255,(src(x-1,y-1)+3*src(x,y-1)+3*src(x-1,y)+9*src(x,y)+8)>>4);
dst(2x-1,2y)=Clip3(0,255,(3*src(x-1,y-1)+src(x,y-1)+9*src(x-1,y)+3*src(x,y)+8)>>4);
dst(2x,2y-1)=Clip3(0,255,(3*src(x-1,y-1)+9*src(x,y-1)+src(x-1,y)+3*src(x,y)+8)>>4);
dst(2x-1,2y-1)=Clip3(0,255,(9*src(x-1,y-1)+3*src(x,y-1)+3*src(x-1,y)+src(x,y)+8)>>4);
其中,0<x<W,0<y<H,“+8”用于对Cb值进行四舍五入,“>>4”用于对公式中的加权值(1+3+3+9)进行清除,即表示除以2的4次方。
(2)针对dst(x,y)属于目标Cb图像中的角点,目标Cb图像中的角点的Cb值由源Cb图像中的角点的Cb值决定。具体计算规则如下:
dst(0,0)=src(0,0);
dst(0,2H-1)=src(0,H-1);
dst(2W-1,0)=src(W-1,0);
dst(2W-1,2H-1)=src(W-1,H-1)。
(3)针对dst(x,y)属于目标Cb图像的第一行中和最后一行中除角点外的像素点,目标Cb图像的第一行中和最后一行中除角点外的像素点的Cb值,由源Cb图像中的第一行中和最后一行中左右相邻的两个像素点的Cb值决定。具体计算规则如下:
dst(2x,0)=Clip3(0,255,(src(x-1,0)+3*src(x,0)+2)>>2);
dst(2x-1,0)=Clip3(0,255,(3*src(x-1,0)+src(x,0)+2)>>2);
dst(2x,2H-1)=Clip3(0,255,(src(x-1,2H-1)+3*src(x,2H-1)+2)>>2);
dst(2x-1,2H-1)=Clip3(0,255,(3*src(x-1,2H-1)+src(x,2H-1)>>2)>>2};
其中,0<x<W,“+2”用于对Cb值进行四舍五入,“>>2”用于对公式中的加权值(1+3)进行清除,即表示除以2的2次方。
(4)针对dst(x,y)属于目标Cb图像的第一列中和最后一列中除角点外的像素点,目标Cb图像的第一列中和最后一列中除角点外的像素点的Cb值,由源Cb图像中的第一列中和最后一列中上下相邻的两个像素点的Cb值决定。具体计算规则如下:
dst(0,2y-1)=Clip3(0,255,(src(0,y-1)+3*src(0,y)+2)>>2);
dst(0,2y)=Clip3(0,255,(3*src(0,y)+src(0,y-1)+2)>>2);
dst(2W-1,2y-1)=Clip3(0,255,(src(2W-1,y-1)+3*src(2W-1,y)+2)>>2);
dst(2W-1,2y)=Clip3(0,255,(3*src(2W-1,y)+src(2W-1,y-1)+2)>>2);
其中,0<y<H,“+2”用于对Cb值进行四舍五入,“>>2”用于对公式中的加权值(1+3)进行清除,即表示除以2的2次方。
通过上述计算规则可以得到目标Cb图像中所有像素点的Cb值,可以理解的是,上述公式中的加权值可以依据经验值进行确定。同理,可以采用上述计算规则得到目标Cr图像中所有像素点的Cr值。以此完成对色度分量上采样处理的处理过程。
S1107,采用颜色空间转换公式将所述YUV数据转换为RGB数据;
具体的,所述图片文件处理设备可以采用颜色空间转换公式将所述YUV数据转换为RGB数据,进一步的,所述图片文件处理设备需要依据亮度分量的值域范围确定所采用的颜色空间转换公式,可以理解的是,针对YUV444模式下的YUV数据,可以选择亮度分量的值域范围为[16,235],色度分量的值域范围为[16,240]的颜色空间转换公式,也可以选择亮度分量和色度分量的值域范围均为[0,255]颜色空间转换公式,具体可以依据上述实施例中在将RGB数据转换为YUV数据时选择的颜色空间转换公式对应。
若亮度分量的值域范围为[16,235],色度分量的值域范围为[16,240],则颜色空间转换公式为:
R=Clip3(0,255,(298*Y+409*(Cr–128)+128)>>8);
G=Clip3(0,255,(298*Y–100*(Cb-128)+208*(Cr-128)+128)>>8);
B=Clip3(0,255,(298*Y+516*(Cb-128)+128)>>8);
其中,“+128”用于对R值、B值、G值进行四舍五入,“>>8”表示除以2的8次方。
若亮度分量和色度分量的值域范围均为[0,255],则颜色空间转换公式为:
R=Clip3(0,255,Y+(359*(Cr–128)+128)>>8);
G=Clip3(0,255,Y–(88*(Cb-128)+183*(Cr-128)+128)>>8);
B=Clip3(0,255,Y+(454*(Cb-128)+128)>>8);
其中,“+128”用于对R值、B值、G值进行四舍五入,“>>8”表示除以2的8次方。
通过颜色空间转换公式可以对每帧图像的像素点进行光栅扫描处理,将每帧YUV数据转换为对应的RGB数据。
S1108,判断所述图片头信息数据段中是否包含所述图片文件的全局颜色表信息;
S1109,当所述RGB数据为图片文件中的第一帧图像时,采用RGB数据中的各像素点的RGB值对所述全局颜色表信息进行训练以生成RGB数据的局部颜色表信息,并采用RGB数据的局部颜色表信息对各像素点的RGB值进行更新;
S1110,当所述RGB数据为图片文件中的第一帧图像时,采用RGB数据中的各像素点的RGB值对初始化颜色表信息进行训练以生成RGB数据的局部颜色表信息,并采用RGB数据的局部颜色表信息对各像素点的RGB值进行更新;
S1111,当所述RGB数据为图片文件中的第N帧图像时,采用RGB数据中的各像素点的RGB值对第N-1帧RGB数据的局部颜色表信息进行训练以生成RGB数据的局部颜色表信息,并采用RGB数据的局部颜色表信息对各像素点的RGB值进行更新;
S1112,采用所述延时时间和所述总帧数将更新后的所述RGB数据进行图像编码以生成所述图片文件。
其中,本发明实施例的步骤S1108-步骤S1112可以分别参见图16所示实施例的步骤S903-步骤S907的具体描述,在此不进行赘述。
在本发明实施例中,根据原始的图片文件生成图片文件的图片头信息数据段,将图片文件中每帧图像转换为YUV数据,再基于YUV数据进行编码后得到的码流数据以及图片头信息数据段生成压缩图像数据,并将压缩图像数据进行传输,在接收到压缩图像数据时,可以根据码流数据生成YUV数据,再基于图片头信息数据段对YUV数据进行处理生成图片文件。通过将文件数据量较大的图片文件中每帧图像转换为数据量较小的YUV数据,再对YUV数据编码得到码流数据,极大的缩小了图片文件在传输过程中的文件数据量,降低了带宽成本;通过灵活控制配置参数的使用以及配置编码器复杂度,可以满足不同的业务场景以及不同的机器性能,优化图片文件的编码效率;通过对全局颜色表信息或初始化颜色表信息进行训练,生成RGB数据的局部颜色表信息,有效的减少了图像的失真;通过采用G分量获取最接近的源RGB值,并在颜色表信息中进行小范围的颜色索引搜索,无需遍历整个颜色表信息,降低了对局部颜色表信息训练的复杂度,进一步提升了图片文件的编码效率。
请参见图21,为本发明实施例提供了又一种图片文件处理方法的流程示意图。如图21所示,本发明实施例具体阐述了对颜色表信息进行训练以及像素点的RGB值更新的过程,所述方法可以包括以下步骤S1201-步骤S1203。
S1201,获取对原始图片文件解码生成的RGB数据,获取RGB数据中的各像素点的RGB值;
具体的,图片文件处理设备可以获取对原始图片文件解码生成的RGB数据,可以理解的是,对所述图片文件进行解码可以生成所述图片文件的图片头信息数据段以及所述图片文件中每帧图像对应的RGB数据,所述图片头信息数据段可以包括所述图片文件的延时信息、总帧数等,所述延时信息记录有所述图片文件中每帧图像之间的播放间隔时间,所述总帧数为所述图片文件中的图像帧数,可以理解的是,所述图片头信息数据段中还可以包括所述图片文件的全局颜色表信息,所述全局颜色表信息包含每帧图像的每个像素点的RGB值,针对一些图片文件,其包含的所有图像均共用一个全局颜色表信息,而对于另外一些图片文件,其每帧图像都存在各自的局部颜色表信息,因此若所述图片文件中存在全局颜色表信息,则获取该全局颜色表信息,若所述图片文件中仅存在局部颜色表信息,则不对局部颜色表信息进行获取。所述RGB数据可以转换为YUV数据,并将YUV数据进行编码生成码流数据,进一步生成包含码流数据和图片头信息数据段的压缩图像数据,所述压缩图像数据可以用于存储,或者传输至图片文件处理设备进行图片文件的还原,优选的,所述图片文件处理设备获取所述压缩图像数据,可以解析所述压缩图像数据以获取所述图片头信息数据段和所述码流数据,并解码所述码流数据生成YUV数据,进一步将YUV数据转换为RGB数据,所述图片文件处理设备获取所述RGB数据,并获取所述RGB数据中的各像素点的RGB值。
S1202,采用各像素点的RGB值对RGB数据的初始颜色表信息进行训练以生成RGB数据的局部颜色表信息;
具体的,所述图片文件处理设备可以判断所述图片头信息数据段中是否包含所述图片文件的全局颜色表信息,若是,则将所述全局颜色表信息确定为所述图片文件中的第一帧RGB数据的初始颜色表信息,若否,则生成初始化颜色表信息,确定为所述图片文件中的第一帧RGB数据的初始颜色表信息。采用第一帧RGB数据中各像素点的RGB值对初始颜色表信息进行训练,生成第一帧RGB数据的局部颜色表信息,而对于第N帧RGB数据,可以将第N-1帧RGB数据的局部颜色表信息作为所述第N帧RGB数据的初始颜色表信息,并采用第N帧RGB数据中各像素点的RGB值对第N帧RGB数据的初始颜色表信息进行训练,生成第N帧RGB数据的局部颜色表信息,其中N为大于1的正整数。
S1203,采用RGB数据的局部颜色表信息对各像素点的RGB值进行更新;
具体的,所述图片文件处理设备可以采用所述RGB数据的局部颜色表信息对所述各像素点的RGB值进行更新,所述图片文件处理设备采用所述延时时间和所述总帧数将更新后的所述RGB数据进行图像编码以生成所述图片文件。
在本发明实施例中,通过对全局颜色表信息或初始化颜色表信息进行训练,生成RGB数据的局部颜色表信息,有效的减少了图像的失真。
请参见图22,为本发明实施例提供了又一种图片文件处理方法的流程示意图。如图22所示,本发明实施例具体阐述了对颜色表信息进行训练以及像素点的RGB值更新的过程,所述方法可以包括以下步骤S1301-步骤S1306。
S1301,获取对原始图片文件解码生成的RGB数据,获取RGB数据中的各像素点的RGB值;
具体的,图片文件处理设备可以获取对原始图片文件解码生成的RGB数据,可以理解的是,对所述图片文件进行解码可以生成所述图片文件的图片头信息数据段以及所述图片文件中每帧图像对应的RGB数据,所述图片头信息数据段可以包括所述图片文件的延时信息、总帧数等,所述延时信息记录有所述图片文件中每帧图像之间的播放间隔时间,所述总帧数为所述图片文件中的图像帧数,可以理解的是,所述图片头信息数据段中还可以包括所述图片文件的全局颜色表信息,所述全局颜色表信息包含每帧图像的每个像素点的RGB值,针对一些图片文件,其包含的所有图像均共用一个全局颜色表信息,而对于另外一些图片文件,其每帧图像都存在各自的局部颜色表信息,因此若所述图片文件中存在全局颜色表信息,则获取该全局颜色表信息,若所述图片文件中仅存在局部颜色表信息,则不对局部颜色表信息进行获取。所述RGB数据可以转换为YUV数据,并将YUV数据进行编码生成码流数据,进一步生成包含码流数据和图片头信息数据段的压缩图像数据,所述压缩图像数据可以用于存储,或者传输至图片文件处理设备进行图片文件的还原,优选的,所述图片文件处理设备获取所述压缩图像数据,可以解析所述压缩图像数据以获取所述图片头信息数据段和所述码流数据,并解码所述码流数据生成YUV数据,进一步将YUV数据转换为RGB数据,所述图片文件处理设备获取所述RGB数据,并获取所述RGB数据中的各像素点的RGB值。
S1302,判断解码图片文件生成的图片头信息数据段中是否包含图片文件的全局颜色表信息;
具体的,所述图片文件处理设备判断所述图片头信息数据段中是否包含所述图片文件的全局颜色表信息,若是,则转入执行步骤S1103;若否,则转入执行步骤1104。
由于之前对所述YUV数据进行过编码处理,因此导致由所述YUV数据转换的RGB数据存在失真的情况,所述图片文件处理设备可以采用所述全局颜色表信息对所述RGB数据中的各像素点的RGB值进行更新,可以理解的是,所述RGB数据中可以包含一个或多个像素点,当所述RGB数据中仅存在一个像素点时,可以采用所述全局颜色表信息对所述像素点的RGB值进行更新,当所述RGB数据中存在多个像素点时,可以采用所述全局颜色表信息对多个像素点中各像素点的RGB值进行更新,所述图片文件处理设备需要重新对所述全局颜色表信息进行训练,以生成符合所述RGB数据的局部颜色表信息,而对于不存在全局颜色表信息的情况,所述图片文件处理设备可以生成初始化颜色表信息,并通过对所述初始化颜色表信息进行训练,以生成符合所述RGB数据的局部颜色表信息。
S1303,当所述RGB数据为图片文件中的第一帧图像时,采用RGB数据中的各像素点的RGB值对所述全局颜色表信息进行训练以生成RGB数据的局部颜色表信息;
具体的,在第一种实施方式中,针对图片头信息数据段中存在全局颜色表信息的情况,当所述RGB数据为所述图片文件中的第一帧图像,所述图片文件处理设备可以采用所述RGB数据中的各像素点的RGB值对所述全局颜色表信息进行训练以生成所述RGB数据的局部颜色表信息。
进一步的,当所述RGB数据为所述图片文件中的第一帧图像,且所述图片头信息数据段中存在全局颜色表信息时,所述图片文件处理设备可以将所述全局颜色表信息中的至少一个源RGB值按照G分量的预设排序方式(例如:升序、降序等)进行排序,以生成训练颜色表信息,请一并参见图3,如图3所示,所述全局颜色表信息中包括颜色索引和源RGB值,例如:5,(8,1,10)、6,(8,9,8)、7,(1,7,6)、8,(10,8,6)、9,(5,8,5)、10,(9,10,1),按照G分量的升序排序可以生成训练颜色表信息,例如:5,(8,1,10)、6,(1,7,6)、7,(5,8,5)、8,(10,8,6)、9,(8,9,8)、10,(9,10,1)。
所述图片文件处理设备在所述训练颜色表信息中获取G分量与所述RGB数据中当前像素点的G分量最接近的第一源RGB值,并获取所述第一源RGB值的第一颜色索引,可以理解的是,所述图片文件处理设备可以采用所述当前像素点的G分量遍历所述训练颜色表信息中的源RGB值,获取G分量最为接近的第一源RGB值,请一并参见图4,假设第一帧RGB数据中有四个像素点,当前像素点为所述RGB数据中的第一个像素点,所述当前像素点的RGB值为(9,9,9),可以在所述训练颜色表信息中查找到(8,9,8)的G分量与当前像素点的RGB值中的G分量最接近,则将(8,9,8)确定为第一源RGB值,并获取所述第一源RGB值的第一颜色索引“9”。
所述图片文件处理设备在所述训练颜色表信息中以所述第一颜色索引为中心的预设范围内,获取与所述当前像素点的RGB值误差最小的第二源RGB值,并获取所述第二源RGB值的第二颜色索引,可以理解的是,所述图片文件处理设备可以以所述第一颜色索引为中心,在所述第一颜色索引的前后预设范围内获取多个源RGB值,并分别计算所述第一源RGB值以及所述多个源RGB值与所述当前像素点的RGB值的误差,并将多个源RGB值中误差最小的源RGB值确定为第二源RGB值,依据上述举例,假设预设范围为正负1的范围,则以“9”为中心,获取(10,8,6)和(9,10,1)两个源RGB值,并分别计算(10,8,6)、(8,9,8)和(9,10,1)三者与(9,9,9)的误差值,其中颜色索引“8”的误差值为|9-10|+|9-8|+|9-6|=5,颜色索引“9”的误差值为|9-8|+|9-9|+|9-8|=2,颜色索引“10”的误差值为|9-9|+|9-10|+|9-1|=9,则确定源RGB值(8,9,8)为所述第二源RGB值,并获取第二源RGB值的第二颜色索引“9”。可以理解的是,上述获取的第一源RGB值和第一颜色索引存在与第二源RGB值和第二颜色索引相同的情况,也可以存在不相同的情况,具体由实际执行过程确定。
所述图片文件处理设备将所述第二源RGB值替换为所述当前像素点的RGB值,并采用预设权重值和所述当前像素点的RGB值,对所述训练颜色表信息中以所述第二颜色索引为中心的预设范围内的多个源RGB值进行修改,请一并参见图5,依据上述举例,所述第二源RGB值为(8,9,8),则将(8,9,8)替换为当前像素点的RGB值(9,9,9),同时可以依据预设权重值以及当前像素点的RGB值对以所述第二颜色索引为中心的预设范围内的多个源RGB值进行修改,假设预设范围为正负1,则需要对(10,8,6)和(9,10,1)两个源RGB值进行修改,所述预设权重值可以为动态的权重值,对于距离所述第二颜色索引越近源RGB值,其受到当前像素点的RGB值的影响越大,假设当前权重值的分配为2:8,则采用(9,9,9)对(10,8,6)进行修改,例如,R分量=9*0.8+10*0.2=9.2,G分量=9*0.8+8*0.2=8.8,B分量=9*0.8+6*0.2=8.4,对以上结果采用四舍五入的方式,确定颜色索引“8”的源RGB值由(10,8,6)修改为(9,9,8),同理,颜色索引“10”的源RGB值由(9,10,1)修改为(9,9,7)。
当所述当前像素点不为所述RGB数据中的最后一个像素点时,例如当前像素点为图4或图5中所示的RGB数据中的第一个像素点时,所述图片文件处理设备获取修改后得到的所述训练颜色表信息,将所述当前像素点的下一个像素点作为当前像素点,并转入执行在所述训练颜色表信息中获取G分量与所述RGB数据中当前像素点的G分量最接近的第一源RGB值,例如:将所述RGB数据中的第二个像素点作为当前像素点,对修改后得到的所述训练颜色表信息再一次进行训练。具体的训练过程可以参见上述训练过程的描述,在此不进行赘述。
当所述当前像素点为所述RGB数据中的最后一个像素点时,例如当前像素点为图4或图5中所示的RGB数据中的第四个像素点时,所述图片文件处理设备获取修改后得到的所述训练颜色表信息,并将所述训练颜色表信息确定为所述RGB数据的局部颜色表信息。
S1304,当所述RGB数据为图片文件中的第一帧图像时,采用RGB数据中的各像素点的RGB值对初始化颜色表信息进行训练以生成RGB数据的局部颜色表信息;
具体的,在第二种实施方式中,针对图片头信息数据段中不存在全局颜色表信息的情况,当所述RGB数据为所述图片文件中的第一帧图像,所述图片文件处理设备可以采用所述RGB数据中的各像素点的RGB值对初始化颜色表信息进行训练以生成所述RGB数据的局部颜色表信息。
进一步的,当所述RGB数据为所述图片文件中的第一帧图像,且所述图片头信息数据段中不存在全局颜色表信息时,所述图片文件处理设备可以生成一个初始化颜色表信息,例如:(0,0,0)、(1,1,1)、(2,2,2)、……、(255,255,255),所述图片文件处理设备在初始化颜色表信息中获取G分量与所述RGB数据中当前像素点的G分量最接近的第三源RGB值,并获取所述第三源RGB值的第三颜色索引,所述图片文件处理设备在所述初始化颜色表信息中以所述第三颜色索引为中心的预设范围内,获取与所述当前像素点的RGB值误差最小的第四源RGB值,并获取所述第四源RGB值的第四颜色索引,所述图片文件处理设备将所述第四源RGB值替换为所述当前像素点的RGB值,并采用预设权重值和所述当前像素点的RGB值,对所述初始化颜色表信息中以所述第四颜色索引为中心的预设范围内的多个源RGB值进行修改,当所述当前像素点不为所述RGB数据中的最后一个像素点时,所述图片文件处理设备获取修改后得到的所述初始化颜色表信息,将所述当前像素点的下一个像素点作为当前像素点,并转入执行在所述初始化颜色表信息中获取G分量与所述RGB数据中当前像素点的G分量最接近的第三源RGB值,当所述当前像素点为所述RGB数据中的最后一个像素点时,所述图片文件处理设备获取修改后得到的所述训练颜色表信息,并将所述初始化颜色表信息确定为所述RGB数据的局部颜色表信息。需要说明的是,第二种实施方式中对初始化颜色表信息进行训练的过程可以参见上述第一种实施方式的执行过程,在此不进行赘述。
S1305,当所述RGB数据为图片文件中的第N帧图像时,采用RGB数据中的各像素点的RGB值对第N-1帧RGB数据的局部颜色表信息进行训练以生成RGB数据的局部颜色表信息;
具体的,在第三种实施方式中,针对所述RGB数据不为所述图片文件中的第一帧图像,即所述RGB数据为所述图片文件中的第N帧图像时,其中,N为大于1且小于或等于所述总帧数的正整数,所述图片文件处理设备可以采用所述RGB数据中的各像素点的RGB值对第N-1帧RGB数据的局部颜色表信息进行训练以生成所述RGB数据的局部颜色表信息。
进一步的,当所述RGB数据为所述图片文件中的第N帧图像时,所述图片文件处理设备可以将第N-1帧RGB数据的局部颜色表信息中的至少一个源RGB值按照G分量的预设排序方式进行排序,以生成训练颜色表信息,所述图片文件处理设备在所述训练颜色表信息中获取G分量与所述RGB数据中当前像素点的G分量最接近的第五源RGB值,并获取所述第五源RGB值的第五颜色索引,所述图片文件处理设备在所述训练颜色表信息中以所述第五颜色索引为中心的预设范围内,获取与所述当前像素点的RGB值误差最小的第六源RGB值,并获取所述第六源RGB值的第六颜色索引,所述图片文件处理设备将所述第六源RGB值替换为所述当前像素点的RGB值,并采用预设权重值和所述当前像素点的RGB值,对所述训练颜色表信息中以所述第六颜色索引为中心的预设范围内的多个源RGB值进行修改,当所述当前像素点不为所述RGB数据中的最后一个像素点时,所述图片文件处理设备获取修改后得到的所述训练颜色表信息,将所述当前像素点的下一个像素点作为当前像素点,并转入执行在所述训练颜色表信息中获取G分量与所述RGB数据中当前像素点的G分量最接近的第五源RGB值,当所述当前像素点为所述RGB数据中的最后一个像素点时,所述图片文件处理设备获取修改后得到的所述训练颜色表信息,并将所述训练颜色表信息确定为所述RGB数据的局部颜色表信息。需要说明的是,第三种实施方式中对训练颜色表信息进行训练可以参见上述第一种实施方式的执行过程,在此不进行赘述。
需要说明的是,上述采用G分量作为对颜色表信息进行训练的引导仅为举例,本发明实施例同样可以采用R分量或者B分量作为对颜色表信息进行训练的引导,执行过程均可以参见上述内容中的描述,在此不进行赘述。上述第一源RGB值、第二源RGB值、第三源RGB值、第四源RGB值、第五源RGB值、第六源RGB值以及第一颜色索引、第二颜色索引、第三颜色索引、第四颜色索引、第五颜色索引、第六颜色索引均可以表示相同的源RGB值和颜色索引的含义,采用此方式进行命名仅为了区分不同的执行场景,例如:当所述RGB数据为所述图片文件中的第一帧图像,且所述图片头信息数据段中存在全局颜色表信息时;当所述RGB数据为所述图片文件中的第一帧图像,且所述图片头信息数据段中不存在全局颜色表信息时;当所述RGB数据为所述图片文件中的第N帧图像时,以上三种执行场景。
S1306,采用RGB数据的局部颜色表信息对各像素点的RGB值进行更新;
具体的,所述图片文件处理设备可以采用所述RGB数据的局部颜色表信息对所述RGB数据中各像素点的RGB值进行更新,所述图片文件处理设备采用所述延时时间和所述总帧数将更新后的所述RGB数据进行图像编码以生成所述图片文件。可以理解的是,所述图像编码的方式具体由图片文件的图像格式决定,例如:若需要生成的图片文件为GIF图像,则所述图像编码可以为GIF编码等。
在本发明实施例中,通过对全局颜色表信息或初始化颜色表信息进行训练,生成RGB数据的局部颜色表信息,有效的减少了图像的失真;通过采用G分量获取最接近的源RGB值,并在颜色表信息中进行小范围的颜色索引搜索,无需遍历整个颜色表信息,降低了对局部颜色表信息训练的复杂度,进一步提升了图片文件的编码效率。
下面将结合附图23-附图24,对本发明实施例提供的图片文件处理设备进行详细介绍。需要说明的是,附图23-附图24所示的图片文件处理设备,用于执行本发明图8和图9所示实施例的方法,并且具体为上述实施例中的发送端,为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明图8和图9所示的实施例。
请参见图23,为本发明实施例提供了一种图片文件处理设备的结构示意图。如图23所示,本发明实施例的所述图片文件处理设备1可以包括:图像转换单元11、图像压缩单元12和码流发送单元13。
图像转换单元11,用于根据原始图片文件生成图片文件的图片头信息数据段,并将图片文件中每帧图像转换为YUV数据;
具体实现中,所述图像转换单元11可以解码原始图片文件以生成所述图片文件的图片头信息数据段,所述图片文件可以是由开发人员完成对图像制作后所输入的图像,也可以是从其它端接收的图像,所述图片头信息数据段可以包括所述图片文件的延时信息、总帧数等,所述延时信息记录有所述图片文件中每帧图像之间的播放间隔时间,所述总帧数为所述图片文件中的图像帧数,可以理解的是,所述图片头信息数据段中还可以包括所述图片文件的全局颜色表信息,所述全局颜色表信息包含每帧图像的每个像素点的RGB值,针对一些图片文件,其包含的所有图像均共用一个全局颜色表信息,而对于另外一些图片文件,其每帧图像都存在各自的局部颜色表信息,因此若所述图片文件中存在全局颜色表信息,则获取该全局颜色表信息,若所述图片文件中仅存在局部颜色表信息,则不对局部颜色表信息进行获取。所述图像转换单元11进一步将所述图片文件中每帧图像转换为YUV数据。
具体的,请一并参见图24,为本发明实施例提供了一种图像转换单元的结构示意图。如图24所示,所述图像转换单元11可以包括:
图像解码子单元111,用于解码原始图片文件以生成图片文件的图片头信息数据段以及图片文件中每帧图像对应的RGB数据;
具体实现中,所述图像解码子单元111可以解码原始图片文件以生成所述图片文件的图片头信息数据段以及所述图片文件中每帧图像对应的RGB数据,所述图片文件可以是由开发人员完成对图像制作后所输入的图像,也可以是从其它端接收的图像,所述图片头信息数据段可以包括所述图片文件的延时信息、总帧数等,所述延时信息记录有所述图片文件中每帧图像之间的播放间隔时间,所述总帧数为所述图片文件中的图像帧数,可以理解的是,所述图片头信息数据段中还可以包括所述图片文件的全局颜色表信息,所述全局颜色表信息包含每帧图像的每个像素点的RGB值,针对一些图片文件,其包含的所有图像均共用一个全局颜色表信息,而对于另外一些图片文件,其每帧图像都存在各自的局部颜色表信息,因此若所述图片文件中存在全局颜色表信息,则获取该全局颜色表信息,若所述图片文件中仅存在局部颜色表信息,则不对局部颜色表信息进行获取。
图像转换子单元112,用于采用颜色空间转换公式将所述RGB数据转换为YUV数据;
具体实现中,所述图像转换子单元112可以采用颜色空间转换公式将所述RGB数据转换为YUV数据,在将RGB数据转换为YUV数据的过程中,可以选择亮度分量的值域范围为[16,235],色度分量的值域范围为[16,240]的颜色空间转换公式,由于至于范围的缩减,可以极大的减小转换后YUV数据的数据量,但导致的失真程度较大;还可以选择亮度分量和色度分量的值域范围均为[0,255]颜色空间转换公式,可以减小转换后YUV数据的失真,但转换后YUV数据的数据量较大,亮度分量和色度分量的值域范围均为[0,255]的颜色空间转换公式为:
Y=0.299R+0.587G+0.114B;
U=-0.1687R-0.3313G+0.5B+128;
V=0.5R-0.4187G-0.0813B+128;
其中,YUV是一种视频数据格式,Y为亮度分量,UV为色度分量,通过颜色空间转换公式可以对每帧图像的像素点进行光栅扫描处理,将每帧RGB数据转换为对应的YUV数据。
图像压缩单元12,用于对所述YUV数据进行编码以生成码流数据;
具体实现中,所述图像压缩单元12可以进一步对所述YUV数据进行编码处理,生成码流数据,所述编码可以包括预测编码、变换编码、量化编码和熵编码,例如:所述图像压缩单元12可以采用IPPP模式对所述YUV数据进行压缩,第一帧YUV数据为I帧,I帧即为帧内预测帧,其余帧YUV数据为P帧,P帧即为帧间预测帧,可以有效的压缩图片文件的文件数据量,还可以采用固定QP的方式来稳定不同帧之间的质量等。熵编码则可以包括哈夫曼编码、算数编码等。
进一步的,在对所述YUV数据进行编码过程中,可以支持用户添加配置参数,所述配置参数可以为对所述YUV数据进行编码的参数,所述配置参数可以包括标清模式参数、高清模式参数和无损模式参数中的任一种,要求减少带宽,则可以选择标清模式参数(例如:YUV420模式参数);要求图像质量,则可以选择高清模式参数(例如:YUV444模式参数)等。所述图像压缩单元12可以采用配置参数对所述YUV数据进行编码以生成码流数据。
可选的,在对所述YUV数据进行编码过程中,还可以支持用户添加编码器复杂度,所述编码器复杂度可以为根据所述图片文件处理设备1的硬件性能所决定的编码的精细度参数,所述编码器复杂度可以包括第一复杂度、第二复杂度和第三复杂度中的任一种,所述第一复杂度高于所述第二复杂度,所述第二复杂度高于所述第三复杂度,例如:可以对所述图片文件处理设备1的硬件性能进行检测以生成性能数值,例如:测试所述图片文件处理设备1的中央处理器的计算速率等,当所述性能数值位于第一预设数值范围内时,可以确定图片文件处理设备1硬件性能很高,则可以推荐使用第一复杂度的编码方式;当所述性能数值位于第二预设数值范围内时,可以确定图片文件处理设备1硬件性能中等,则可以推荐使用第二复杂度的编码方式;当所述性能数值位于第三预设数值范围内时,可以确定图片文件处理设备1硬件性能较差,或者当前要求实时转码等,则可以推荐使用第三复杂度的编码方式等。所述图像压缩单元12可以配置编码器复杂度对所述YUV数据进行编码以生成码流数据。
需要说明的是,上述两种编码方式可以为并行的编码方式,即所述图像压缩单元12可以同时采用配置参数和配置的编码器复杂度对所述YUV数据进行编码以生成码流数据。上述的性能数值、第一预设数值范围、第二通预设数值范围以及第三预设数值范围具体可以根据开发人员的人为经验进行设定。
码流发送单元13,用于将所述压缩图像数据发送至接收端;
具体实现中,所述码流发送单元13可以生成压缩图像数据,所述图片文件处理设备1可以对所述压缩图像数据进行存储,当检测到接收端对所述图片文件的请求时,所述码流发送单元13再将所述压缩图像数据发送至所述接收端,例如:当图片文件处理设备1检测到包含所述图片文件的网页开启时。所述码流发送单元13也可以直接将所述压缩图像数据发送至所述接收端,例如:即时通信应用中的一个客户端需要将所述图片文件发送至另一个客户端时,应用服务设备需要将所述图片文件进行转发等,所述压缩图像数据包含所述图片头信息数据段和所述码流数据。
所述接收端接收所述图片文件处理设备1发送的所述压缩图像数据,所述接收端可以对所述压缩图像数据进行解析处理,以获取所述压缩图像数据中的所述图片头信息数据段和所述码流数据。
所述接收端解码所述码流数据以生成所述YUV数据,并基于图片头信息数据段中的时延信息、总帧数、全局颜色表信息等对所述YUV数据进行编码处理以生成所述图片文件。
在本发明实施例中,根据原始的图片文件生成图片文件的图片头信息数据段,将图片文件中每帧图像转换为YUV数据,再基于YUV数据进行编码后得到的码流数据以及图片头信息数据段生成压缩图像数据,并将压缩图像数据进行传输,在接收到压缩图像数据时,可以根据码流数据生成YUV数据,再基于图片头信息数据段对YUV数据进行处理生成图片文件。通过将文件数据量较大的图片文件中每帧图像转换为数据量较小的YUV数据,再对YUV数据编码得到码流数据,极大的缩小了图片文件在传输过程中的文件数据量,降低了带宽成本;通过灵活控制配置参数的使用以及配置编码器复杂度,可以满足不同的业务场景以及不同的机器性能,优化图片文件的编码效率。
请参见图25,为本发明实施例提供了另一种图片文件处理设备的结构示意图。如图25所示,所述图片文件处理设备1000可以包括:至少一个处理器1001,例如CPU,至少一个网络接口1004,用户接口1003,存储器1005,至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,用户接口1003可以包括显示屏(Display)、键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图25所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及图像处理应用程序。
在图25所示的图片文件处理设备1000中,网络接口1004主要用于连接接收端,与所述接收端进行数据通信;而用户接口1003主要用于为用户提供输入的接口,获取用户输入的数据;而处理器1001可以用于调用存储器1005中存储的图像处理应用程序,并具体执行以下步骤:
根据原始图片文件生成所述图片文件的图片头信息数据段,并将图片文件中每帧图像转换为YUV数据;
对所述YUV数据进行编码以生成码流数据;
将压缩图像数据发送至接收端,所述压缩图像数据包含所述图片头信息数据段和所述码流数据,以使所述接收端解析所述压缩图像数据以获取所述图片头信息数据段和所述码流数据,根据所述码流数据生成所述YUV数据,使所述接收端基于所述图片头信息数据段对所述YUV数据进行处理以生成所述图片文件。
在一个实施例中,所述处理器1001在执行根据原始图片文件生成图片文件的图片头信息数据段,并将图片文件中每帧图像转换为YUV数据时,具体执行以下步骤:
解码原始图片文件以生成图片文件的图片头信息数据段以及图片文件中每帧图像对应的RGB数据,所述图片头信息数据段包括延时信息、总帧数、全局颜色表信息;
采用颜色空间转换公式将所述RGB数据转换为YUV数据。
在一个实施例中,所述编码包括预测编码、变换编码、量化编码和熵编码。
在一个实施例中,所述处理器1001在执行对所述YUV数据进行编码以生成码流数据时,具体执行以下步骤:
采用配置参数对所述YUV数据进行编码以生成码流数据,所述配置参数为对所述YUV数据进行编码的参数,所述配置参数包括标清模式参数、高清模式参数和无损模式参数中的任一种。
在一个实施例中,所述处理器1001在执行对所述YUV数据进行编码以生成码流数据时,具体执行以下步骤:
配置编码器复杂度对所述YUV数据进行编码以生成码流数据,所述编码器复杂度为根据硬件性能所决定的编码的精细度参数。
在一个实施例中,所述图片文件为GIF图像。
在本发明实施例中,根据原始的图片文件生成图片文件的图片头信息数据段,将图片文件中每帧图像转换为YUV数据,再基于YUV数据进行编码后得到的码流数据以及图片头信息数据段生成压缩图像数据,并将压缩图像数据进行传输,在接收到压缩图像数据时,可以根据码流数据生成YUV数据,再基于图片头信息数据段对YUV数据进行处理生成图片文件。通过将文件数据量较大的图片文件中每帧图像转换为数据量较小的YUV数据,再对YUV数据编码得到码流数据,极大的缩小了图片文件在传输过程中的文件数据量,降低了带宽成本;通过灵活控制配置参数的使用以及配置编码器复杂度,可以满足不同的业务场景以及不同的机器性能,优化图片文件的编码效率。
下面将结合附图26-附图27,对本发明实施例提供的图片文件处理设备进行详细介绍。需要说明的是,附图26-附图27所示的图片文件处理设备,用于执行本发明图11和图12所示实施例的方法,并且具体为上述实施例中的接收端,为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明图11和图12所示的实施例。
请参见图26,为本发明实施例提供了又一种图片文件处理设备的结构示意图。如图26所示,本发明实施例的所述图片文件处理设备2可以包括:信息获取单元21和图像编码单元22。
信息获取单元21,用于接收发送端发送的针对原始图片文件的压缩图像数据,解析所述压缩图像数据以获取图片文件的图片头信息数据段和码流数据;
具体实现中,发送端可以解码原始图片文件以生成所述图片文件的图片头信息数据段以及所述图片文件中每帧图像对应的RGB数据,所述图片文件可以是由开发人员完成对图像制作后所输入的图像,也可以是从其它端接收的图像,所述图片头信息数据段可以包括所述图片文件的延时信息、总帧数等,所述延时信息记录有所述图片文件中每帧图像之间的播放间隔时间,所述总帧数为所述图片文件中的图像帧数,可以理解的是,所述图片头信息数据段中还可以包括所述图片文件的全局颜色表信息,所述全局颜色表信息包含每帧图像的每个像素点的RGB值,针对一些图片文件,其包含的所有图像均共用一个全局颜色表信息,而对于另外一些图片文件,其每帧图像都存在各自的局部颜色表信息,因此若所述图片文件中存在全局颜色表信息,则获取该全局颜色表信息,若所述图片文件中仅存在局部颜色表信息,则不对局部颜色表信息进行获取。
所述发送端可以采用颜色空间转换公式将所述RGB数据转换为YUV数据,在将RGB数据转换为YUV数据的过程中,可以选择亮度分量的值域范围为[16,235],色度分量的值域范围为[16,240]的颜色空间转换公式,由于至于范围的缩减,可以极大的减小转换后YUV数据的数据量,但导致的失真程度较大;还可以选择亮度分量和色度分量的值域范围均为[0,255]颜色空间转换公式,可以减小转换后YUV数据的失真,但转换后YUV数据的数据量较大,亮度分量和色度分量的值域范围均为[0,255]的颜色空间转换公式为:
Y=0.299R+0.587G+0.114B;
U=-0.1687R-0.3313G+0.5B+128;
V=0.5R-0.4187G-0.0813B+128;
其中,YUV是一种视频数据格式,Y为亮度分量,UV为色度分量,通过颜色空间转换公式可以对每帧图像的像素点进行光栅扫描处理,将每帧RGB数据转换为对应的YUV数据。
所述发送端可以进一步对所述YUV数据进行编码处理,生成码流数据,所述编码可以包括预测编码、变换编码、量化编码和熵编码,例如:所述发送端可以采用IPPP模式对所述YUV数据进行压缩,第一帧YUV数据为I帧,I帧即为帧内预测帧,其余帧YUV数据为P帧,P帧即为帧间预测帧,可以有效的压缩图片文件的文件数据量,还可以采用固定QP的方式来稳定不同帧之间的质量等。熵编码则可以包括哈夫曼编码、算数编码等。
所述发送端可以生成压缩图像数据,所述发送端可以对所述压缩图像数据进行存储,当检测到图片文件处理设备2对所述图片文件的请求时,所述发送端再将所述压缩图像数据发送至所述图片文件处理设备2,例如:当发送端检测到包含所述图片文件的网页开启时。所述发送端也可以直接将所述压缩图像数据发送至所述图片文件处理设备2,例如:即时通信应用中的一个客户端需要将所述图片文件发送至另一个客户端时,应用服务设备需要将所述图片文件进行转发等。
所述信息获取单元21接收所述发送端发送的所述压缩图像数据,所述信息获取单元21可以对所述压缩图像数据进行解析处理,以获取所述压缩图像数据中的所述图片头信息数据段和所述码流数据。
图像编码单元22,用于根据所述码流数据生成所述YUV数据,并基于所述图片头信息数据段对所述YUV数据进行处理以生成所述图片文件;
具体实现中,所述图像编码单元22解码所述码流数据以生成所述YUV数据,并基于图片头信息数据段中的时延信息、总帧数、全局颜色表信息等对所述YUV数据进行编码处理以生成所述图片文件。
具体的,请一并参见图27,为本发明实施例提供了一种图像编码单元的结构示意图。如图27所示,所述图像编码单元22可以包括:
图像转换子单元221,用于解码所述码流数据以生成所述YUV数据,并采用颜色空间转换公式将所述YUV数据转换为RGB数据;
具体实现中,所述图像转换子单元221解码所述码流数据以生成所述YUV数据,并可以采用颜色空间转换公式将所述YUV数据转换为RGB数据,进一步的,所述图像转换子单元221需要依据亮度分量的值域范围确定所采用的颜色空间转换公式,可以理解的是,针对YUV444模式下的YUV数据,可以选择亮度分量的值域范围为[16,235],色度分量的值域范围为[16,240]的颜色空间转换公式,也可以选择亮度分量和色度分量的值域范围均为[0,255]颜色空间转换公式,具体可以依据上述实施例中在将RGB数据转换为YUV数据时选择的颜色空间转换公式对应。需要说明的是,色度包括Cb和Cr两种色差信号中的任一种的样值矩阵和单个样值。两种色差信号需要分别进行上采样处理,两者进行上采样处理的方式均相同,其中,Cb对应YUV中的U,Cr对应YUV中的V。
若亮度分量的值域范围为[16,235],色度分量的值域范围为[16,240],则颜色空间转换公式为:
R=Clip3(0,255,(298*Y+409*(Cr–128)+128)>>8);
G=Clip3(0,255,(298*Y–100*(Cb-128)+208*(Cr-128)+128)>>8);
B=Clip3(0,255,(298*Y+516*(Cb-128)+128)>>8);
其中,“+128”用于对R值、B值、G值进行四舍五入,“>>8”表示除以2的8次方。
若亮度分量和色度分量的值域范围均为[0,255],则颜色空间转换公式为:
R=Clip3(0,255,Y+(359*(Cr–128)+128)>>8);
G=Clip3(0,255,Y–(88*(Cb-128)+183*(Cr-128)+128)>>8);
B=Clip3(0,255,Y+(454*(Cb-128)+128)>>8);
其中,“+128”用于对R值、B值、G值进行四舍五入,“>>8”表示除以2的8次方。
通过颜色空间转换公式可以对每帧图像的像素点进行光栅扫描处理,将每帧YUV数据转换为对应的RGB数据。
像素点更新子单元222,用于采用所述全局颜色表信息对RGB数据中的各像素点的RGB值进行更新;
具体实现中,由于之前对所述YUV数据进行过编码处理,因此导致由所述YUV数据转换的RGB数据存在失真的情况,所述像素点更新子单元222可以采用所述全局颜色表信息对所述RGB数据中的各像素点的RGB值进行更新,可以理解的是,所述RGB数据中可以包含一个或多个像素点,当所述RGB数据中仅存在一个像素点时,可以采用所述全局颜色表信息对所述像素点的RGB值进行更新,当所述RGB数据中存在多个像素点时,可以采用所述全局颜色表信息对多个像素点中各像素点的RGB值进行更新,所述像素点更新子单元222需要重新对所述全局颜色表信息进行训练,以生成符合所述RGB数据的局部颜色表信息,而对于不存在全局颜色表信息的情况,所述像素点更新子单元222可以生成初始化颜色表信息,并通过对所述初始化颜色表信息进行训练,以生成符合所述RGB数据的局部颜色表信息。具体的处理过程如下所述:
在本发明实施例的第一种实施方式中,针对图片头信息数据段中存在全局颜色表信息的情况,当所述RGB数据为所述图片文件中的第一帧图像,所述像素点更新子单元222可以采用所述RGB数据中的各像素点的RGB值对所述全局颜色表信息进行训练以生成所述RGB数据的局部颜色表信息,并采用所述RGB数据的局部颜色表信息对所述各像素点的RGB值进行更新。
进一步的,当所述RGB数据为所述图片文件中的第一帧图像,且所述图片头信息数据段中存在全局颜色表信息时,所述像素点更新子单元222可以将所述全局颜色表信息中的至少一个源RGB值按照G分量的预设排序方式(例如:升序、降序等)进行排序,以生成训练颜色表信息,请一并参见图3,如图3所示,所述全局颜色表信息中包括颜色索引和源RGB值,例如:5,(8,1,10)、6,(8,9,8)、7,(1,7,6)、8,(10,8,6)、9,(5,8,5)、10,(9,10,1),按照G分量的升序排序可以生成训练颜色表信息,例如:5,(8,1,10)、6,(1,7,6)、7,(5,8,5)、8,(10,8,6)、9,(8,9,8)、10,(9,10,1)。
所述像素点更新子单元222在所述训练颜色表信息中获取G分量与所述RGB数据中当前像素点的G分量最接近的第一源RGB值,并获取所述第一源RGB值的第一颜色索引,可以理解的是,所述像素点更新子单元222可以采用所述当前像素点的G分量遍历所述训练颜色表信息中的源RGB值,获取G分量最为接近的第一源RGB值,请一并参见图4,假设第一帧RGB数据中有四个像素点,当前像素点为所述RGB数据中的第一个像素点,所述当前像素点的RGB值为(9,9,9),可以在所述训练颜色表信息中查找到(8,9,8)的G分量与当前像素点的RGB值中的G分量最接近,则将(8,9,8)确定为第一源RGB值,并获取所述第一源RGB值的第一颜色索引“9”。
所述像素点更新子单元222在所述训练颜色表信息中以所述第一颜色索引为中心的预设范围内,获取与所述当前像素点的RGB值误差最小的第二源RGB值,并获取所述第二源RGB值的第二颜色索引,可以理解的是,所述像素点更新子单元222可以以所述第一颜色索引为中心,在所述第一颜色索引的前后预设范围内获取多个源RGB值,并分别计算所述第一源RGB值以及所述多个源RGB值与所述当前像素点的RGB值的误差,并将多个源RGB值中误差最小的源RGB值确定为第二源RGB值,依据上述举例,假设预设范围为正负1的范围,则以“9”为中心,获取(10,8,6)和(9,10,1)两个源RGB值,并分别计算(10,8,6)、(8,9,8)和(9,10,1)三者与(9,9,9)的误差值,其中颜色索引“8”的误差值为|9-10|+|9-8|+|9-6|=5,颜色索引“9”的误差值为|9-8|+|9-9|+|9-8|=2,颜色索引“10”的误差值为|9-9|+|9-10|+|9-1|=9,则确定源RGB值(8,9,8)为所述第二源RGB值,并获取第二源RGB值的第二颜色索引“9”。可以理解的是,上述获取的第一源RGB值和第一颜色索引存在与第二源RGB值和第二颜色索引相同的情况,也可以存在不相同的情况,具体由实际执行过程确定。
所述像素点更新子单元222将所述第二源RGB值替换为所述当前像素点的RGB值,并采用预设权重值和所述当前像素点的RGB值,对所述训练颜色表信息中以所述第二颜色索引为中心的预设范围内的多个源RGB值进行修改,请一并参见图5,依据上述举例,所述第二源RGB值为(8,9,8),则将(8,9,8)替换为当前像素点的RGB值(9,9,9),同时可以依据预设权重值以及当前像素点的RGB值对以所述第二颜色索引为中心的预设范围内的多个源RGB值进行修改,假设预设范围为正负1,则需要对(10,8,6)和(9,10,1)两个源RGB值进行修改,所述预设权重值可以为动态的权重值,对于距离所述第二颜色索引越近源RGB值,其受到当前像素点的RGB值的影响越大,假设当前权重值的分配为2:8,则采用(9,9,9)对(10,8,6)进行修改,例如,R分量=9*0.8+10*0.2=9.2,G分量=9*0.8+8*0.2=8.8,B分量=9*0.8+6*0.2=8.4,对以上结果采用四舍五入的方式,确定颜色索引“8”的源RGB值由(10,8,6)修改为(9,9,8),同理,颜色索引“10”的源RGB值由(9,10,1)修改为(9,9,7)。
当所述当前像素点不为所述RGB数据中的最后一个像素点时,例如当前像素点为图4或图5中所示的RGB数据中的第一个像素点时,所述像素点更新子单元222获取修改后得到的所述训练颜色表信息,将所述当前像素点的下一个像素点作为当前像素点,并转入执行在所述训练颜色表信息中获取G分量与所述RGB数据中当前像素点的G分量最接近的第一源RGB值,例如:将所述RGB数据中的第二个像素点作为当前像素点,对修改后得到的所述训练颜色表信息再一次进行训练。具体的训练过程可以参见上述训练过程的描述,在此不进行赘述。
当所述当前像素点为所述RGB数据中的最后一个像素点时,例如当前像素点为图4或图5中所示的RGB数据中的第四个像素点时,所述像素点更新子单元222获取修改后得到的所述训练颜色表信息,并将所述训练颜色表信息确定为所述RGB数据的局部颜色表信息。
所述像素点更新子单元222可以采用所述RGB数据的局部颜色表信息对所述各像素点的RGB值进行更新,进一步的,所述像素点更新子单元222可以在所述RGB数据的局部颜色表信息中依次获取与所述各像素点相同或误差最小的源RGB值分别替换所述各像素点的RGB值,优选的,所述像素点更新子单元222可以将与所述各像素点相同或误差最小的源RGB值对应的颜色索引分别替换所述各像素点的RGB值,请一并参见图6,依据上述举例,所述RGB数据的第一个像素点的RGB值为(9,9,9),在所述局部颜色表信息中与(9,9,9)误差最小的为(9,9,8),则将(9,9,8)对应的颜色索引“8”替换所述第一个像素点的RGB值,同理,第二个像素点的颜色索引为“10”,第三个像素点的颜色索引为“9”,第四个像素点的颜色索引为“6”。
在本发明实施例的第二种实施方式中,针对图片头信息数据段中不存在全局颜色表信息的情况,当所述RGB数据为所述图片文件中的第一帧图像,所述像素点更新子单元222可以采用所述RGB数据中的各像素点的RGB值对初始化颜色表信息进行训练以生成所述RGB数据的局部颜色表信息,并采用所述RGB数据的局部颜色表信息对所述各像素点的RGB值进行更新。
进一步的,当所述RGB数据为所述图片文件中的第一帧图像,且所述图片头信息数据段中不存在全局颜色表信息时,所述像素点更新子单元222可以生成一个初始化颜色表信息,例如:(0,0,0)、(1,1,1)、(2,2,2)、……、(255,255,255),所述像素点更新子单元222在初始化颜色表信息中获取G分量与所述RGB数据中当前像素点的G分量最接近的第三源RGB值,并获取所述第三源RGB值的第三颜色索引,所述图片文件处理设备2在所述初始化颜色表信息中以所述第三颜色索引为中心的预设范围内,获取与所述当前像素点的RGB值误差最小的第四源RGB值,并获取所述第四源RGB值的第四颜色索引,所述像素点更新子单元222将所述第四源RGB值替换为所述当前像素点的RGB值,并采用预设权重值和所述当前像素点的RGB值,对所述初始化颜色表信息中以所述第四颜色索引为中心的预设范围内的多个源RGB值进行修改,当所述当前像素点不为所述RGB数据中的最后一个像素点时,所述像素点更新子单元222获取修改后得到的所述初始化颜色表信息,将所述当前像素点的下一个像素点作为当前像素点,并转入执行在所述初始化颜色表信息中获取G分量与所述RGB数据中当前像素点的G分量最接近的第三源RGB值,当所述当前像素点为所述RGB数据中的最后一个像素点时,所述像素点更新子单元222获取修改后得到的所述训练颜色表信息,并将所述初始化颜色表信息确定为所述RGB数据的局部颜色表信息,所述像素点更新子单元222可以采用所述RGB数据的局部颜色表信息对所述各像素点的RGB值进行更新。需要说明的是,第二种实施方式中对初始化颜色表信息进行训练以及采用RGB数据的局部颜色表信息对各像素点的RGB值进行更新的过程均可以参见上述第一种实施方式的执行过程,在此不进行赘述。
针对上述第一种实施方式和第二种实施方式,在本发明实施例的第三种实施方式中,针对所述RGB数据不为所述图片文件中的第一帧图像,即所述RGB数据为所述图片文件中的第N帧图像时,其中,N为大于1且小于或等于所述总帧数的正整数,所述像素点更新子单元222可以采用所述RGB数据中的各像素点的RGB值对第N-1帧RGB数据的局部颜色表信息进行训练以生成所述RGB数据的局部颜色表信息,并采用所述RGB数据的局部颜色表信息对所述各像素点的RGB值进行更新。
进一步的,当所述RGB数据为所述图片文件中的第N帧图像时,所述像素点更新子单元222可以将第N-1帧RGB数据的局部颜色表信息中的至少一个源RGB值按照G分量的预设排序方式进行排序,以生成训练颜色表信息,所述像素点更新子单元222在所述训练颜色表信息中获取G分量与所述RGB数据中当前像素点的G分量最接近的第五源RGB值,并获取所述第五源RGB值的第五颜色索引,所述像素点更新子单元222在所述训练颜色表信息中以所述第五颜色索引为中心的预设范围内,获取与所述当前像素点的RGB值误差最小的第六源RGB值,并获取所述第六源RGB值的第六颜色索引,所述像素点更新子单元222将所述第六源RGB值替换为所述当前像素点的RGB值,并采用预设权重值和所述当前像素点的RGB值,对所述训练颜色表信息中以所述第六颜色索引为中心的预设范围内的多个源RGB值进行修改,当所述当前像素点不为所述RGB数据中的最后一个像素点时,所述像素点更新子单元222获取修改后得到的所述训练颜色表信息,将所述当前像素点的下一个像素点作为当前像素点,并转入执行在所述训练颜色表信息中获取G分量与所述RGB数据中当前像素点的G分量最接近的第五源RGB值,当所述当前像素点为所述RGB数据中的最后一个像素点时,所述像素点更新子单元222获取修改后得到的所述训练颜色表信息,并将所述训练颜色表信息确定为所述RGB数据的局部颜色表信息,所述像素点更新子单元222可以采用所述RGB数据的局部颜色表信息对所述各像素点的RGB值进行更新。需要说明的是,第三种实施方式中对训练颜色表信息进行训练以及采用RGB数据的局部颜色表信息对各像素点的RGB值进行更新的过程均可以参见上述第一种实施方式的执行过程,在此不进行赘述。
需要说明的是,上述采用G分量作为对颜色表信息进行训练的引导仅为举例,本发明实施例同样可以采用R分量或者B分量作为对颜色表信息进行训练的引导,执行过程均可以参见上述内容中的描述,在此不进行赘述。上述第一源RGB值、第二源RGB值、第三源RGB值、第四源RGB值、第五源RGB值、第六源RGB值以及第一颜色索引、第二颜色索引、第三颜色索引、第四颜色索引、第五颜色索引、第六颜色索引均可以表示相同的源RGB值和颜色索引的含义,采用此方式进行命名仅为了区分不同的执行场景,例如:当所述RGB数据为所述图片文件中的第一帧图像,且所述图片头信息数据段中存在全局颜色表信息时;当所述RGB数据为所述图片文件中的第一帧图像,且所述图片头信息数据段中不存在全局颜色表信息时;当所述RGB数据为所述图片文件中的第N帧图像时,以上三种执行场景。
图像编码子单元223,用于采用所述延时时间和所述总帧数将更新后的所述RGB数据进行图像编码以生成所述图片文件;
具体实现中,所述图像编码子单元223采用所述延时时间和所述总帧数将更新后的所述RGB数据进行图像编码以生成所述图片文件,优选的,所述图片文件处理设备2可以基于所述延时时间和所述总帧数,并采用LZW对所述RGB数据中各像素点的颜色索引进行图像编码,生成所述图片文件,所述图片文件处理设备2可以对所述图片文件进行存储或者展示。可以理解的是,所述图像编码的方式具体由图片文件的图像格式决定,例如:若需要生成的图片文件为GIF图像,则所述图像编码可以为GIF编码等。
在本发明实施例中,在接收到压缩图像数据时,可以根据码流数据生成YUV数据,再基于图片头信息数据段对YUV数据进行处理生成图片文件。通过将文件数据量较大的图片文件中每帧图像转换为数据量较小的YUV数据,再对YUV数据编码得到码流数据,极大的缩小了图片文件在传输过程中的文件数据量,降低了带宽成本;通过对全局颜色表信息或初始化颜色表信息进行训练,生成RGB数据的局部颜色表信息,有效的减少了图像的失真;通过采用G分量获取最接近的源RGB值,并在颜色表信息中进行小范围的颜色索引搜索,无需遍历整个颜色表信息,降低了对局部颜色表信息训练的复杂度,进一步提升了图片文件的编码效率。
请参见图28,为本发明实施例提供了又一种图片文件处理设备的结构示意图。如图28所示,所述图片文件处理设备2000可以包括:至少一个处理器2001,例如CPU,至少一个网络接口2004,用户接口2003,存储器2005,至少一个通信总线2002。其中,通信总线2002用于实现这些组件之间的连接通信。其中,用户接口2003可以包括显示屏(Display)、键盘(Keyboard),可选用户接口2003还可以包括标准的有线接口、无线接口。网络接口2004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器2005可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器2005可选的还可以是至少一个位于远离前述处理器2001的存储装置。如图28所示,作为一种计算机存储介质的存储器2005中可以包括操作系统、网络通信模块、用户接口模块以及图像处理应用程序。
在图28所示的图片文件处理设备2000中,网络接口2004主要用于连接发送端,与所述发送端进行数据通信;而用户接口2003主要用于为用户提供输入的接口,获取用户输入的数据;而处理器2001可以用于调用存储器2005中存储的图像处理应用程序,并具体执行以下步骤:
接收发送端发送的针对原始图片文件的压缩图像数据,解析所述压缩图像数据以获取图片文件的图片头信息数据段和码流数据,所述码流数据为对图片文件中每帧图像转换的YUV数据进行编码生成的信息;
根据所述码流数据生成所述YUV数据,并基于所述图片头信息数据段对所述YUV数据进行处理以生成所述图片文件。
在一个实施例中,所述图片头信息数据段包括延时信息、总帧数、全局颜色表信息;
所述处理器2001在执行根据所述码流数据生成所述YUV数据,并基于所述图片头信息数据段对所述YUV数据进行处理以生成所述图片文件时,具体执行以下步骤:
解码所述码流数据以生成所述YUV数据,并采用颜色空间转换公式将所述YUV数据转换为RGB数据;
采用所述全局颜色表信息对所述RGB数据中的各像素点的RGB值进行更新;
采用所述延时时间和所述总帧数将更新后的所述RGB数据进行图像编码以生成所述图片文件。
在一个实施例中,所述处理器2001在执行采用所述全局颜色表信息对所述RGB数据中的各像素点的RGB值进行更新时,具体执行以下步骤:
当所述RGB数据为所述图片文件中的第一帧图像,且所述图片头信息数据段中存在全局颜色表信息时,采用所述RGB数据中的各像素点的RGB值对所述全局颜色表信息进行训练以生成所述RGB数据的局部颜色表信息,并采用所述RGB数据的局部颜色表信息对所述各像素点的RGB值进行更新。
在一个实施例中,所述处理器2001在执行采用所述RGB数据中的各像素点的RGB值对所述全局颜色表信息进行训练以生成所述RGB数据的局部颜色表信息时,具体执行以下步骤:
将所述全局颜色表信息中的至少一个源RGB值按照G分量的预设排序方式进行排序,以生成训练颜色表信息;
在所述训练颜色表信息中获取G分量与所述RGB数据中当前像素点的G分量最接近的第一源RGB值,并获取所述第一源RGB值的第一颜色索引;
在所述训练颜色表信息中以所述第一颜色索引为中心的预设范围内,获取与所述当前像素点的RGB值误差最小的第二源RGB值,并获取所述第二源RGB值的第二颜色索引;
将所述第二源RGB值替换为所述当前像素点的RGB值,并采用预设权重值和所述当前像素点的RGB值,对所述训练颜色表信息中以所述第二颜色索引为中心的预设范围内的多个源RGB值进行修改;
当所述当前像素点不为所述RGB数据中的最后一个像素点时,获取修改后得到的所述训练颜色表信息,将所述当前像素点的下一个像素点作为当前像素点,并转入执行在所述训练颜色表信息中获取G分量与所述RGB数据中当前像素点的G分量最接近的第一源RGB值;
当所述当前像素点为所述RGB数据中的最后一个像素点时,获取修改后得到的所述训练颜色表信息,并将所述训练颜色表信息确定为所述RGB数据的局部颜色表信息。
在一个实施例中,所述处理器2001在执行采用所述全局颜色表信息对所述RGB数据中的各像素点的RGB值进行更新时,具体执行以下步骤:
当所述RGB数据为所述图片文件中的第一帧图像,且所述图片头信息数据段中不存在全局颜色表信息时,采用所述RGB数据中的各像素点的RGB值对初始化颜色表信息进行训练以生成所述RGB数据的局部颜色表信息,并采用所述RGB数据的局部颜色表信息对所述各像素点的RGB值进行更新。
在一个实施例中,所述处理器2001在执行采用所述RGB数据中的各像素点的RGB值对初始化颜色表信息进行训练以生成所述RGB数据的局部颜色表信息时,具体执行以下步骤:
在初始化颜色表信息中获取G分量与所述RGB数据中当前像素点的G分量最接近的第三源RGB值,并获取所述第三源RGB值的第三颜色索引;
在所述初始化颜色表信息中以所述第三颜色索引为中心的预设范围内,获取与所述当前像素点的RGB值误差最小的第四源RGB值,并获取所述第四源RGB值的第四颜色索引;
将所述第四源RGB值替换为所述当前像素点的RGB值,并采用预设权重值和所述当前像素点的RGB值,对所述初始化颜色表信息中以所述第四颜色索引为中心的预设范围内的多个源RGB值进行修改;
当所述当前像素点不为所述RGB数据中的最后一个像素点时,获取修改后得到的所述初始化颜色表信息,将所述当前像素点的下一个像素点作为当前像素点,并转入执行在所述初始化颜色表信息中获取G分量与所述RGB数据中当前像素点的G分量最接近的第三源RGB值;
当所述当前像素点为所述RGB数据中的最后一个像素点时,获取修改后得到的所述训练颜色表信息,并将所述初始化颜色表信息确定为所述RGB数据的局部颜色表信息。
在一个实施例中,所述处理器2001在执行采用所述全局颜色表信息对所述RGB数据中的各像素点的RGB值进行更新时,具体执行以下步骤:
当所述RGB数据为所述图片文件中的第N帧图像时,采用所述RGB数据中的各像素点的RGB值对第N-1帧RGB数据的局部颜色表信息进行训练以生成所述RGB数据的局部颜色表信息,并采用所述RGB数据的局部颜色表信息对所述各像素点的RGB值进行更新,N为大于1且小于或等于所述总帧数的正整数。
在一个实施例中,所述处理器2001在执行采用所述RGB数据中的各像素点的RGB值对第N-1帧RGB数据的局部颜色表信息进行训练以生成所述RGB数据的局部颜色表信息时,具体执行以下步骤:
将第N-1帧RGB数据的局部颜色表信息中的至少一个源RGB值按照G分量的预设排序方式进行排序,以生成训练颜色表信息;
在所述训练颜色表信息中获取G分量与所述RGB数据中当前像素点的G分量最接近的第五源RGB值,并获取所述第五源RGB值的第五颜色索引;
在所述训练颜色表信息中以所述第五颜色索引为中心的预设范围内,获取与所述当前像素点的RGB值误差最小的第六源RGB值,并获取所述第六源RGB值的第六颜色索引;
将所述第六源RGB值替换为所述当前像素点的RGB值,并采用预设权重值和所述当前像素点的RGB值,对所述训练颜色表信息中以所述第六颜色索引为中心的预设范围内的多个源RGB值进行修改;
当所述当前像素点不为所述RGB数据中的最后一个像素点时,获取修改后得到的所述训练颜色表信息,将所述当前像素点的下一个像素点作为当前像素点,并转入执行在所述训练颜色表信息中获取G分量与所述RGB数据中当前像素点的G分量最接近的第五源RGB值;
当所述当前像素点为所述RGB数据中的最后一个像素点时,获取修改后得到的所述训练颜色表信息,并将所述训练颜色表信息确定为所述RGB数据的局部颜色表信息。
在一个实施例中,所述图片文件为GIF图像。
在本发明实施例中,在接收到压缩图像数据时,可以根据码流数据生成YUV数据,再基于图片头信息数据段对YUV数据进行处理生成图片文件。通过将文件数据量较大的图片文件中每帧图像转换为数据量较小的YUV数据,再对YUV数据编码得到码流数据,极大的缩小了图片文件在传输过程中的文件数据量,降低了带宽成本;通过对全局颜色表信息或初始化颜色表信息进行训练,生成RGB数据的局部颜色表信息,有效的减少了图像的失真;通过采用G分量获取最接近的源RGB值,并在颜色表信息中进行小范围的颜色索引搜索,无需遍历整个颜色表信息,降低了对局部颜色表信息训练的复杂度,进一步提升了图片文件的编码效率。
请参见图29,为本发明实施例提供了一种图像处理系统的结构示意图。如图29所示,该系统可以包括发送端1和接收端2,发送端1与接收端2可以通过网络相互连接,其中,所述发送端1具体为图23所示实施例的图片文件处理设备1,所述接收端2具体为图26所示实施例的图片文件处理设备2;或者,所述发送端1具体为图25所示实施例的图片文件处理设备1000,所述接收端2具体为图28所示实施例的图片文件处理设备2000。
所述发送端1,用于根据原始图片文件生成所述图片文件的图片头信息数据段,将图片文件中每帧图像转换为YUV数据,对所述YUV数据进行编码以生成码流数据,将所述压缩图像数据发送至接收端2,所述压缩图像数据包含所述图片头信息数据段和所述码流数据;
所述接收端2,用于接收所述发送端1发送的所述压缩图像数据,解析所述压缩图像数据以获取所述图片头信息数据段和所述码流数据,根据所述码流数据生成所述YUV数据,并基于所述图片头信息数据段对所述YUV数据进行处理以生成所述图片文件。
在一个实施例中,所述发送端1用于根据原始图片文件生成图片文件的图片头信息数据段,并将图片文件中每帧图像转换为YUV数据时,具体用于:
解码原始图片文件以生成图片文件的图片头信息数据段以及图片文件中每帧图像对应的RGB数据,所述图片头信息数据段包括延时信息、总帧数、全局颜色表信息;
采用颜色空间转换公式将所述RGB数据转换为YUV数据。
在一个实施例中,所述编码包括预测编码、变换编码、量化编码和熵编码。
在一个实施例中,所述发送端1用于对所述YUV数据进行编码以生成码流数据时,具体用于:
采用配置参数对所述YUV数据进行编码以生成码流数据,所述配置参数为对所述YUV数据进行编码的参数,所述配置参数包括标清模式参数、高清模式参数和无损模式参数中的任一种。
在一个实施例中,所述发送端1用于对所述YUV数据进行编码以生成码流数据时,具体用于:
配置编码器复杂度对所述YUV数据进行编码以生成码流数据,所述编码器复杂度为根据所述发送端1的硬件性能所决定的编码的精细度参数。
在一个实施例中,所述接收端2用于根据所述码流数据生成所述YUV数据,并基于所述图片头信息数据段对所述YUV数据进行处理以生成所述图片文件时,具体用于:
解码所述码流数据以生成所述YUV数据,并采用颜色空间转换公式将所述YUV数据转换为RGB数据;
采用所述全局颜色表信息对RGB数据中的各像素点的RGB值进行更新;
采用所述延时时间和所述总帧数将更新后的所述RGB数据进行图像编码以生成所述图片文件。
在一个实施例中,所述接收端2用于采用所述全局颜色表信息对所述RGB数据中的各像素点的RGB值进行更新时,具体用于:
当所述RGB数据为所述图片文件中的第一帧图像,且所述图片头信息数据段中存在全局颜色表信息时,采用RGB数据中的各像素点的RGB值对所述全局颜色表信息进行训练以生成RGB数据的局部颜色表信息,并采用RGB数据的局部颜色表信息对各像素点的RGB值进行更新。
在一个实施例中,所述接收端2用于采用RGB数据中的各像素点的RGB值对所述全局颜色表信息进行训练以生成RGB数据的局部颜色表信息时,具体用于:
将所述全局颜色表信息中的至少一个源RGB值按照G分量的预设排序方式进行排序,以生成训练颜色表信息;
在所述训练颜色表信息中获取G分量与RGB数据中当前像素点的G分量最接近的第一源RGB值,并获取第一源RGB值的第一颜色索引;
在训练颜色表信息中以第一颜色索引为中心的预设范围内,获取与当前像素点的RGB值误差最小的第二源RGB值,并获取第二源RGB值的第二颜色索引;
将所述第二源RGB值替换为所述当前像素点的RGB值,并采用预设权重值和所述当前像素点的RGB值,对训练颜色表信息中以第二颜色索引为中心的预设范围内的多个源RGB值进行修改;
当所述当前像素点不为RGB数据中的最后一个像素点时,获取修改后得到的所述训练颜色表信息,将当前像素点的下一个像素点作为当前像素点,并转入执行在所述训练颜色表信息中获取G分量与RGB数据中当前像素点的G分量最接近的第一源RGB值;
当所述当前像素点为RGB数据中的最后一个像素点时,获取修改后得到的所述训练颜色表信息,并将所述训练颜色表信息确定为RGB数据的局部颜色表信息。
在一个实施例中,所述接收端2用于采用所述全局颜色表信息对RGB数据中的各像素点的RGB值进行更新时,具体用于:
当所述RGB数据为图片文件中的第一帧图像,且所述图片头信息数据段中不存在全局颜色表信息时,采用RGB数据中的各像素点的RGB值对初始化颜色表信息进行训练以生成RGB数据的局部颜色表信息,并采用RGB数据的局部颜色表信息对各像素点的RGB值进行更新。
在一个实施例中,所述接收端2用于采用RGB数据中的各像素点的RGB值对初始化颜色表信息进行训练以生成RGB数据的局部颜色表信息时,具体用于:
在初始化颜色表信息中获取G分量与RGB数据中当前像素点的G分量最接近的第三源RGB值,并获取第三源RGB值的第三颜色索引;
在初始化颜色表信息中以第三颜色索引为中心的预设范围内,获取与当前像素点的RGB值误差最小的第四源RGB值,并获取第四源RGB值的第四颜色索引;
将所述第四源RGB值替换为所述当前像素点的RGB值,并采用预设权重值和所述当前像素点的RGB值,对初始化颜色表信息中以第四颜色索引为中心的预设范围内的多个源RGB值进行修改;
当所述当前像素点不为RGB数据中的最后一个像素点时,获取修改后得到的所述初始化颜色表信息,将当前像素点的下一个像素点作为当前像素点,并转入执行在所述初始化颜色表信息中获取G分量与RGB数据中当前像素点的G分量最接近的第三源RGB值;
当所述当前像素点为RGB数据中的最后一个像素点时,获取修改后得到的所述训练颜色表信息,并将所述初始化颜色表信息确定为RGB数据的局部颜色表信息。
在一个实施例中,所述接收端2用于采用所述全局颜色表信息对RGB数据中的各像素点的RGB值进行更新时,具体用于:
当所述RGB数据为图片文件中的第N帧图像时,采用RGB数据中的各像素点的RGB值对第N-1帧RGB数据的局部颜色表信息进行训练以生成RGB数据的局部颜色表信息,并采用RGB数据的局部颜色表信息对各像素点的RGB值进行更新,N为大于1且小于或等于总帧数的正整数。
在一个实施例中,所述接收端2用于采用RGB数据中的各像素点的RGB值对第N-1帧RGB数据的局部颜色表信息进行训练以生成RGB数据的局部颜色表信息时,具体用于:
将第N-1帧RGB数据的局部颜色表信息中的至少一个源RGB值按照G分量的预设排序方式进行排序,以生成训练颜色表信息;
在所述训练颜色表信息中获取G分量与RGB数据中当前像素点的G分量最接近的第五源RGB值,并获取第五源RGB值的第五颜色索引;
在训练颜色表信息中以第五颜色索引为中心的预设范围内,获取与当前像素点的RGB值误差最小的第六源RGB值,并获取第六源RGB值的第六颜色索引;
将所述第六源RGB值替换为所述当前像素点的RGB值,并采用预设权重值和所述当前像素点的RGB值,对所述训练颜色表信息中以第六颜色索引为中心的预设范围内的多个源RGB值进行修改;
当所述当前像素点不为RGB数据中的最后一个像素点时,获取修改后得到的所述训练颜色表信息,将当前像素点的下一个像素点作为当前像素点,并转入执行在所述训练颜色表信息中获取G分量与RGB数据中当前像素点的G分量最接近的第五源RGB值;
当所述当前像素点为RGB数据中的最后一个像素点时,获取修改后得到的所述训练颜色表信息,并将所述训练颜色表信息确定为RGB数据的局部颜色表信息。
在一个实施例中,所述图片文件为GIF图像。
在本发明实施例中,根据原始的图片文件生成图片文件的图片头信息数据段,将图片文件中每帧图像转换为YUV数据,再基于YUV数据进行编码后得到的码流数据以及图片头信息数据段生成压缩图像数据,并将压缩图像数据进行传输,在接收到压缩图像数据时,可以根据码流数据生成YUV数据,再基于图片头信息数据段对YUV数据进行处理生成图片文件。通过将文件数据量较大的图片文件中每帧图像转换为数据量较小的YUV数据,再对YUV数据编码得到码流数据,极大的缩小了图片文件在传输过程中的文件数据量,降低了带宽成本;通过灵活控制配置参数的使用以及配置编码器复杂度,可以满足不同的业务场景以及不同的机器性能,优化图片文件的编码效率;通过对全局颜色表信息或初始化颜色表信息进行训练,生成RGB数据的局部颜色表信息,有效的减少了图像的失真;通过采用G分量获取最接近的源RGB值,并在颜色表信息中进行小范围的颜色索引搜索,无需遍历整个颜色表信息,降低了对局部颜色表信息训练的复杂度,进一步提升了图片文件的编码效率。
下面将结合附图30-附图32,对本发明实施例提供的图片文件处理设备进行详细介绍。需要说明的是,附图30-附图32所示的图片文件处理设备,用于执行本发明图14-图16所示实施例的方法,为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明图14-图16所示的实施例。
请参见图30,为本发明实施例提供了又一种图片文件处理设备的结构示意图。如图30所示,本发明实施例的所述图片文件处理设备3可以包括:图像转换单元31、图像压缩单元32、码流生成单元33、信息获取单元34和图像编码单元35。
图像转换单元31,用于根据原始图片文件生成图片文件的图片头信息数据段,并将图片文件中每帧图像转换为YUV数据;
具体实现中,所述图像转换单元31可以解码原始图片文件以生成所述图片文件的图片头信息数据段,所述图片文件可以是由开发人员完成对图像制作后所输入的图像,也可以是从其它端接收的图像,所述图片头信息数据段可以包括所述图片文件的延时信息、总帧数等,所述延时信息记录有所述图片文件中每帧图像之间的播放间隔时间,所述总帧数为所述图片文件中的图像帧数,可以理解的是,所述图片头信息数据段中还可以包括所述图片文件的全局颜色表信息,所述全局颜色表信息包含每帧图像的每个像素点的RGB值,针对一些图片文件,其包含的所有图像均共用一个全局颜色表信息,而对于另外一些图片文件,其每帧图像都存在各自的局部颜色表信息,因此若所述图片文件中存在全局颜色表信息,则获取该全局颜色表信息,若所述图片文件中仅存在局部颜色表信息,则不对局部颜色表信息进行获取。所述图像转换单元31进一步将所述图片文件中每帧图像转换为YUV数据。
具体的,请一并参见图31,为本发明实施例提供了另一种图像转换单元的结构示意图。如图31所示,所述图像转换单元31可以包括:
图像解码子单元311,用于解码原始图片文件以生成图片文件的图片头信息数据段以及图片文件中每帧图像对应的RGB数据;
具体实现中,所述图像解码子单元311可以解码原始图片文件,可以理解的是,所述全局颜色表信息包含所述图片文件中每帧图像的每个像素点的RGB值,针对一些图片文件,其包含的所有图像均共用一个全局颜色表信息,而对于另外一些图片文件,其每帧图像都存在各自的局部颜色表信息,所述图像解码子单元311可以进一步判断所述图片文件中的颜色表信息是否为所述图片文件的全局颜色表信息。
当判断所述图片文件的颜色表信息为所述图片文件的全局颜色表信息时,所述图像解码子单元311可以生成包含延时信息、总帧数、全局颜色表信息等的图片头信息数据段,所述延时信息记录有所述图片文件中每帧图像之间的播放间隔时间,所述总帧数为所述图片文件中的图像帧数,同时还生成所述图片文件中每帧图像对应的RGB数据。
当判断所述图片文件的颜色表信息不为所述图片文件的全局颜色表信息时,所述图像解码子单元311可以生成包含延时信息、总帧数等的图片头信息数据段,所述延时信息记录有所述图片文件中每帧图像之间的播放间隔时间,所述总帧数为所述图片文件中的图像帧数,同时还生成所述图片文件中每帧图像对应的RGB数据。
图像转换子单元312,用于采用颜色空间转换公式将所述RGB数据转换为YUV数据;
具体实现中,所述图像转换子单元312可以采用颜色空间转换公式将所述RGB数据转换为YUV数据,在将RGB数据转换为YUV数据的过程中,可以选择亮度分量的值域范围为[16,235],色度分量的值域范围为[16,240]的颜色空间转换公式,由于至于范围的缩减,可以极大的减小转换后YUV数据的数据量,但导致的失真程度较大;还可以选择亮度分量和色度分量的值域范围均为[0,255]颜色空间转换公式,可以减小转换后YUV数据的失真,但转换后YUV数据的数据量较大,亮度分量和色度分量的值域范围均为[0,255]的颜色空间转换公式为:
Y=0.299R+0.587G+0.114B;
U=-0.1687R-0.3313G+0.5B+128;
V=0.5R-0.4187G-0.0813B+128;
其中,YUV是一种视频数据格式,Y为亮度分量,UV为色度分量,通过颜色空间转换公式可以对每帧图像的像素点进行光栅扫描处理,将每帧RGB数据转换为对应的YUV数据。
图像压缩单元32,用于对所述YUV数据进行编码以生成码流数据;
具体实现中,所述图像压缩单元32可以进一步对所述YUV数据进行编码处理,生成码流数据,所述编码可以包括预测编码、变换编码、量化编码和熵编码,例如:所述图像压缩单元32可以采用IPPP模式对所述YUV数据进行压缩,第一帧YUV数据为I帧,I帧即为帧内预测帧,其余帧YUV数据为P帧,P帧即为帧间预测帧,可以有效的压缩图片文件的文件数据量,还可以采用固定QP的方式来稳定不同帧之间的质量等。熵编码则可以包括哈夫曼编码、算数编码等。
码流生成单元33,用于存储压缩图像数据;
具体实现中,所述码流生成单元33可以生成压缩图像数据,所述码流生成单元33可以对所述压缩图像数据进行存储,所述压缩图像数据包含所述图片头信息数据段和所述码流数据。
信息获取单元34,用于解析所述压缩图像数据以获取所述图片头信息数据段和所述码流数据;
具体实现中,所述信息获取单元34可以对所述压缩图像数据进行解析处理,以获取所述压缩图像数据中的所述图片头信息数据段和所述码流数据。
图像编码单元35,用于根据所述码流数据生成所述YUV数据,并基于所述图片头信息数据段对所述YUV数据进行处理以生成所述图片文件;
具体实现中,所述图像编码单元35解码所述码流数据以生成所述YUV数据,并基于图片头信息数据段中的时延信息、总帧数、全局颜色表信息等对所述YUV数据进行编码处理以生成所述图片文件。
具体的,请一并参见图32,为本发明实施例提供了另一种图像编码单元的结构示意图。如图32所示,所述图像编码单元35可以包括:
图像转换子单元351,用于解码所述码流数据以生成所述YUV数据,并采用颜色空间转换公式将所述YUV数据转换为RGB数据;
具体实现中,所述图像转换子单元351解码所述码流数据以生成所述YUV数据,并可以采用颜色空间转换公式将所述YUV数据转换为RGB数据,进一步的,所述图像转换子单元351需要依据亮度分量的值域范围确定所采用的颜色空间转换公式,可以理解的是,针对YUV444模式下的YUV数据,可以选择亮度分量的值域范围为[16,235],色度分量的值域范围为[16,240]的颜色空间转换公式,也可以选择亮度分量和色度分量的值域范围均为[0,255]颜色空间转换公式,具体可以依据上述实施例中在将RGB数据转换为YUV数据时选择的颜色空间转换公式对应。需要说明的是,色度包括Cb和Cr两种色差信号中的任一种的样值矩阵和单个样值。两种色差信号需要分别进行上采样处理,两者进行上采样处理的方式均相同,其中,Cb对应YUV中的U,Cr对应YUV中的V。
若亮度分量的值域范围为[16,235],色度分量的值域范围为[16,240],则颜色空间转换公式为:
R=Clip3(0,255,(298*Y+409*(Cr–128)+128)>>8);
G=Clip3(0,255,(298*Y–100*(Cb-128)+208*(Cr-128)+128)>>8);
B=Clip3(0,255,(298*Y+516*(Cb-128)+128)>>8);
其中,“+128”用于对R值、B值、G值进行四舍五入,“>>8”表示除以2的8次方。
若亮度分量和色度分量的值域范围均为[0,255],则颜色空间转换公式为:
R=Clip3(0,255,Y+(359*(Cr–128)+128)>>8);
G=Clip3(0,255,Y–(88*(Cb-128)+183*(Cr-128)+128)>>8);
B=Clip3(0,255,Y+(454*(Cb-128)+128)>>8);
其中,“+128”用于对R值、B值、G值进行四舍五入,“>>8”表示除以2的8次方。
通过颜色空间转换公式可以对每帧图像的像素点进行光栅扫描处理,将每帧YUV数据转换为对应的RGB数据。
像素点更新子单元352,用于采用所述全局颜色表信息对RGB数据中的各像素点的RGB值进行更新;
具体实现中,所述像素点更新子单元352判断所述图片头信息数据段中是否包含所述图片文件的全局颜色表信息,由于之前对所述YUV数据进行过编码处理,因此导致由所述YUV数据转换的RGB数据存在失真的情况,所述图片文件处理设备3可以采用所述全局颜色表信息对所述RGB数据中的各像素点的RGB值进行更新,可以理解的是,所述RGB数据中可以包含一个或多个像素点,当所述RGB数据中仅存在一个像素点时,可以采用所述全局颜色表信息对所述像素点的RGB值进行更新,当所述RGB数据中存在多个像素点时,可以采用所述全局颜色表信息对多个像素点中各像素点的RGB值进行更新,所述像素点更新子单元352需要重新对所述全局颜色表信息进行训练,以生成符合所述RGB数据的局部颜色表信息,而对于不存在全局颜色表信息的情况,所述像素点更新子单元352可以生成初始化颜色表信息,并通过对所述初始化颜色表信息进行训练,以生成符合所述RGB数据的局部颜色表信息。
在第一种实施方式中,针对图片头信息数据段中存在全局颜色表信息的情况,当所述RGB数据为所述图片文件中的第一帧图像,所述像素点更新子单元352可以采用所述RGB数据中的各像素点的RGB值对所述全局颜色表信息进行训练以生成所述RGB数据的局部颜色表信息,并采用所述RGB数据的局部颜色表信息对所述各像素点的RGB值进行更新。
进一步的,当所述RGB数据为所述图片文件中的第一帧图像,且所述图片头信息数据段中存在全局颜色表信息时,所述像素点更新子单元352可以将所述全局颜色表信息中的至少一个源RGB值按照G分量的预设排序方式(例如:升序、降序等)进行排序,以生成训练颜色表信息,请一并参见图3,如图3所示,所述全局颜色表信息中包括颜色索引和源RGB值,例如:5,(8,1,10)、6,(8,9,8)、7,(1,7,6)、8,(10,8,6)、9,(5,8,5)、10,(9,10,1),按照G分量的升序排序可以生成训练颜色表信息,例如:5,(8,1,10)、6,(1,7,6)、7,(5,8,5)、8,(10,8,6)、9,(8,9,8)、10,(9,10,1)。
所述像素点更新子单元352在所述训练颜色表信息中获取G分量与所述RGB数据中当前像素点的G分量最接近的第一源RGB值,并获取所述第一源RGB值的第一颜色索引,可以理解的是,所述像素点更新子单元352可以采用所述当前像素点的G分量遍历所述训练颜色表信息中的源RGB值,获取G分量最为接近的第一源RGB值,请一并参见图4,假设第一帧RGB数据中有四个像素点,当前像素点为所述RGB数据中的第一个像素点,所述当前像素点的RGB值为(9,9,9),可以在所述训练颜色表信息中查找到(8,9,8)的G分量与当前像素点的RGB值中的G分量最接近,则将(8,9,8)确定为第一源RGB值,并获取所述第一源RGB值的第一颜色索引“9”。
所述像素点更新子单元352在所述训练颜色表信息中以所述第一颜色索引为中心的预设范围内,获取与所述当前像素点的RGB值误差最小的第二源RGB值,并获取所述第二源RGB值的第二颜色索引,可以理解的是,所述像素点更新子单元352可以以所述第一颜色索引为中心,在所述第一颜色索引的前后预设范围内获取多个源RGB值,并分别计算所述第一源RGB值以及所述多个源RGB值与所述当前像素点的RGB值的误差,并将多个源RGB值中误差最小的源RGB值确定为第二源RGB值,依据上述举例,假设预设范围为正负1的范围,则以“9”为中心,获取(10,8,6)和(9,10,1)两个源RGB值,并分别计算(10,8,6)、(8,9,8)和(9,10,1)三者与(9,9,9)的误差值,其中颜色索引“8”的误差值为|9-10|+|9-8|+|9-6|=5,颜色索引“9”的误差值为|9-8|+|9-9|+|9-8|=2,颜色索引“10”的误差值为|9-9|+|9-10|+|9-1|=9,则确定源RGB值(8,9,8)为所述第二源RGB值,并获取第二源RGB值的第二颜色索引“9”。可以理解的是,上述获取的第一源RGB值和第一颜色索引存在与第二源RGB值和第二颜色索引相同的情况,也可以存在不相同的情况,具体由实际执行过程确定。
所述像素点更新子单元352将所述第二源RGB值替换为所述当前像素点的RGB值,并采用预设权重值和所述当前像素点的RGB值,对所述训练颜色表信息中以所述第二颜色索引为中心的预设范围内的多个源RGB值进行修改,请一并参见图5,依据上述举例,所述第二源RGB值为(8,9,8),则将(8,9,8)替换为当前像素点的RGB值(9,9,9),同时可以依据预设权重值以及当前像素点的RGB值对以所述第二颜色索引为中心的预设范围内的多个源RGB值进行修改,假设预设范围为正负1,则需要对(10,8,6)和(9,10,1)两个源RGB值进行修改,所述预设权重值可以为动态的权重值,对于距离所述第二颜色索引越近源RGB值,其受到当前像素点的RGB值的影响越大,假设当前权重值的分配为2:8,则采用(9,9,9)对(10,8,6)进行修改,例如,R分量=9*0.8+10*0.2=9.2,G分量=9*0.8+8*0.2=8.8,B分量=9*0.8+6*0.2=8.4,对以上结果采用四舍五入的方式,确定颜色索引“8”的源RGB值由(10,8,6)修改为(9,9,8),同理,颜色索引“10”的源RGB值由(9,10,1)修改为(9,9,7)。
当所述当前像素点不为所述RGB数据中的最后一个像素点时,例如当前像素点为图4或图5中所示的RGB数据中的第一个像素点时,所述图片文件处理设备3获取修改后得到的所述训练颜色表信息,将所述当前像素点的下一个像素点作为当前像素点,并转入执行在所述训练颜色表信息中获取G分量与所述RGB数据中当前像素点的G分量最接近的第一源RGB值,例如:将所述RGB数据中的第二个像素点作为当前像素点,对修改后得到的所述训练颜色表信息再一次进行训练。具体的训练过程可以参见上述训练过程的描述,在此不进行赘述。
当所述当前像素点为所述RGB数据中的最后一个像素点时,例如当前像素点为图4或图5中所示的RGB数据中的第四个像素点时,所述像素点更新子单元352获取修改后得到的所述训练颜色表信息,并将所述训练颜色表信息确定为所述RGB数据的局部颜色表信息。
所述像素点更新子单元352可以采用所述RGB数据的局部颜色表信息对所述各像素点的RGB值进行更新,进一步的,所述像素点更新子单元352可以在所述RGB数据的局部颜色表信息中依次获取与所述各像素点相同或误差最小的源RGB值分别替换所述各像素点的RGB值,优选的,所述像素点更新子单元352可以将与所述各像素点相同或误差最小的源RGB值对应的颜色索引分别替换所述各像素点的RGB值,请一并参见图6,依据上述举例,所述RGB数据的第一个像素点的RGB值为(9,9,9),在所述局部颜色表信息中与(9,9,9)误差最小的为(9,9,8),则将(9,9,8)对应的颜色索引“8”替换所述第一个像素点的RGB值,同理,第二个像素点的颜色索引为“10”,第三个像素点的颜色索引为“9”,第四个像素点的颜色索引为“6”。
在第二种实施方式中,针对图片头信息数据段中不存在全局颜色表信息的情况,当所述RGB数据为所述图片文件中的第一帧图像,所述像素点更新子单元352可以采用所述RGB数据中的各像素点的RGB值对初始化颜色表信息进行训练以生成所述RGB数据的局部颜色表信息,并采用所述RGB数据的局部颜色表信息对所述各像素点的RGB值进行更新。
进一步的,当所述RGB数据为所述图片文件中的第一帧图像,且所述图片头信息数据段中不存在全局颜色表信息时,所述像素点更新子单元352可以生成一个初始化颜色表信息,例如:(0,0,0)、(1,1,1)、(2,2,2)、……、(255,255,255),所述图片文件处理设备3在初始化颜色表信息中获取G分量与所述RGB数据中当前像素点的G分量最接近的第三源RGB值,并获取所述第三源RGB值的第三颜色索引,所述像素点更新子单元352在所述初始化颜色表信息中以所述第三颜色索引为中心的预设范围内,获取与所述当前像素点的RGB值误差最小的第四源RGB值,并获取所述第四源RGB值的第四颜色索引,所述像素点更新子单元352将所述第四源RGB值替换为所述当前像素点的RGB值,并采用预设权重值和所述当前像素点的RGB值,对所述初始化颜色表信息中以所述第四颜色索引为中心的预设范围内的多个源RGB值进行修改,当所述当前像素点不为所述RGB数据中的最后一个像素点时,所述像素点更新子单元352获取修改后得到的所述初始化颜色表信息,将所述当前像素点的下一个像素点作为当前像素点,并转入执行在所述初始化颜色表信息中获取G分量与所述RGB数据中当前像素点的G分量最接近的第三源RGB值,当所述当前像素点为所述RGB数据中的最后一个像素点时,所述像素点更新子单元352获取修改后得到的所述训练颜色表信息,并将所述初始化颜色表信息确定为所述RGB数据的局部颜色表信息,所述像素点更新子单元352可以采用所述RGB数据的局部颜色表信息对所述各像素点的RGB值进行更新。需要说明的是,第二种实施方式中对初始化颜色表信息进行训练以及采用RGB数据的局部颜色表信息对各像素点的RGB值进行更新的过程均可以参见上述第一种实施方式的执行过程,在此不进行赘述。
在第三种实施方式中,针对所述RGB数据不为所述图片文件中的第一帧图像,即所述RGB数据为所述图片文件中的第N帧图像时,其中,N为大于1且小于或等于所述总帧数的正整数,所述像素点更新子单元352可以采用所述RGB数据中的各像素点的RGB值对第N-1帧RGB数据的局部颜色表信息进行训练以生成所述RGB数据的局部颜色表信息,并采用所述RGB数据的局部颜色表信息对所述各像素点的RGB值进行更新。
进一步的,当所述RGB数据为所述图片文件中的第N帧图像时,所述像素点更新子单元352可以将第N-1帧RGB数据的局部颜色表信息中的至少一个源RGB值按照G分量的预设排序方式进行排序,以生成训练颜色表信息,所述像素点更新子单元352在所述训练颜色表信息中获取G分量与所述RGB数据中当前像素点的G分量最接近的第五源RGB值,并获取所述第五源RGB值的第五颜色索引,所述像素点更新子单元352在所述训练颜色表信息中以所述第五颜色索引为中心的预设范围内,获取与所述当前像素点的RGB值误差最小的第六源RGB值,并获取所述第六源RGB值的第六颜色索引,所述像素点更新子单元352将所述第六源RGB值替换为所述当前像素点的RGB值,并采用预设权重值和所述当前像素点的RGB值,对所述训练颜色表信息中以所述第六颜色索引为中心的预设范围内的多个源RGB值进行修改,当所述当前像素点不为所述RGB数据中的最后一个像素点时,所述像素点更新子单元352获取修改后得到的所述训练颜色表信息,将所述当前像素点的下一个像素点作为当前像素点,并转入执行在所述训练颜色表信息中获取G分量与所述RGB数据中当前像素点的G分量最接近的第五源RGB值,当所述当前像素点为所述RGB数据中的最后一个像素点时,所述像素点更新子单元352获取修改后得到的所述训练颜色表信息,并将所述训练颜色表信息确定为所述RGB数据的局部颜色表信息,所述像素点更新子单元352可以采用所述RGB数据的局部颜色表信息对所述各像素点的RGB值进行更新。需要说明的是,第三种实施方式中对训练颜色表信息进行训练以及采用RGB数据的局部颜色表信息对各像素点的RGB值进行更新的过程均可以参见上述第一种实施方式的执行过程,在此不进行赘述。
需要说明的是,上述采用G分量作为对颜色表信息进行训练的引导仅为举例,本发明实施例同样可以采用R分量或者B分量作为对颜色表信息进行训练的引导,执行过程均可以参见上述内容中的描述,在此不进行赘述。上述第一源RGB值、第二源RGB值、第三源RGB值、第四源RGB值、第五源RGB值、第六源RGB值以及第一颜色索引、第二颜色索引、第三颜色索引、第四颜色索引、第五颜色索引、第六颜色索引均可以表示相同的源RGB值和颜色索引的含义,采用此方式进行命名仅为了区分不同的执行场景,例如:当所述RGB数据为所述图片文件中的第一帧图像,且所述图片头信息数据段中存在全局颜色表信息时;当所述RGB数据为所述图片文件中的第一帧图像,且所述图片头信息数据段中不存在全局颜色表信息时;当所述RGB数据为所述图片文件中的第N帧图像时,以上三种执行场景。
图像编码子单元353,用于采用所述延时时间和所述总帧数将更新后的所述RGB数据进行图像编码以生成所述图片文件;
具体实现中,所述图像编码子单元353采用所述延时时间和所述总帧数将更新后的所述RGB数据进行图像编码以生成所述图片文件,优选的,所述图像编码子单元353可以基于所述延时时间和所述总帧数,并采用LZW对所述RGB数据中各像素点的颜色索引进行图像编码,生成所述图片文件,所述图片文件处理设备3可以对所述图片文件进行存储或者展示。可以理解的是,所述图像编码的方式具体由图片文件的图像格式决定,例如:若需要生成的图片文件为GIF图像,则所述图像编码可以为GIF编码等。
在本发明实施例中,根据原始的图片文件生成图片文件的图片头信息数据段,将图片文件中每帧图像转换为YUV数据,再基于YUV数据进行编码后得到的码流数据以及图片头信息数据段生成压缩图像数据,并将压缩图像数据进行传输,在接收到压缩图像数据时,可以根据码流数据生成YUV数据,再基于图片头信息数据段对YUV数据进行处理生成图片文件。通过将文件数据量较大的图片文件中每帧图像转换为数据量较小的YUV数据,再对YUV数据编码得到码流数据,极大的缩小了图片文件在传输过程中的文件数据量,降低了带宽成本;通过灵活控制配置参数的使用以及配置编码器复杂度,可以满足不同的业务场景以及不同的机器性能,优化图片文件的编码效率;通过对全局颜色表信息或初始化颜色表信息进行训练,生成RGB数据的局部颜色表信息,有效的减少了图像的失真;通过采用G分量获取最接近的源RGB值,并在颜色表信息中进行小范围的颜色索引搜索,无需遍历整个颜色表信息,降低了对局部颜色表信息训练的复杂度,进一步提升了图片文件的编码效率。
请参见图33,为本发明实施例提供了又一种图片文件处理设备的结构示意图。如图33所示,所述图片文件处理设备3000可以包括:至少一个处理器3001,例如CPU,至少一个网络接口3004,用户接口3003,存储器3005,至少一个通信总线3002。其中,通信总线3002用于实现这些组件之间的连接通信。其中,用户接口3003可以包括显示屏(Display)、键盘(Keyboard),可选用户接口3003还可以包括标准的有线接口、无线接口。网络接口3004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器3005可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器3005可选的还可以是至少一个位于远离前述处理器3001的存储装置。如图33所示,作为一种计算机存储介质的存储器3005中可以包括操作系统、网络通信模块、用户接口模块以及图像处理应用程序。
在图33所示的图片文件处理设备3000中,网络接口3004主要用于分布式服务设备中的功能模块连接,与所述功能模块进行数据通信;而用户接口3003主要用于为用户提供输入的接口,获取用户输入的数据;而处理器3001可以用于调用存储器3005中存储的图像处理应用程序,并具体执行以下步骤:
根据原始图片文件生成所述图片文件的图片头信息数据段,并将图片文件中每帧图像转换为YUV数据;
对所述YUV数据进行编码以生成码流数据;
存储压缩图像数据,所述压缩图像数据包含所述图片头信息数据段和所述码流数据;
解析所述压缩图像数据以获取所述图片头信息数据段和所述码流数据;
解码所述码流数据以生成所述YUV数据,并基于所述图片头信息数据段对所述YUV数据进行编码处理以生成所述图片文件。
在一个实施例中,所述处理器3001在执行根据原始图片文件生成所述图片文件的图片头信息数据段,并将图片文件中每帧图像转换为YUV数据时,具体执行以下步骤:
解码原始图片文件以生成图片文件的图片头信息数据段以及图片文件中每帧图像对应的RGB数据,所述图片头信息数据段包括延时信息、总帧数、全局颜色表信息;
采用颜色空间转换公式将所述RGB数据转换为YUV数据。
在一个实施例中,所述编码包括预测编码、变换编码、量化编码和熵编码。
在一个实施例中,所述处理器3001在执行对所述YUV数据进行编码以生成码流数据时,具体执行以下步骤:
采用配置参数对所述YUV数据进行编码以生成码流数据,所述配置参数为对所述YUV数据进行编码的参数,所述配置参数包括标清模式参数、高清模式参数和无损模式参数中的任一种。
在一个实施例中,所述处理器3001在执行对所述YUV数据进行编码以生成码流数据时,具体执行以下步骤:
配置编码器复杂度对所述YUV数据进行编码以生成码流数据,所述编码器复杂度为根据所述发送端的硬件性能所决定的编码的精细度参数。
在一个实施例中,所述处理器3001在执行解码所述码流数据以生成所述YUV数据,并基于所述图片头信息数据段对所述YUV数据进行编码处理以生成所述图片文件时,具体执行以下步骤:
解码所述码流数据以生成所述YUV数据,并采用颜色空间转换公式将所述YUV数据转换为RGB数据;
采用所述全局颜色表信息对所述RGB数据中的各像素点的RGB值进行更新;
采用所述延时时间和所述总帧数将更新后的所述RGB数据进行图像编码以生成所述图片文件。
在一个实施例中,所述处理器3001在执行采用所述全局颜色表信息对RGB数据中的各像素点的RGB值进行更新时,具体执行以下步骤:
当所述RGB数据为所述图片文件中的第一帧图像,且所述图片头信息数据段中存在全局颜色表信息时,采用RGB数据中的各像素点的RGB值对所述全局颜色表信息进行训练以生成RGB数据的局部颜色表信息,并采用RGB数据的局部颜色表信息对各像素点的RGB值进行更新。
在一个实施例中,所述处理器3001在执行采用RGB数据中的各像素点的RGB值对所述全局颜色表信息进行训练以生成RGB数据的局部颜色表信息时,具体执行以下步骤:
将所述全局颜色表信息中的至少一个源RGB值按照G分量的预设排序方式进行排序,以生成训练颜色表信息;
在所述训练颜色表信息中获取G分量与所述RGB数据中当前像素点的G分量最接近的第一源RGB值,并所述第一源RGB值的第一颜色索引;
所述接收端在训练颜色表信息中以第一颜色索引为中心的预设范围内,获取与当前像素点的RGB值误差最小的第二源RGB值,并获取第二源RGB值的第二颜色索引;
将所述第二源RGB值替换为所述当前像素点的RGB值,并采用预设权重值和所述当前像素点的RGB值,对训练颜色表信息中以第二颜色索引为中心的预设范围内的多个源RGB值进行修改;
当所述当前像素点不为RGB数据中的最后一个像素点时,获取修改后得到的所述训练颜色表信息,将当前像素点的下一个像素点作为当前像素点,并转入执行在所述训练颜色表信息中获取G分量与RGB数据中当前像素点的G分量最接近的第一源RGB值;
当所述当前像素点为RGB数据中的最后一个像素点时,获取修改后得到的所述训练颜色表信息,并将所述训练颜色表信息确定为RGB数据的局部颜色表信息。
在一个实施例中,所述处理器3001在执行采用所述全局颜色表信息对RGB数据中的各像素点的RGB值进行更新时,具体执行以下步骤:
当所述RGB数据为图片文件中的第一帧图像,且所述图片头信息数据段中不存在全局颜色表信息时,采用RGB数据中的各像素点的RGB值对初始化颜色表信息进行训练以生成RGB数据的局部颜色表信息,并采用RGB数据的局部颜色表信息对各像素点的RGB值进行更新。
在一个实施例中,所述处理器3001在执行采用RGB数据中的各像素点的RGB值对初始化颜色表信息进行训练以生成RGB数据的局部颜色表信息时,具体执行以下步骤:
在初始化颜色表信息中获取G分量与RGB数据中当前像素点的G分量最接近的第三源RGB值,并获取第三源RGB值的第三颜色索引;
在初始化颜色表信息中以第三颜色索引为中心的预设范围内,获取与当前像素点的RGB值误差最小的第四源RGB值,并获取第四源RGB值的第四颜色索引;
将所述第四源RGB值替换为所述当前像素点的RGB值,并采用预设权重值和所述当前像素点的RGB值,对初始化颜色表信息中以第四颜色索引为中心的预设范围内的多个源RGB值进行修改;
当所述当前像素点不为RGB数据中的最后一个像素点时,获取修改后得到的所述初始化颜色表信息,将当前像素点的下一个像素点作为当前像素点,并转入执行在所述初始化颜色表信息中获取G分量与RGB数据中当前像素点的G分量最接近的第三源RGB值;
当所述当前像素点为RGB数据中的最后一个像素点时,获取修改后得到的所述训练颜色表信息,并将所述初始化颜色表信息确定为RGB数据的局部颜色表信息。
在一个实施例中,所述处理器3001在执行采用所述全局颜色表信息对所述RGB数据中的各像素点的RGB值进行更新时,具体执行以下步骤:
当所述RGB数据为图片文件中的第N帧图像时,采用RGB数据中的各像素点的RGB值对第N-1帧RGB数据的局部颜色表信息进行训练以生成RGB数据的局部颜色表信息,并采用RGB数据的局部颜色表信息对各像素点的RGB值进行更新,N为大于1且小于或等于总帧数的正整数。
在一个实施例中,所述处理器3001在执行采用RGB数据中的各像素点的RGB值对第N-1帧RGB数据的局部颜色表信息进行训练以生成RGB数据的局部颜色表信息时,具体执行以下步骤:
将第N-1帧RGB数据的局部颜色表信息中的至少一个源RGB值按照G分量的预设排序方式进行排序,以生成训练颜色表信息;
在所述训练颜色表信息中获取G分量与所述RGB数据中当前像素点的G分量最接近的第五源RGB值,并获取第五源RGB值的第五颜色索引;
在训练颜色表信息中以第五颜色索引为中心的预设范围内,获取与当前像素点的RGB值误差最小的第六源RGB值,并获取第六源RGB值的第六颜色索引;
将所述第六源RGB值替换为所述当前像素点的RGB值,并采用预设权重值和所述当前像素点的RGB值,对训练颜色表信息中以第六颜色索引为中心的预设范围内的多个源RGB值进行修改;
当所述当前像素点不为RGB数据中的最后一个像素点时,获取修改后得到的所述训练颜色表信息,将当前像素点的下一个像素点作为当前像素点,并转入执行在所述训练颜色表信息中获取G分量与RGB数据中当前像素点的G分量最接近的第五源RGB值;
当所述当前像素点为RGB数据中的最后一个像素点时,获取修改后得到的所述训练颜色表信息,并将所述训练颜色表信息确定为RGB数据的局部颜色表信息。
在一个实施例中,所述压缩图像数据包含所述图片头信息数据段和所述码流数据。
在本发明实施例中,根据原始的图片文件生成图片文件的图片头信息数据段,将图片文件中每帧图像转换为YUV数据,再基于YUV数据进行编码后得到的码流数据以及图片头信息数据段生成压缩图像数据,并将压缩图像数据进行传输,在接收到压缩图像数据时,可以根据码流数据生成YUV数据,再基于图片头信息数据段对YUV数据进行处理生成图片文件。通过将文件数据量较大的图片文件中每帧图像转换为数据量较小的YUV数据,再对YUV数据编码得到码流数据,极大的缩小了图片文件在传输过程中的文件数据量,降低了带宽成本;通过灵活控制配置参数的使用以及配置编码器复杂度,可以满足不同的业务场景以及不同的机器性能,优化图片文件的编码效率;通过对全局颜色表信息或初始化颜色表信息进行训练,生成RGB数据的局部颜色表信息,有效的减少了图像的失真;通过采用G分量获取最接近的源RGB值,并在颜色表信息中进行小范围的颜色索引搜索,无需遍历整个颜色表信息,降低了对局部颜色表信息训练的复杂度,进一步提升了图片文件的编码效率。
下面将结合附图34-附图35,对本发明实施例提供的图片文件处理设备进行详细介绍。需要说明的是,附图34-附图35所示的图片文件处理设备,用于执行本发明图17-图20所示实施例的方法,为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明图17-图20所示的实施例。
请参见图34,为本发明实施例提供了又一种图片文件处理设备的结构示意图。如图34所示,本发明实施例的所述图片文件处理设备4可以包括:像素值获取单元41、颜色表生成单元42和像素值更新单元43。
像素值获取单元41,用于获取对原始图片文件处理生成的RGB数据,获取RGB数据中的各像素点的RGB值;
具体实现中,所述像素值获取单元41可以获取对原始图片文件解码生成的RGB数据,可以理解的是,对所述图片文件进行解码可以生成所述图片文件的图片头信息数据段以及所述图片文件中每帧图像对应的RGB数据,所述图片头信息数据段可以包括所述图片文件的延时信息、总帧数等,所述延时信息记录有所述图片文件中每帧图像之间的播放间隔时间,所述总帧数为所述图片文件中的图像帧数,可以理解的是,所述图片头信息数据段中还可以包括所述图片文件的全局颜色表信息,所述全局颜色表信息包含每帧图像的每个像素点的RGB值,针对一些图片文件,其包含的所有图像均共用一个全局颜色表信息,而对于另外一些图片文件,其每帧图像都存在各自的局部颜色表信息,因此若所述图片文件中存在全局颜色表信息,则获取该全局颜色表信息,若所述图片文件中仅存在局部颜色表信息,则不对局部颜色表信息进行获取。所述RGB数据可以转换为YUV数据,并将YUV数据进行编码生成码流数据,进一步生成包含码流数据和图片头信息数据段的压缩图像数据,所述压缩图像数据可以用于存储,或者传输至图片文件处理设备4进行图片文件的还原,优选的,所述像素值获取单元41获取所述压缩图像数据,可以解析所述压缩图像数据以获取所述图片头信息数据段和所述码流数据,并解码所述码流数据生成YUV数据,进一步将YUV数据转换为RGB数据,所述像素值获取单元41获取所述RGB数据,并获取所述RGB数据中的各像素点的RGB值。
颜色表生成单元42,用于采用各像素点的RGB值对RGB数据的初始颜色表信息进行训练以生成RGB数据的局部颜色表信息;
具体实现中,所述颜色表生成单元42判断所述图片头信息数据段中是否包含所述图片文件的全局颜色表信息,由于之前对所述YUV数据进行过编码处理,因此导致由所述YUV数据转换的RGB数据存在失真的情况,所述颜色表生成单元42可以采用所述全局颜色表信息对所述RGB数据中的各像素点的RGB值进行更新,可以理解的是,所述RGB数据中可以包含一个或多个像素点,当所述RGB数据中仅存在一个像素点时,可以采用所述像素点的RGB值对所述初始颜色表信息进行训练,当所述RGB数据中存在多个像素点时,可以采用多个像素点中各像素点的RGB值对所述初始颜色表信息进行训练,所述颜色表生成单元42需要重新对所述全局颜色表信息进行训练,以生成符合所述RGB数据的局部颜色表信息,而对于不存在全局颜色表信息的情况,所述颜色表生成单元42可以生成初始化颜色表信息,并通过对所述初始化颜色表信息进行训练,以生成符合所述RGB数据的局部颜色表信息。
在第一种实施方式中,针对图片头信息数据段中存在全局颜色表信息的情况,当所述RGB数据为所述图片文件中的第一帧图像,所述颜色表生成单元42可以采用所述RGB数据中的各像素点的RGB值对所述全局颜色表信息进行训练以生成所述RGB数据的局部颜色表信息。
进一步的,当所述RGB数据为所述图片文件中的第一帧图像,且所述图片头信息数据段中存在全局颜色表信息时,所述颜色表生成单元42可以将所述全局颜色表信息中的至少一个源RGB值按照G分量的预设排序方式(例如:升序、降序等)进行排序,以生成训练颜色表信息,请一并参见图3,如图3所示,所述全局颜色表信息中包括颜色索引和源RGB值,例如:5,(8,1,10)、6,(8,9,8)、7,(1,7,6)、8,(10,8,6)、9,(5,8,5)、10,(9,10,1),按照G分量的升序排序可以生成训练颜色表信息,例如:5,(8,1,10)、6,(1,7,6)、7,(5,8,5)、8,(10,8,6)、9,(8,9,8)、10,(9,10,1)。
所述颜色表生成单元42在所述训练颜色表信息中获取G分量与所述RGB数据中当前像素点的G分量最接近的第一源RGB值,并获取所述第一源RGB值的第一颜色索引,可以理解的是,所述颜色表生成单元42可以采用所述当前像素点的G分量遍历所述训练颜色表信息中的源RGB值,获取G分量最为接近的第一源RGB值,请一并参见图4,假设第一帧RGB数据中有四个像素点,当前像素点为所述RGB数据中的第一个像素点,所述当前像素点的RGB值为(9,9,9),可以在所述训练颜色表信息中查找到(8,9,8)的G分量与当前像素点的RGB值中的G分量最接近,则将(8,9,8)确定为第一源RGB值,并获取所述第一源RGB值的第一颜色索引“9”。
所述颜色表生成单元42在所述训练颜色表信息中以所述第一颜色索引为中心的预设范围内,获取与所述当前像素点的RGB值误差最小的第二源RGB值,并获取所述第二源RGB值的第二颜色索引,可以理解的是,所述颜色表生成单元42可以以所述第一颜色索引为中心,在所述第一颜色索引的前后预设范围内获取多个源RGB值,并分别计算所述第一源RGB值以及所述多个源RGB值与所述当前像素点的RGB值的误差,并将多个源RGB值中误差最小的源RGB值确定为第二源RGB值,依据上述举例,假设预设范围为正负1的范围,则以“9”为中心,获取(10,8,6)和(9,10,1)两个源RGB值,并分别计算(10,8,6)、(8,9,8)和(9,10,1)三者与(9,9,9)的误差值,其中颜色索引“8”的误差值为|9-10|+|9-8|+|9-6|=5,颜色索引“9”的误差值为|9-8|+|9-9|+|9-8|=2,颜色索引“10”的误差值为|9-9|+|9-10|+|9-1|=9,则确定源RGB值(8,9,8)为所述第二源RGB值,并获取第二源RGB值的第二颜色索引“9”。可以理解的是,上述获取的第一源RGB值和第一颜色索引存在与第二源RGB值和第二颜色索引相同的情况,也可以存在不相同的情况,具体由实际执行过程确定。
所述颜色表生成单元42将所述第二源RGB值替换为所述当前像素点的RGB值,并采用预设权重值和所述当前像素点的RGB值,对所述训练颜色表信息中以所述第二颜色索引为中心的预设范围内的多个源RGB值进行修改,请一并参见图5,依据上述举例,所述第二源RGB值为(8,9,8),则将(8,9,8)替换为当前像素点的RGB值(9,9,9),同时可以依据预设权重值以及当前像素点的RGB值对以所述第二颜色索引为中心的预设范围内的多个源RGB值进行修改,假设预设范围为正负1,则需要对(10,8,6)和(9,10,1)两个源RGB值进行修改,所述预设权重值可以为动态的权重值,对于距离所述第二颜色索引越近源RGB值,其受到当前像素点的RGB值的影响越大,假设当前权重值的分配为2:8,则采用(9,9,9)对(10,8,6)进行修改,例如,R分量=9*0.8+10*0.2=9.2,G分量=9*0.8+8*0.2=8.8,B分量=9*0.8+6*0.2=8.4,对以上结果采用四舍五入的方式,确定颜色索引“8”的源RGB值由(10,8,6)修改为(9,9,8),同理,颜色索引“10”的源RGB值由(9,10,1)修改为(9,9,7)。
当所述当前像素点不为所述RGB数据中的最后一个像素点时,例如当前像素点为图4或图5中所示的RGB数据中的第一个像素点时,所述颜色表生成单元42获取修改后得到的所述训练颜色表信息,将所述当前像素点的下一个像素点作为当前像素点,并转入执行在所述训练颜色表信息中获取G分量与所述RGB数据中当前像素点的G分量最接近的第一源RGB值,例如:将所述RGB数据中的第二个像素点作为当前像素点,对修改后得到的所述训练颜色表信息再一次进行训练。具体的训练过程可以参见上述训练过程的描述,在此不进行赘述。
当所述当前像素点为所述RGB数据中的最后一个像素点时,例如当前像素点为图4或图5中所示的RGB数据中的第四个像素点时,所述颜色表生成单元42获取修改后得到的所述训练颜色表信息,并将所述训练颜色表信息确定为所述RGB数据的局部颜色表信息。
在第二种实施方式中,针对图片头信息数据段中不存在全局颜色表信息的情况,当所述RGB数据为所述图片文件中的第一帧图像,所述颜色表生成单元42可以采用所述RGB数据中的各像素点的RGB值对初始化颜色表信息进行训练以生成所述RGB数据的局部颜色表信息。
进一步的,当所述RGB数据为所述图片文件中的第一帧图像,且所述图片头信息数据段中不存在全局颜色表信息时,所述颜色表生成单元42可以生成一个初始化颜色表信息,例如:(0,0,0)、(1,1,1)、(2,2,2)、……、(255,255,255),所述颜色表生成单元42在初始化颜色表信息中获取G分量与所述RGB数据中当前像素点的G分量最接近的第三源RGB值,并获取所述第三源RGB值的第三颜色索引,所述颜色表生成单元42在所述初始化颜色表信息中以所述第三颜色索引为中心的预设范围内,获取与所述当前像素点的RGB值误差最小的第四源RGB值,并获取所述第四源RGB值的第四颜色索引,所述颜色表生成单元42将所述第四源RGB值替换为所述当前像素点的RGB值,并采用预设权重值和所述当前像素点的RGB值,对所述初始化颜色表信息中以所述第四颜色索引为中心的预设范围内的多个源RGB值进行修改,当所述当前像素点不为所述RGB数据中的最后一个像素点时,所述颜色表生成单元42获取修改后得到的所述初始化颜色表信息,将所述当前像素点的下一个像素点作为当前像素点,并转入执行在所述初始化颜色表信息中获取G分量与所述RGB数据中当前像素点的G分量最接近的第三源RGB值,当所述当前像素点为所述RGB数据中的最后一个像素点时,所述颜色表生成单元42获取修改后得到的所述训练颜色表信息,并将所述初始化颜色表信息确定为所述RGB数据的局部颜色表信息。需要说明的是,第二种实施方式中对初始化颜色表信息进行训练的过程可以参见上述第一种实施方式的执行过程,在此不进行赘述。
在第三种实施方式中,针对所述RGB数据不为所述图片文件中的第一帧图像,即所述RGB数据为所述图片文件中的第N帧图像时,其中,N为大于1且小于或等于所述总帧数的正整数,所述颜色表生成单元42可以采用所述RGB数据中的各像素点的RGB值对第N-1帧RGB数据的局部颜色表信息进行训练以生成所述RGB数据的局部颜色表信息。
进一步的,当所述RGB数据为所述图片文件中的第N帧图像时,所述颜色表生成单元42可以将第N-1帧RGB数据的局部颜色表信息中的至少一个源RGB值按照G分量的预设排序方式进行排序,以生成训练颜色表信息,所述颜色表生成单元42在所述训练颜色表信息中获取G分量与所述RGB数据中当前像素点的G分量最接近的第五源RGB值,并获取所述第五源RGB值的第五颜色索引,所述颜色表生成单元42在所述训练颜色表信息中以所述第五颜色索引为中心的预设范围内,获取与所述当前像素点的RGB值误差最小的第六源RGB值,并获取所述第六源RGB值的第六颜色索引,所述颜色表生成单元42将所述第六源RGB值替换为所述当前像素点的RGB值,并采用预设权重值和所述当前像素点的RGB值,对所述训练颜色表信息中以所述第六颜色索引为中心的预设范围内的多个源RGB值进行修改,当所述当前像素点不为所述RGB数据中的最后一个像素点时,所述颜色表生成单元42获取修改后得到的所述训练颜色表信息,将所述当前像素点的下一个像素点作为当前像素点,并转入执行在所述训练颜色表信息中获取G分量与所述RGB数据中当前像素点的G分量最接近的第五源RGB值,当所述当前像素点为所述RGB数据中的最后一个像素点时,所述颜色表生成单元42获取修改后得到的所述训练颜色表信息,并将所述训练颜色表信息确定为所述RGB数据的局部颜色表信息。需要说明的是,第三种实施方式中对训练颜色表信息进行训练可以参见上述第一种实施方式的执行过程,在此不进行赘述。
需要说明的是,上述采用G分量作为对颜色表信息进行训练的引导仅为举例,本发明实施例同样可以采用R分量或者B分量作为对颜色表信息进行训练的引导,执行过程均可以参见上述内容中的描述,在此不进行赘述。上述第一源RGB值、第二源RGB值、第三源RGB值、第四源RGB值、第五源RGB值、第六源RGB值以及第一颜色索引、第二颜色索引、第三颜色索引、第四颜色索引、第五颜色索引、第六颜色索引均可以表示相同的源RGB值和颜色索引的含义,采用此方式进行命名仅为了区分不同的执行场景,例如:当所述RGB数据为所述图片文件中的第一帧图像,且所述图片头信息数据段中存在全局颜色表信息时;当所述RGB数据为所述图片文件中的第一帧图像,且所述图片头信息数据段中不存在全局颜色表信息时;当所述RGB数据为所述图片文件中的第N帧图像时,以上三种执行场景。
像素值更新单元43,用于采用RGB数据的局部颜色表信息对各像素点的RGB值进行更新;
具体实现中,所述像素值更新单元43可以采用所述RGB数据的局部颜色表信息对所述RGB数据中各像素点的RGB值进行更新,所述图片文件处理设备4采用所述延时时间和所述总帧数将更新后的所述RGB数据进行图像编码以生成所述图片文件。可以理解的是,所述图像编码的方式具体由图片文件的图像格式决定,例如:若需要生成的图片文件为GIF图像,则所述图像编码可以为GIF编码等。
在本发明实施例中,通过对全局颜色表信息或初始化颜色表信息进行训练,生成RGB数据的局部颜色表信息,有效的减少了图像的失真;通过采用G分量获取最接近的源RGB值,并在颜色表信息中进行小范围的颜色索引搜索,无需遍历整个颜色表信息,降低了对局部颜色表信息训练的复杂度,进一步提升了图片文件的编码效率。
请参见图35,为本发明实施例提供了又一种图片文件处理设备的结构示意图。如图35所示,所述图片文件处理设备4000可以包括:至少一个处理器4001,例如CPU,至少一个网络接口4004,用户接口4003,存储器4005,至少一个通信总线4002。其中,通信总线4002用于实现这些组件之间的连接通信。其中,用户接口4003可以包括显示屏(Display)、键盘(Keyboard),可选用户接口4003还可以包括标准的有线接口、无线接口。网络接口4004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器4005可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器4005可选的还可以是至少一个位于远离前述处理器4001的存储装置。如图35所示,作为一种计算机存储介质的存储器4005中可以包括操作系统、网络通信模块、用户接口模块以及图像处理应用程序。
在图35所示的图片文件处理设备4000中,网络接口4004主要用于连接发送端,与所述发送端进行数据通信;而用户接口4003主要用于为用户提供输入的接口,获取用户输入的数据;而处理器4001可以用于调用存储器4005中存储的图像处理应用程序,并具体执行以下步骤:
获取对原始图片文件处理生成的RGB数据,获取RGB数据中的各像素点的RGB值;
采用各像素点的RGB值对RGB数据的初始颜色表信息进行训练以生成RGB数据的局部颜色表信息;
采用RGB数据的局部颜色表信息对各像素点的RGB值进行更新。
在一个实施例中,所述处理器4001在执行采用各像素点的RGB值对RGB数据的初始颜色表信息进行训练以生成RGB数据的局部颜色表信息时,具体执行以下步骤:
当所述RGB数据为图片文件中的第一帧图像,且解码所述图片文件生成的图片头信息数据段中存在全局颜色表信息时,采用RGB数据中的各像素点的RGB值对所述全局颜色表信息进行训练以生成RGB数据的局部颜色表信息。
在一个实施例中,所述处理器4001在执行采用RGB数据中的各像素点的RGB值对所述全局颜色表信息进行训练以生成RGB数据的局部颜色表信息时,具体执行以下步骤:
将所述全局颜色表信息中的至少一个源RGB值按照G分量的预设排序方式进行排序,以生成训练颜色表信息;
在所述训练颜色表信息中获取G分量与RGB数据中当前像素点的G分量最接近的第一源RGB值,并获取第一源RGB值的第一颜色索引;
在训练颜色表信息中以第一颜色索引为中心的预设范围内,获取与当前像素点的RGB值误差最小的第二源RGB值,并获取第二源RGB值的第二颜色索引;
将所述第二源RGB值替换为所述当前像素点的RGB值,并采用预设权重值和所述当前像素点的RGB值,对训练颜色表信息中以第二颜色索引为中心的预设范围内的多个源RGB值进行修改;
当所述当前像素点不为RGB数据中的最后一个像素点时,获取修改后得到的所述训练颜色表信息,将当前像素点的下一个像素点作为当前像素点,并转入执行在所述训练颜色表信息中获取G分量与RGB数据中当前像素点的G分量最接近的第一源RGB值;
当所述当前像素点为RGB数据中的最后一个像素点时,获取修改后得到的所述训练颜色表信息,并将所述训练颜色表信息确定为RGB数据的局部颜色表信息。
在一个实施例中,所述处理器4001在执行采用各像素点的RGB值对所述RGB数据的初始颜色表信息进行训练以生成RGB数据的局部颜色表信息时,具体执行以下步骤:
当所述RGB数据为图片文件中的第一帧图像,且解码所述图片文件生成的图片头信息数据段中不存在全局颜色表信息时,采用RGB数据中的各像素点的RGB值对初始化颜色表信息进行训练以生成RGB数据的局部颜色表信息。
在一个实施例中,所述处理器4001在执行采用RGB数据中的各像素点的RGB值对初始化颜色表信息进行训练以生成RGB数据的局部颜色表信息时,具体执行以下步骤:
在初始化颜色表信息中获取G分量与RGB数据中当前像素点的G分量最接近的第三源RGB值,并获取第三源RGB值的第三颜色索引;
在初始化颜色表信息中以第三颜色索引为中心的预设范围内,获取与当前像素点的RGB值误差最小的第四源RGB值,并获取第四源RGB值的第四颜色索引;
将所述第四源RGB值替换为所述当前像素点的RGB值,并采用预设权重值和所述当前像素点的RGB值,对初始化颜色表信息中以第四颜色索引为中心的预设范围内的多个源RGB值进行修改;
当所述当前像素点不为RGB数据中的最后一个像素点时,获取修改后得到的所述初始化颜色表信息,将当前像素点的下一个像素点作为当前像素点,并转入执行在所述初始化颜色表信息中获取G分量与RGB数据中当前像素点的G分量最接近的第三源RGB值;
当所述当前像素点为RGB数据中的最后一个像素点时,获取修改后得到的所述训练颜色表信息,并将所述初始化颜色表信息确定为RGB数据的局部颜色表信息。
在一个实施例中,所述处理器4001在执行采用各像素点的RGB值对RGB数据的初始颜色表信息进行训练以生成RGB数据的局部颜色表信息时,具体执行以下步骤:
当所述RGB数据为图片文件中的第N帧图像时,采用RGB数据中的各像素点的RGB值对第N-1帧RGB数据的局部颜色表信息进行训练以生成RGB数据的局部颜色表信息,N为大于1且小于或等于总帧数的正整数。
在一个实施例中,所述处理器4001在执行采用RGB数据中的各像素点的RGB值对第N-1帧RGB数据的局部颜色表信息进行训练以生成RGB数据的局部颜色表信息时,具体执行以下步骤:
将第N-1帧RGB数据的局部颜色表信息中的至少一个源RGB值按照G分量的预设排序方式进行排序,以生成训练颜色表信息;
在所述训练颜色表信息中获取G分量与RGB数据中当前像素点的G分量最接近的第五源RGB值,并所述第五源RGB值的第五颜色索引;
在训练颜色表信息中以第五颜色索引为中心的预设范围内,获取与当前像素点的RGB值误差最小的第六源RGB值,并获取第六源RGB值的第六颜色索引;
将所述第六源RGB值替换为所述当前像素点的RGB值,并采用预设权重值和所述当前像素点的RGB值,对训练颜色表信息中以第六颜色索引为中心的预设范围内的多个源RGB值进行修改;
当所述当前像素点不为RGB数据中的最后一个像素点时,获取修改后得到的所述训练颜色表信息,将当前像素点的下一个像素点作为当前像素点,并转入执行在所述训练颜色表信息中获取G分量与RGB数据中当前像素点的G分量最接近的第五源RGB值;
当所述当前像素点为RGB数据中的最后一个像素点时,获取修改后得到的所述训练颜色表信息,并将所述训练颜色表信息确定为RGB数据的局部颜色表信息。
在一个实施例中,所述图片文件为GIF图像。
在本发明实施例中,通过对全局颜色表信息或初始化颜色表信息进行训练,生成RGB数据的局部颜色表信息,有效的减少了图像的失真;通过采用G分量获取最接近的源RGB值,并在颜色表信息中进行小范围的颜色索引搜索,无需遍历整个颜色表信息,降低了对局部颜色表信息训练的复杂度,进一步提升了图片文件的编码效率。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。

Claims (16)

1.一种图片文件处理方法,其特征在于,包括:
接收针对原始图片文件的压缩图像数据,解析所述压缩图像数据以获取图片文件的图片头信息数据段和码流数据,解析前的所述码流数据为对YUV数据进行编码生成的编码码流数据,所述YUV数据为对图片文件中每帧图像进行转换生成的数据;其中,所述图片头信息数据段包括延时信息和总帧数;
解码所述码流数据以生成所述YUV数据,并采用颜色域转换公式将所述YUV数据转换为三原色RGB数据;
当所述RGB数据为所述图片文件中的第一帧图像,且所述图片头信息数据段中还存在全局颜色表信息时,将所述全局颜色表信息中的至少一个源RGB值按照G分量的预设排序方式进行排序,以生成训练颜色表信息;
在所述训练颜色表信息中获取G分量与RGB数据中当前像素点的G分量最接近的第一源RGB值,并获取第一源RGB值的第一颜色索引;
在训练颜色表信息中以第一颜色索引为中心的预设范围内,获取与当前像素点的RGB值误差最小的第二源RGB值,并获取第二源RGB值的第二颜色索引;
将所述第二源RGB值替换为所述当前像素点的RGB值,并采用预设权重值和所述当前像素点的RGB值,对训练颜色表信息中以第二颜色索引为中心的预设范围内的多个源RGB值进行修改;
当所述当前像素点不为RGB数据中的最后一个像素点时,获取修改后得到的所述训练颜色表信息,将当前像素点的下一个像素点作为当前像素点,并转入执行在所述训练颜色表信息中获取G分量与RGB数据中当前像素点的G分量最接近的第一源RGB值;
当所述当前像素点为RGB数据中的最后一个像素点时,获取修改后得到的所述训练颜色表信息,并将所述训练颜色表信息确定为RGB数据的局部颜色表信息,采用RGB数据的局部颜色表信息对各像素点的RGB值进行更新,采用所述延时信息和所述总帧数将更新后的RGB数据进行图像编码以生成所述图片文件。
2.根据权利要求1所述的方法,其特征在于,还包括:
当所述RGB数据为图片文件中的第一帧图像,且所述图片头信息数据段中不存在全局颜色表信息时,采用RGB数据中的各像素点的RGB值对初始化颜色表信息进行训练以生成RGB数据的局部颜色表信息,并采用RGB数据的局部颜色表信息对各像素点的RGB值进行更新,采用所述延时信息和所述总帧数将更新后的RGB数据进行图像编码以生成所述图片文件。
3.根据权利要求2所述的方法,其特征在于,所述采用RGB数据中的各像素点的RGB值对初始化颜色表信息进行训练以生成RGB数据的局部颜色表信息,包括:
在初始化颜色表信息中获取G分量与RGB数据中当前像素点的G分量最接近的第三源RGB值,并获取第三源RGB值的第三颜色索引;
在初始化颜色表信息中以第三颜色索引为中心的预设范围内,获取与当前像素点的RGB值误差最小的第四源RGB值,并获取第四源RGB值的第四颜色索引;
将所述第四源RGB值替换为所述当前像素点的RGB值,并采用预设权重值和所述当前像素点的RGB值,对初始化颜色表信息中以第四颜色索引为中心的预设范围内的多个源RGB值进行修改;
当所述当前像素点不为RGB数据中的最后一个像素点时,获取修改后得到的所述初始化颜色表信息,将当前像素点的下一个像素点作为当前像素点,并转入执行在所述初始化颜色表信息中获取G分量与RGB数据中当前像素点的G分量最接近的第三源RGB值;
当所述当前像素点为RGB数据中的最后一个像素点时,获取修改后得到的所述训练颜色表信息,并将所述初始化颜色表信息确定为RGB数据的局部颜色表信息。
4.根据权利要求1所述的方法,其特征在于,还包括:
当所述RGB数据为图片文件中的第N帧图像,且所述图片头信息数据段中还存在全局颜色表信息时,接收端采用RGB数据中的各像素点的RGB值对第N-1帧RGB数据的局部颜色表信息进行训练以生成RGB数据的局部颜色表信息,并采用RGB数据的局部颜色表信息对各像素点的RGB值进行更新,采用所述延时信息和所述总帧数将更新后的RGB数据进行图像编码以生成所述图片文件,N为大于1且小于或等于总帧数的正整数。
5.根据权利要求4所述的方法,其特征在于,所述采用RGB数据中的各像素点的RGB值对第N-1帧RGB数据的局部颜色表信息进行训练以生成RGB数据的局部颜色表信息,包括:
将第N-1帧RGB数据的局部颜色表信息中的至少一个源RGB值按照G分量的预设排序方式进行排序,以生成训练颜色表信息;
在所述训练颜色表信息中获取G分量与RGB数据中当前像素点的G分量最接近的第五源RGB值,并获取第五源RGB值的第五颜色索引;
在训练颜色表信息中以第五颜色索引为中心的预设范围内,获取与当前像素点的RGB值误差最小的第六源RGB值,并获取第六源RGB值的第六颜色索引;
将所述第六源RGB值替换为所述当前像素点的RGB值,并采用预设权重值和所述当前像素点的RGB值,对所述训练颜色表信息中以第六颜色索引为中心的预设范围内的多个源RGB值进行修改;
当所述当前像素点不为RGB数据中的最后一个像素点时,获取修改后得到的所述训练颜色表信息,将当前像素点的下一个像素点作为当前像素点,并转入执行在所述训练颜色表信息中获取G分量与RGB数据中当前像素点的G分量最接近的第五源RGB值;
当所述当前像素点为RGB数据中的最后一个像素点时,获取修改后得到的所述训练颜色表信息,并将所述训练颜色表信息确定为RGB数据的局部颜色表信息。
6.一种图片文件处理方法,其特征在于,包括:
根据原始图片文件生成图片文件的图片头信息数据段,并将图片文件中每帧图像转换为YUV数据;
对所述YUV数据进行编码以生成码流数据;
存储压缩图像数据,所述压缩图像数据包含所述图片头信息数据段和所述码流数据;
解析所述压缩图像数据以获取所述图片头信息数据段和所述码流数据;所述图片头信息数据段包括延时信息和总帧数;
解码所述码流数据以生成所述YUV数据,并采用颜色域转换公式将所述YUV数据转换为RGB数据;
当所述RGB数据为所述图片文件中的第一帧图像,且所述图片头信息数据段中还存在全局颜色表信息时,将所述全局颜色表信息中的至少一个源RGB值按照G分量的预设排序方式进行排序,以生成训练颜色表信息;
在所述训练颜色表信息中获取G分量与RGB数据中当前像素点的G分量最接近的第一源RGB值,并获取第一源RGB值的第一颜色索引;
在训练颜色表信息中以第一颜色索引为中心的预设范围内,获取与当前像素点的RGB值误差最小的第二源RGB值,并获取第二源RGB值的第二颜色索引;
将所述第二源RGB值替换为所述当前像素点的RGB值,并采用预设权重值和所述当前像素点的RGB值,对训练颜色表信息中以第二颜色索引为中心的预设范围内的多个源RGB值进行修改;
当所述当前像素点不为RGB数据中的最后一个像素点时,获取修改后得到的所述训练颜色表信息,将当前像素点的下一个像素点作为当前像素点,并转入执行在所述训练颜色表信息中获取G分量与RGB数据中当前像素点的G分量最接近的第一源RGB值;
当所述当前像素点为RGB数据中的最后一个像素点时,获取修改后得到的所述训练颜色表信息,并将所述训练颜色表信息确定为RGB数据的局部颜色表信息,采用RGB数据的局部颜色表信息对各像素点的RGB值进行更新,采用所述延时信息和所述总帧数将更新后的RGB数据进行图像编码以生成所述图片文件。
7.根据权利要求6所述的方法,其特征在于,所述根据原始图片文件生成图片文件的图片头信息数据段,并将图片文件中每帧图像转换为YUV数据,包括:
解码原始图片文件以生成所述图片文件的图片头信息数据段以及所述图片文件中每帧图像对应的RGB数据,所述图片头信息数据段包括延时信息、总帧数、全局颜色表信息;
采用颜色域转换公式将所述RGB数据转换为YUV数据。
8.根据权利要求6所述的方法,其特征在于,所述编码包括预测编码、变换编码、量化编码和熵编码。
9.根据权利要求6所述的方法,其特征在于,所述对所述YUV数据进行编码以生成码流数据,包括:
采用配置参数对所述YUV数据进行编码以生成码流数据,所述配置参数为对所述YUV数据进行编码的参数,所述配置参数包括标清模式参数、高清模式参数和无损模式参数中的任一种。
10.根据权利要求6所述的方法,其特征在于,所述对所述YUV数据进行编码以生成码流数据,包括:
配置编码器复杂度对所述YUV数据进行编码以生成码流数据,所述编码器复杂度为根据发送端的硬件性能所决定的编码的精细度参数。
11.根据权利要求6所述的方法,其特征在于,还包括:
当所述RGB数据为图片文件中的第一帧图像,且所述图片头信息数据段中不存在全局颜色表信息时,采用RGB数据中的各像素点的RGB值对初始化颜色表信息进行训练以生成RGB数据的局部颜色表信息,并采用RGB数据的局部颜色表信息对各像素点的RGB值进行更新,采用所述延时信息和所述总帧数将更新后的所述RGB数据进行图像编码以生成所述图片文件。
12.根据权利要求11所述的方法,其特征在于,所述采用RGB数据中的各像素点的RGB值对初始化颜色表信息进行训练以生成RGB数据的局部颜色表信息,包括:
在初始化颜色表信息中获取G分量与RGB数据中当前像素点的G分量最接近的第三源RGB值,并获取第三源RGB值的第三颜色索引;
在初始化颜色表信息中以第三颜色索引为中心的预设范围内,获取与当前像素点的RGB值误差最小的第四源RGB值,并获取第四源RGB值的第四颜色索引;
将所述第四源RGB值替换为所述当前像素点的RGB值,并采用预设权重值和所述当前像素点的RGB值,对初始化颜色表信息中以第四颜色索引为中心的预设范围内的多个源RGB值进行修改;
当所述当前像素点不为RGB数据中的最后一个像素点时,获取修改后得到的所述初始化颜色表信息,将当前像素点的下一个像素点作为当前像素点,并转入执行在所述初始化颜色表信息中获取G分量与RGB数据中当前像素点的G分量最接近的第三源RGB值;
当所述当前像素点为RGB数据中的最后一个像素点时,获取修改后得到的所述训练颜色表信息,并将所述初始化颜色表信息确定为RGB数据的局部颜色表信息。
13.根据权利要求6所述的方法,其特征在于,还包括:
当所述RGB数据为图片文件中的第N帧图像,且所述图片头信息数据段中还存在全局颜色表信息时,接收端采用RGB数据中的各像素点的RGB值对第N-1帧RGB数据的局部颜色表信息进行训练以生成RGB数据的局部颜色表信息,并采用RGB数据的局部颜色表信息对各像素点的RGB值进行更新,采用所述延时信息和所述总帧数将更新后的所述RGB数据进行图像编码以生成所述图片文件,N为大于1且小于或等于总帧数的正整数。
14.根据权利要求13所述的方法,其特征在于,所述采用RGB数据中的各像素点的RGB值对第N-1帧RGB数据的局部颜色表信息进行训练以生成RGB数据的局部颜色表信息,包括:
将第N-1帧RGB数据的局部颜色表信息中的至少一个源RGB值按照G分量的预设排序方式进行排序,以生成训练颜色表信息;
在所述训练颜色表信息中获取G分量与RGB数据中当前像素点的G分量最接近的第五源RGB值,并获取第五源RGB值的第五颜色索引;
在训练颜色表信息中以第五颜色索引为中心的预设范围内,获取与当前像素点的RGB值误差最小的第六源RGB值,并获取第六源RGB值的第六颜色索引;
将所述第六源RGB值替换为所述当前像素点的RGB值,并采用预设权重值和所述当前像素点的RGB值,对所述训练颜色表信息中以第六颜色索引为中心的预设范围内的多个源RGB值进行修改;
当所述当前像素点不为RGB数据中的最后一个像素点时,获取修改后得到的所述训练颜色表信息,将当前像素点的下一个像素点作为当前像素点,并转入执行在所述训练颜色表信息中获取G分量与RGB数据中当前像素点的G分量最接近的第五源RGB值;
当所述当前像素点为RGB数据中的最后一个像素点时,获取修改后得到的所述训练颜色表信息,并将所述训练颜色表信息确定为RGB数据的局部颜色表信息。
15.一种图片文件处理设备,其特征在于,包括:
信息获取单元,用于接收针对原始图片文件的压缩图像数据,解析所述压缩图像数据以获取图片文件的图片头信息数据段和码流数据,所述码流数据为对YUV数据进行编码生成的信息,所述YUV数据为对图片文件中每帧图像进行转换生成的数据;其中,所述图片头信息数据段包括延时信息和总帧数;
图像编码单元,用于解码所述码流数据以生成所述YUV数据,并采用颜色域转换公式将所述YUV数据转换为三原色RGB数据;
所述图像编码单元,还用于当所述RGB数据为所述图片文件中的第一帧图像,且所述图片头信息数据段中还存在全局颜色表信息时,将所述全局颜色表信息中的至少一个源RGB值按照G分量的预设排序方式进行排序,以生成训练颜色表信息;
所述图像编码单元,还用于在所述训练颜色表信息中获取G分量与RGB数据中当前像素点的G分量最接近的第一源RGB值,并获取第一源RGB值的第一颜色索引;
所述图像编码单元,还用于在训练颜色表信息中以第一颜色索引为中心的预设范围内,获取与当前像素点的RGB值误差最小的第二源RGB值,并获取第二源RGB值的第二颜色索引;
所述图像编码单元,还用于将所述第二源RGB值替换为所述当前像素点的RGB值,并采用预设权重值和所述当前像素点的RGB值,对训练颜色表信息中以第二颜色索引为中心的预设范围内的多个源RGB值进行修改;
所述图像编码单元,还用于当所述当前像素点不为RGB数据中的最后一个像素点时,获取修改后得到的所述训练颜色表信息,将当前像素点的下一个像素点作为当前像素点,并转入执行在所述训练颜色表信息中获取G分量与RGB数据中当前像素点的G分量最接近的第一源RGB值;
所述图像编码单元,还用于当所述当前像素点为RGB数据中的最后一个像素点时,获取修改后得到的所述训练颜色表信息,并将所述训练颜色表信息确定为RGB数据的局部颜色表信息,采用RGB数据的局部颜色表信息对各像素点的RGB值进行更新,采用所述延时信息和所述总帧数将更新后的RGB数据进行图像编码以生成所述图片文件。
16.一种图片文件处理设备,其特征在于,包括:
图像转换单元,用于根据原始图片文件生成图片文件的图片头信息数据段,并将图片文件中每帧图像转换为YUV数据;
图像压缩单元,用于对所述YUV数据进行编码以生成码流数据;
码流生成单元,用于存储压缩图像数据,所述压缩图像数据包含所述图片头信息数据段和所述码流数据;
信息获取单元,用于解析所述压缩图像数据以获取所述图片头信息数据段和所述码流数据;所述图片头信息数据段包括延时信息和总帧数;
图像编码单元,用于解码所述码流数据以生成所述YUV数据,并采用颜色域转换公式将所述YUV数据转换为RGB数据;
所述图像编码单元,还用于当所述RGB数据为所述图片文件中的第一帧图像,且所述图片头信息数据段中还存在全局颜色表信息时,将所述全局颜色表信息中的至少一个源RGB值按照G分量的预设排序方式进行排序,以生成训练颜色表信息;
所述图像编码单元,还用于在所述训练颜色表信息中获取G分量与RGB数据中当前像素点的G分量最接近的第一源RGB值,并获取第一源RGB值的第一颜色索引;
所述图像编码单元,还用于在训练颜色表信息中以第一颜色索引为中心的预设范围内,获取与当前像素点的RGB值误差最小的第二源RGB值,并获取第二源RGB值的第二颜色索引;
所述图像编码单元,还用于将所述第二源RGB值替换为所述当前像素点的RGB值,并采用预设权重值和所述当前像素点的RGB值,对训练颜色表信息中以第二颜色索引为中心的预设范围内的多个源RGB值进行修改;
所述图像编码单元,还用于当所述当前像素点不为RGB数据中的最后一个像素点时,获取修改后得到的所述训练颜色表信息,将当前像素点的下一个像素点作为当前像素点,并转入执行在所述训练颜色表信息中获取G分量与RGB数据中当前像素点的G分量最接近的第一源RGB值;
所述图像编码单元,还用于当所述当前像素点为RGB数据中的最后一个像素点时,获取修改后得到的所述训练颜色表信息,并将所述训练颜色表信息确定为RGB数据的局部颜色表信息,采用RGB数据的局部颜色表信息对各像素点的RGB值进行更新,采用所述延时信息和所述总帧数将更新后的RGB数据进行图像编码以生成所述图片文件。
CN201810834942.8A 2017-04-08 2017-04-08 一种图片文件处理方法及其设备 Active CN109151503B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810834942.8A CN109151503B (zh) 2017-04-08 2017-04-08 一种图片文件处理方法及其设备

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201810834942.8A CN109151503B (zh) 2017-04-08 2017-04-08 一种图片文件处理方法及其设备
CN201710225916.0A CN106921869B (zh) 2017-04-08 2017-04-08 一种图片文件处理方法及其设备

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201710225916.0A Division CN106921869B (zh) 2017-04-08 2017-04-08 一种图片文件处理方法及其设备

Publications (2)

Publication Number Publication Date
CN109151503A CN109151503A (zh) 2019-01-04
CN109151503B true CN109151503B (zh) 2022-03-15

Family

ID=59568640

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201810834942.8A Active CN109151503B (zh) 2017-04-08 2017-04-08 一种图片文件处理方法及其设备
CN201710225916.0A Active CN106921869B (zh) 2017-04-08 2017-04-08 一种图片文件处理方法及其设备

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201710225916.0A Active CN106921869B (zh) 2017-04-08 2017-04-08 一种图片文件处理方法及其设备

Country Status (3)

Country Link
CN (2) CN109151503B (zh)
TW (1) TWI672942B (zh)
WO (1) WO2018184465A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109151503B (zh) * 2017-04-08 2022-03-15 腾讯科技(深圳)有限公司 一种图片文件处理方法及其设备
CN110069728B (zh) * 2017-10-30 2022-08-12 北京京东尚科信息技术有限公司 用于展示图片的方法及装置
US10841458B2 (en) * 2018-03-02 2020-11-17 Canon Kabushiki Kaisha Image processing apparatus, image processing method, and storage medium
CN108933945B (zh) * 2018-08-17 2020-06-19 腾讯科技(深圳)有限公司 一种gif图片的压缩方法、装置及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101540901A (zh) * 2008-03-20 2009-09-23 华为技术有限公司 编解码方法及装置
CN101742317A (zh) * 2009-12-31 2010-06-16 北京中科大洋科技发展股份有限公司 一种带阿尔法透明通道的视频压缩编码方法
CN104333762A (zh) * 2014-11-24 2015-02-04 成都瑞博慧窗信息技术有限公司 一种视频解码方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6697521B2 (en) * 2001-06-15 2004-02-24 Nokia Mobile Phones Ltd. Method and system for achieving coding gains in wavelet-based image codecs
US8189908B2 (en) * 2005-09-02 2012-05-29 Adobe Systems, Inc. System and method for compressing video data and alpha channel data using a single stream
KR101277712B1 (ko) * 2006-11-13 2013-06-24 삼성전자주식회사 영상 처리 방법 및 장치
CN101459829B (zh) * 2008-12-25 2011-05-04 杭州恒生数字设备科技有限公司 一种低延迟的全数字监控系统
CN102231836B (zh) * 2011-06-27 2013-06-26 深圳市茁壮网络股份有限公司 一种gif文件在数字电视系统中的处理方法和装置
CN106383880B (zh) * 2016-09-13 2020-01-24 广州视睿电子科技有限公司 一种gif文件的播放方法及系统
CN108696761B (zh) * 2017-04-08 2022-03-04 腾讯科技(深圳)有限公司 一种图片文件处理方法及其设备、系统
CN109151503B (zh) * 2017-04-08 2022-03-15 腾讯科技(深圳)有限公司 一种图片文件处理方法及其设备

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101540901A (zh) * 2008-03-20 2009-09-23 华为技术有限公司 编解码方法及装置
CN101742317A (zh) * 2009-12-31 2010-06-16 北京中科大洋科技发展股份有限公司 一种带阿尔法透明通道的视频压缩编码方法
CN104333762A (zh) * 2014-11-24 2015-02-04 成都瑞博慧窗信息技术有限公司 一种视频解码方法

Also Published As

Publication number Publication date
TW201838416A (zh) 2018-10-16
TWI672942B (zh) 2019-09-21
CN106921869B (zh) 2018-09-04
CN109151503A (zh) 2019-01-04
WO2018184465A1 (zh) 2018-10-11
CN106921869A (zh) 2017-07-04

Similar Documents

Publication Publication Date Title
CN108696761B (zh) 一种图片文件处理方法及其设备、系统
CN111066326B (zh) 机器学习视频处理系统和方法
CN109348226B (zh) 一种图片文件处理方法及智能终端
RU2668723C2 (ru) Способ и оборудование для кодирования и декодирования видеосигналов
KR102071764B1 (ko) 영상 부호화, 복호화 방법 및 장치
CN109151503B (zh) 一种图片文件处理方法及其设备
RU2693185C2 (ru) Способ кодирования и способ декодирования цветового преобразования и соответствующие устройства
CN110300301B (zh) 图像编解码方法和装置
KR20200081386A (ko) 제1 이미지로부터 제2 이미지를 생성하기 위한 방법 및 디바이스
CN110754085B (zh) 用于非4:4:4格式视频内容的颜色重映射
CN116016913A (zh) 视频编解码的方法、视频编解码器以及计算机可读介质
CN111491168A (zh) 视频编解码方法、解码器、编码器和相关设备
CN114041288A (zh) 图像分量的预测方法、编码器、解码器以及存储介质
US11677987B2 (en) Joint termination of bidirectional data blocks for parallel coding
CN114339260A (zh) 图像处理方法及装置
CN105100814A (zh) 图像编码、解码方法及装置
KR20200125698A (ko) 서브-블록 모션 벡터 예측을 위한 방법 및 장치
JP2024024115A (ja) ビデオ符号化のための方法、及び装置
JP2021521753A (ja) 双方向予測動きベクトル精密化におけるメモリ帯域幅最適化技術
CN111246208B (zh) 视频处理方法、装置及电子设备
CN113557727B (zh) 一种视频解码方法和相关装置
CN105745924A (zh) 色度下转换和上转换处理
CN114868390A (zh) 视频编码方法、解码方法、编码器、解码器以及ai加速器
CN117528098B (zh) 基于深压缩码流提升画质的编解码系统、方法及设备
KR20230141842A (ko) 산술 인코딩 및 디코딩에서의 트레일링 비트 처리

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