一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种将YUV格式图像转成RGB格式图像的方法及系统与流程

2022-04-09 06:06:37 来源:中国专利 TAG:

一种将yuv格式图像转成rgb格式图像的方法及系统
技术领域
1.本发明属于图形显示技术领域,更具体地,涉及一种将yuv格式图像转成rgb格式图像的方法及系统。


背景技术:

2.视频解码器是gpu中很重要的一个部分,视频经过视频解码器后会生成yuv格式图像,yuv是视频、图片、相机等应用中使用的一类图像格式,与rgb格式不同。yuv格式图像包括一个亮度分量y和两个色度分量u分量和v分量,另外,两个色度分量还可以用cb分量和cr分量表示;同时yuv具有压缩功能,支持420、422、444三种不同的压缩格式。rgb格式图像包括红、绿、蓝三个颜色分量,分别以r、g、b表示。
3.目前的视频解码器普遍都支持多种yuv格式,例如,i420、yv12、nv12、nv21、nv16、nv61、yuy2、uyvy、p010等,而yuv格式文件不能通过显示终端显示,需要转换为rgb格式。目前更多的是单种yuv格式转rgb的方法,这并不能满足日趋复杂的视频解码,而且多格式yuv转换相对于单格式yuv转换会大量增加电路面积,影响gpu实际性能。


技术实现要素:

4.针对现有技术的缺陷,本发明的目的在于提供一种将yuv格式图像转成rgb格式图像的方法及系统,旨在解决现有yuv格式图像转成rgb格式图像的方法仅适用于单独yuv格式图像,对于多种yuv格式图像需要单独设计不同种格式转换方法,大量增加电路面积,影响gpu实际性能的问题。
5.为实现上述目的,本发明提供了一种将yuv格式图像转成rgb格式图像的方法,包括如下步骤:
6.确定yuv格式图像;其中,所述yuv格式图像包括一个亮度分量y和两个色度分量,两个色度分量分别用cb和cr表示;所述yuv格式图像的压缩格式可能为yuv420格式、yuv422格式或yuv444格式;
7.若所述yuv格式图像的y、cb以及cr三个分量交织存储在一个地址区域,则将三个分量分离,并将分离后的三个分量分别存入第一级先进先出fifo(first input first output,fifo)存储器中;
8.若所述yuv格式图像的y分量存储在一个地址区域,cb和cr分量交织存储在另一个地址区域,则将cb分量和cr分量分离,并将y分量与分离后的cb、cr分量分别存入所述第一级fifo存储器中;
9.若所述yuv格式图像的y、cb以及cr三个分量分别存储在三个不同的地址区域,则直接将三个分量分别存入所述第一级fifo存储器中;
10.若所述yuv格式图像的压缩格式为yuv420格式,则将所述第一级fifo存储器中的三个分量进行水平翻倍和垂直翻倍以还原成yuv444格式,并将还原成yuv444格式后的三个分量分别存入第二级fifo存储器中;
11.若所述yuv格式图像的压缩格式为yuv422格式,则将所述第一级fifo存储器中的三个分量进行水平翻倍以还原成yuv444格式,并将还原成yuv444格式后的三个分量分别存入第二级fifo存储器中;
12.若所述yuv格式图像的压缩格式为yuv444格式,则直接将第一级fifo存储器中的三个分量分别存入第二级fifo存储器中;
13.从所述第二级fifo存储器中提取yuv444格式的图像数据,并将yuv444格式转换成rgb格式,以得到rgb格式图像。
14.在一个可选的实施例中,所述yuv格式图像对应的yuv格式为:i420、yv12、nv12、nv21、nv16、nv61、yuy2、uyvy或p010;
15.其中,i420、yv12格式的y、cb、cr分量分别存储在三个不同的地址区域;nv12,nv21,nv16,nv61以及p010格式的y分量存储在一个地址区域,cb和cr分量交织存储在另一个地址区域;yuy2,uyvy格式的y、cb、cr分量交织存储在一个地址区域;
16.i420、yv12、nv12、nv21、p010格式的压缩格式为yuv420格式;
17.nv16、nv61、yuy2、uyvy格式的压缩格式为yuv422格式。
18.在一个可选的实施例中,所述水平翻倍是以行为单位在每一行的每个像素之后插入一个像素;
19.所述垂直翻倍是以行为单位,在每一行之后插入一行像素。
20.在一个可选的实施例中,所述rgb格式图像包括红、绿、蓝三个颜色分量,分别以r、g、b表示;
21.所述将yuv444格式转换成rgb格式,以得到rgb格式图像,具体为:
22.r=y 1.402524
×
cr-179;
23.g=y-0.714403
×
cr-0.34434
×
cb 135;
24.b=y 1.773049
×
cb-226。
25.第二方面,本发明提供了一种将yuv格式图像转成rgb格式图像的系统,包括:
26.yuv格式图像确定单元,用于确定yuv格式图像;其中,所述yuv格式图像包括一个亮度分量y和两个色度分量,两个色度分量分别用cb和cr表示;所述yuv格式图像的压缩格式可能为yuv420格式、yuv422格式或yuv444格式;
27.分量分离单元,用于若所述yuv格式图像的y、cb以及cr三个分量交织存储在一个地址区域,则将三个分量分离,并将分离后的三个分量分别存入第一级fifo存储器中;若所述yuv格式图像的y分量存储在一个地址区域,cb和cr分量交织存储在另一个地址区域,则将cb分量和cr分量分离,并将y分量与分离后的cb、cr分量分别存入所述第一级fifo存储器中;若所述yuv格式图像的y、cb以及cr三个分量分别存储在三个不同的地址区域,则直接将三个分量分别存入所述第一级fifo存储器中;
28.压缩格式转换单元,用于若所述yuv格式图像的压缩格式为yuv420格式,则将所述第一级fifo存储器中的三个分量进行水平翻倍和垂直翻倍以还原成yuv444格式,并将还原成yuv444格式后的三个分量分别存入第二级fifo存储器中;若所述yuv格式图像的压缩格式为yuv422格式,则将所述第一级fifo存储器中的三个分量进行水平翻倍以还原成yuv444格式,并将还原成yuv444格式后的三个分量分别存入第二级fifo存储器中;若所述yuv格式图像的压缩格式为yuv444格式,则直接将第一级fifo存储器中的三个分量分别存入第二级
fifo存储器中;
29.rgb格式转换单元,用于从所述第二级fifo存储器中提取yuv444格式的图像数据,并将yuv444格式转换成rgb格式,以得到rgb格式图像。
30.在一个可选的实施例中,所述yuv格式图像对应的yuv格式为:i420、yv12、nv12、nv21、nv16、nv61、yuy2、uyvy或p010;其中,i420、yv12格式的y、cb、cr分量分别存储在三个不同的地址区域;nv12,nv21,nv16,nv61以及p010格式的y分量存储在一个地址区域,cb和cr分量交织存储在另一个地址区域;yuy2,uyvy格式的y、cb、cr分量交织存储在一个地址区域;i420、yv12、nv12、nv21、p010格式的压缩格式为yuv420格式;nv16、nv61、yuy2、uyvy格式的压缩格式为yuv422格式。
31.在一个可选的实施例中,所述压缩格式转换单元进行水平翻倍是以行为单位在每一行的每个像素之后插入一个像素,进行垂直翻倍是以行为单位,在每一行之后插入一行像素。
32.在一个可选的实施例中,所述rgb格式图像包括红、绿、蓝三个颜色分量,分别以r、g、b表示;
33.所述rgb格式转换单元将yuv444格式转换成rgb格式,以得到rgb格式图像,具体为:r=y 1.402524
×
cr-179;g=y-0.714403
×
cr-0.34434
×
cb 135;b=y 1.773049
×
cb-226。
34.总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下有益效果:
35.本发明提供一种将yuv格式图像转成rgb格式图像的方法及系统,在流畅的将yuv格式图像转换rgb格式图像的基础上,利用合理的控制逻辑实现了仅用一种方法完成对多种yuv格式图像转换为rgb格式图像,不需要再单独为每一种yuv格式图像单独设计一种格式转换方法,减小了fifo存储器的使用,使存储面积达到最优化;而且可以同时支持多种不同存储方式和不同压缩格式的yuv格式图像的转换,并且只增加了少量的控制逻辑,大大优化了gpu图像处理的性能。
附图说明
36.图1是本发明实施例提供的将yuv格式图像转成rgb格式图像的方法的流程图;
37.图2是本发明实施例提供的一种转换系统模块结构示意图;
38.图3是本发明实施例提供的格式分离模块的工作示意图;
39.图4是本发明实施例提供的像素还原模块工作示意图;
40.图5是本发明实施例提供的像素还原模块工作流程图;
41.图6是本发明实施例提供的将yuv格式图像转成rgb格式图像的系统架构图。
具体实施方式
42.为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
43.本发明的目的是提出了一种支持多格式yuv图像转rgb格式图像的方法,旨在解决
0.714403
×
cr-0.34434
×
cb 135,b=y 1.773049
×
cb-226将yuv444格式转换为rgb格式,该模块输入的4个像素,可同时处理4个像素,提升了像素转换效率,转换后将rgb数据写入到第二级fifo中;
52.写总线模块,将rgb数据从第二级fifo中以四分之一行的大小取出,然后写入到显存中,当分辨率小于1024
×
768时,以二分之一行的大小取出,这样做的目的是对fifo大小和rgb像素写入速度的折中。
53.本发明是以一帧图像为单位进行处理的,当一帧图像处理完毕后,会产生一个中断信号。
54.本发明的特点是在流畅转换rgb的基础上,利用合理的控制逻辑减小fifo的使用,使面积达到最优化;而且可以同时支持9种yuv格式,并且只增加了少量的控制逻辑,大大优化了gpu图像处理的性能。
55.图1是本发明实施例提供的将yuv格式图像转成rgb格式图像的方法的流程图;如图1所示,包括如下步骤:
56.s101,确定yuv格式图像;其中,所述yuv格式图像包括一个亮度分量y和两个色度分量,两个色度分量分别用cb和cr表示;所述yuv格式图像的压缩格式可能为yuv420格式、yuv422格式或yuv444格式;
57.s102,若所述yuv格式图像的y、cb以及cr三个分量交织存储在一个地址区域,则将三个分量分离,并将分离后的三个分量分别存入第一级fifo存储器中;
58.s103,若所述yuv格式图像的y分量存储在一个地址区域,cb和cr分量交织存储在另一个地址区域,则将cb分量和cr分量分离,并将y分量与分离后的cb、cr分量分别存入所述第一级fifo存储器中;
59.s104,若所述yuv格式图像的y、cb以及cr三个分量分别存储在三个不同的地址区域,则直接将三个分量分别存入所述第一级fifo存储器中;
60.s105,若所述yuv格式图像的压缩格式为yuv420格式,则将所述第一级fifo存储器中的三个分量进行水平翻倍和垂直翻倍以还原成yuv444格式,并将还原成yuv444格式后的三个分量分别存入第二级fifo存储器中;
61.s106,若所述yuv格式图像的压缩格式为yuv422格式,则将所述第一级fifo存储器中的三个分量进行水平翻倍以还原成yuv444格式,并将还原成yuv444格式后的三个分量分别存入第二级fifo存储器中;
62.s107,若所述yuv格式图像的压缩格式为yuv444格式,则直接将第一级fifo存储器中的三个分量分别存入第二级fifo存储器中;
63.s108,从所述第二级fifo存储器中提取yuv444格式的图像数据,并将yuv444格式转换成rgb格式,以得到rgb格式图像。
64.视频解码器将视频文件解码为yuv格式后存储在显存中,一般的yuv数据是以2
×
2的格式进行压缩,分为yuv444,yuv422,yuv420。yuv444是4个像素分别有4个y、cb、cr分量,yuv422是4个像素有4个y分量,2个cb、cr分量,yuv420是4个像素有4个y分量,1个cb、cr分量。这样就导致在还原的时候需要不同的处理。其次、yuv分量存储的方式也不同,有y、u、v三分量非交织存储,uv交织存储,yuv交织存储等等,因此在格式分离时需要根据当前格式将三个分量合理的分离出来。
65.图2是本发明实施例提供的一种转换系统模块结构示意图;如图2所示,本发明总共包含以下模块:寄存器配置模块、读总线模块、格式分离模块、像素还原模块、颜色转换模块、写总线模块。
66.寄存器配置模块,通过配置寄存器,可以设置当前yuv文件的格式、显示分辨率等参数。
67.读总线模块,根据当前yuv格式向总线不同地址区域发送读数据请求,i420、yv12格式y、cb、cr分量分别存在3个不同的地址区域,需依次向总线发起3个区域的读请求;nv12,nv21,nv16,nv61以及p010格式y、cb、cr分量分别存在2个不同的地址区域,需依次向总线发起2个区域的读请求;yuy2,uyvy格式y、cb、cr分量存在一个地址区域,只需向总线发起一个区域的读请求,读完一定数据量后,依次读出下一区域地址像素;
68.格式分离模块,总线接收到数据后,当uv分量共用通道时,需要将总线的y、cb、cr数据进行分离,i420、yv12格式3个分量都是非交织存储,不用分离,nv12、nv21、nv16、nv61、p010格式是uv分量交织存储,需要将uv分量分离,yuy2、uyvy格式是3个分量都是交织存储,需要将3个分量分离,将分离后的数据分别存入第一级fifo中,具体分离流程如图3所示,图3中v为从总线读到的64bit数据,v[63:56]表示v的第63位到56位,总共8位数据,其他表示类同,移位寄存器是一个64位的移位寄存器,最后我们将根据不同格式将对应的移位寄存器数据写入到对应的fifo中;
[0069]
像素还原模块,该模块是将yuv420、yuv422的格式还原为yuv444格式。该模块的核心是从上一级的fifo中合理的读出数据,实现像素还原从而同时将y、cb、cr分量送入颜色转换模块中,每个fifo的读请求信号时序如图4所示,首先以行为单位读cb0(cr0),并且以2倍的速度读数据实现水平翻倍,当一行读完后,转为读fifocb1(cr1),这样cb、cr分量就实现了4倍还原,而且达到了与y分量同步的目的。整个像素还原模块的实现流程如图5所示,读出fifo cb0(cr0)中数据,并实现水平翻倍,当行计数器计到一行时,转而读fifocb1(cr1)中数据,并实现水平翻倍,当行计数器计到一行时,如果此时场计数器计到一帧,则表示整个一帧图像读取完毕,结束像素读取,如果场计数器没有到一帧,那么继续读fifo cb0(cr0)中数据。
[0070]
颜色模式模块,将yuv444数据输入到颜色转换模块,将yuv444格式转换为rgb格式,该模块输入的4个像素,可同时处理4个像素,提升了像素转换效率,转换后将rgb数据写入到第二级fifo中。
[0071]
写总线模块,将rgb数据从第二级fifo中以四分之一行的大小取出,然后写入到显存中,当分辨率小于1024
×
768时,以二分之一行的大小取出,这样做的目的是对fifo大小和rgb像素写入速度的折中。
[0072]
图6是本发明实施例提供的将yuv格式图像转成rgb格式图像的系统架构图,如图6所示,包括:
[0073]
yuv格式图像确定单元610,用于确定yuv格式图像;其中,所述yuv格式图像包括一个亮度分量y和两个色度分量,两个色度分量分别用cb和cr表示;所述yuv格式图像的压缩格式可能为yuv420格式、yuv422格式或yuv444格式;
[0074]
分量分离单元620,用于若所述yuv格式图像的y、cb以及cr三个分量交织存储在一个地址区域,则将三个分量分离,并将分离后的三个分量分别存入第一级fifo存储器中;若
所述yuv格式图像的y分量存储在一个地址区域,cb和cr分量交织存储在另一个地址区域,则将cb分量和cr分量分离,并将y分量与分离后的cb、cr分量分别存入所述第一级fifo存储器中;若所述yuv格式图像的y、cb以及cr三个分量分别存储在三个不同的地址区域,则直接将三个分量分别存入所述第一级fifo存储器中;
[0075]
压缩格式转换单元630,用于若所述yuv格式图像的压缩格式为yuv420格式,则将所述第一级fifo存储器中的三个分量进行水平翻倍和垂直翻倍以还原成yuv444格式,并将还原成yuv444格式后的三个分量分别存入第二级fifo存储器中;若所述yuv格式图像的压缩格式为yuv422格式,则将所述第一级fifo存储器中的三个分量进行水平翻倍以还原成yuv444格式,并将还原成yuv444格式后的三个分量分别存入第二级fifo存储器中;若所述yuv格式图像的压缩格式为yuv444格式,则直接将第一级fifo存储器中的三个分量分别存入第二级fifo存储器中;
[0076]
rgb格式转换单元640,用于从所述第二级fifo存储器中提取yuv444格式的图像数据,并将yuv444格式转换成rgb格式,以得到rgb格式图像。
[0077]
具体地,图6中各个单元的详细功能实现可参见前述方法实施例中的介绍,在此不做赘述。
[0078]
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献