掌桥专利:专业的专利平台
掌桥专利
首页

一种图像数据解码方法、装置、存储介质和电子设备

文献发布时间:2024-04-18 19:58:30


一种图像数据解码方法、装置、存储介质和电子设备

技术领域

本申请涉及数据处理领域,特别涉及一种图像数据解码方法、系统、计算机可读存储介质和电子设备。

背景技术

在嵌入式系统中,摄像头图像数据格式一般采用YUV格式,微处理器的软件获取的摄像头预览数据是(长*宽)个unsigned short的YUV422格式数据,而解码库需要的是(长*宽)个unsigned char的Y格式数据,所以要申请(长*宽)个unsigned char空间存储从预览数据中提取的Y格式数据,然后把Y格式数据发送给解码器解码。以30w像素的摄像头为例,其分辨率是640*480,所以中间需要申请大小是640*480=307200Byte的内存空间,大概300KB。因此导致解码时占用大量的内存,一方面需要较大的内存芯片,提升了硬件成本,另一方面也降低了系统运行速度。

发明内容

本申请的目的是提供一种图像数据解码方法、系统、计算机可读存储介质和电子设备,通过提取图像数据中的灰度值数据,无需执行中间过程的内存申请,降低图像数据处理过程中的内存开销,节约成本,且提高了系统的运行速度。

为解决上述技术问题,本申请提供一种图像数据解码方法,具体技术方案如下:

获取第一数据类型的图像数据,并将所述第一数据类型的图像数据存入预设数组;

利用第二数据类型的数据指针指向所述第一数据类型的图像数据,以使所述图像数据划分为若干所述第二数据类型的图像数据;

根据所述第二数据类型的图像数据的大小端类型对每一所述第二数据类型的图像数据进行循环提取符合预设条件的数据;其中,所述预设条件用于筛选所述第二数据类型的图像数据中的灰度值数据;

利用所述符合预设条件的数据对所述预设数组进行重新赋值;

将所述预设数组发送给解码库进行解码。

可选的,若所述第一数据类型的图像数据为16比特的YUV422格式数据,所述预设数组为16比特数组,所述利用第二数据类型的数据指针指向所述第一数据类型的图像数据,以使所述图像数据划分为若干所述第二数据类型的图像数据包括:

定义无符号的8比特数据指针指向所述图像数据对应数组,将所述图像数据拆分为包含8比特Y数据、8比特U数据和8比特V数据的序列;

所述图像数据以8比特Y数据和8比特U数据或8比特Y数据和8比特V数据的形式存储于所述预设数组。

可选的,根据所述第二数据类型的图像数据的大小端类型对每一所述第二数据类型的图像数据进行循环提取符合预设条件的数据包括:

若所述第二数据类型的图像数据的大小端类型为小端数据格式,确定所述符合预设条件的数据存在于数组下标为奇数的位置;

若所述第二数据类型的图像数据的大小端类型为大端数据格式,确定所述符合预设条件的数据存在于数组下标为偶数的位置;

根据所述位置执行循环提取。

可选的,根据所述位置执行循环提取包括:

利用循环语句循环提取所述位置对应的8比特Y数据。

可选的,利用所述符合预设条件的数据对所述预设数组进行重新赋值,包括:

利用所述8比特Y数据对所述预设数组进行重新赋值,得到仅包含所述灰度值数据的所述预设数组。

可选的,根据所述第二数据类型的图像数据的大小端类型对每一所述第二数据类型的图像数据进行循环提取符合预设条件的数据之前,还包括:

利用指针或者定义联合体确定所述第二数据类型的图像数据的大小端类型。

可选的,将所述预设数组发送给解码库进行解码之后,还包括:

获取所述解码库的解码结果,并上传所述解码结果。

本申请还提供一种图像数据解码装置,包括:

获取模块,用于获取第一数据类型的图像数据,并将所述第一数据类型的图像数据存入预设数组;

指针定义模块,用于利用第二数据类型的数据指针指向所述第一数据类型的图像数据,以使所述图像数据划分为若干所述第二数据类型的图像数据;

灰度值提取模块,用于根据所述第二数据类型的图像数据的大小端类型对每一所述第二数据类型的图像数据进行循环提取符合预设条件的数据;其中,所述预设条件用于筛选所述第二数据类型的图像数据中的灰度值数据;

赋值模块,用于利用所述符合预设条件的数据对所述预设数组进行重新赋值;

解码模块,用于将所述预设数组发送给解码库进行解码。

本申请还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的方法的步骤。

本申请还提供一种电子设备,包括存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时实现如上所述的方法的步骤。

本申请提供一种图像数据解码方法,包括:获取第一数据类型的图像数据,并将所述第一数据类型的图像数据存入预设数组;利用第二数据类型的数据指针指向所述第一数据类型的图像数据,以使所述图像数据划分为若干所述第二数据类型的图像数据;根据所述第二数据类型的图像数据的大小端类型对每一所述第二数据类型的图像数据进行循环提取符合预设条件的数据;其中,所述预设条件用于筛选所述第二数据类型的图像数据中的灰度值数据;利用所述符合预设条件的数据对所述预设数组进行重新赋值;将所述预设数组发送给解码库进行解码。

本申请获取到第一数据类型的图像数据后,通过第二数据类型的定义数据指针,将图像数据由第一数据类型拆分为第二数据类型,并进一步提取第二数据类型的图像数据中的灰度值数据进行解码,在解码过程中不必再申请中间内存,降低内存开销,并进一步提升对于图像数据的处理效率,优化系统运行。

本申请还提供一种图像数据解码系统、计算机可读存储介质和电子设备,具有上述有益效果,此处不再赘述。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本申请实施例所提供的一种图像数据解码方法的流程图;

图2为本申请实施例所提供的一种扫码应用中图像数据解码过程的流程图;

图3为本申请实施例所提供的一种图像数据解码装置的结构示意图;

图4为本申请实施例所提供的一种电子设备的结构示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

请参考图1,图1为本申请实施例所提供的一种图像数据解码方法的流程图,该方法包括:

S101:获取第一数据类型的图像数据,并将所述第一数据类型的图像数据存入预设数组;

S102:利用第二数据类型的数据指针指向所述第一数据类型的图像数据,以使所述图像数据划分为若干所述第二数据类型的图像数据;

S103:根据所述第二数据类型的图像数据的大小端类型对每一所述第二数据类型的图像数据进行循环提取符合预设条件的数据;其中,所述预设条件用于筛选所述第二数据类型的图像数据中的灰度值数据;

S104:利用所述符合预设条件的数据对所述预设数组进行重新赋值;

S105:将所述预设数组发送给解码库进行解码。

在获取第一数据类型的图像数据后,定义第二数据类型的数据指针,并指向第一数据类型的图像数据。在此对于第一数据类型和第二数据类型均不作限定,容易理解的是,该第一数据类型可被拆分为第二数据类型。该第二数据类型可以为单一类型,也可以为多个类型,例如可为字节数相同的不同数据类型,本实施例中预设数组的类型与第一数据类型相匹配,从而可将第一数据类型的图像数据存入预设数组。举例来说,第一数据类型的图像数据可以unit_16类型的图像数据,对应的,预设数组可以为unit_16数组。容易理解的是,该第二数据类型的字节数小于第一数据类型的字节数。

需要说明的是,在步骤S102中,利用第二数据类型的数据指针指向第一数据类型的图像数据,相当于将该图像数据以第二数据类型进行划分,但该过程并不必须对图像数据执行实际的数据拆分操作,可以仅对图像数据以第二数据类型为单位执行数据区分,以便于后续对符合预设条件的数据进行数据提取。

此后根据第二数据类型的图像数据的大小端类型进行数据提取。需要说明的是,利用数据指针指向图像数据不改变图像数据的大小端类型。大端指高字节数据存放到内存的低地址,低字节数据存放在内存的高地址。小端是高字节数据存放到内存的高地址,低字节数据存放在内存的低地址。

本步骤对于如何确定图像数据的大小端类型不作限定,可以利用指针或者定义联合体确定图像数据的大小端类型。

利用指针确定图像数据的大小端类型时,可以利用指针截取第一个字节并读取以确定大小端类型。若定义联合体,则利用联合体中所有数据成员具有相同起始地址的特点加以确定,能简单、快速确定图像数据的大小端类型。利用联合体中所有数据成员具有同样的起始地址的特点,通过一个int成员存储1,然后通过char成员来读取,即可巧妙地得出数据存放的方式,若通过char成员(即读取起始位置上的第一个字节)读取,若得出值为1,则说明图像数据的大小端类型为小端模式。

一种可行的实施例中,该第一数据类型的图像数据可为YUV格式的图像数据,YUV是一种颜色编码格式,其中“Y”表示明亮度,也即灰度值,而“U”和“V”表示色度,也可以用Cb和Cr表示,Cb指蓝色色度分量,而Cr指红色色度分量。YUV格式按照数据大小可以分为三个格式,YUV 420,YUV 422,YUV 444。由于人眼对Y的敏感度远超于对U和V的敏感,所以多个Y分量可以共用一组UV,既可以极大得节省空间,又不太损失质量。其中,YUV 420由4个Y分量共用一套UV分量;YUV 422由2个Y分量共用一套UV分量;YUV 444中一个Y分量使用一套UV分量。

而本步骤获取的图像数据,对于其具体的YUV类型不作限定,可以以数组形式表示该YUV格式的图像数据。此外,对于YUV格式的图像数据的具体大小不作限定,例如可以为16比特。一种可行的方式中,本步骤可以直接获取以uint16_t数组形式的图像数据,uint16_t全称unsigned short,表示一个无符号的16比特的一个数据。

此后定义一个数据指针指向uint16_t数组形式的图像数据,该数据指针的字节数可以与图像数据中的灰度值数据的字节数相同。以图像数据为uint16_t为例,以YUV 4:2:2采样,每两个Y共用一组UV分量,一个YUV占8+4+4=16比特2个字节,其中灰度值Y占8比特,则在执行本步骤时,数据指针可以定义为uint8_t格式,uint8_t全称unsigned char,表示一个无符号的8比特的一个数据。

相应的划分过程可以如下:以16比特的YUV422格式数据为例,定义数据指针指向所述图像数据对应数组后,实际上将所述图像数据拆分为包含8比特Y数据、8比特U数据和8比特V数据的序列。且由于图像数据的构成为8Y+8U或8Y+8V,则实际得到的均为8比特数据,且Y数据交错分布,类似于U数据、Y数据、V数据、Y数据、U数据、Y数据、V数据、Y数据……U数据、Y数据,此时该图像数据以8比特Y数据和8比特U数据,或8比特Y数据和8比特V数据的形式存储于预设数组。

本申请实施例默认在执行步骤S103时需要确定第二数据类型的图像数据的大小端类型,此后可以据此提取灰度值数据。具体的,若所述图像数据为小端数据格式,确定所述灰度值数据存在于数组下标为奇数的位置。若所述图像数据为大端数据格式,确定灰度值数据存在于数组下标为偶数的位置。在确定灰度值数据的位置后,即可根据所述位置提取灰度值数据。

在此对于如何提取灰度值数据不作限定,可以在确定大小端类型后,采用循环语句提取灰度值数据,例如可以采用for循环语句提取灰度值数据。

此外,在确定大小端类型后,可以进一步利用循环语句将对应位置的灰度值数据赋值给数据数组,该数据数组与数据指针相对应,但仅赋值灰度值数据,最后可以得到仅包含灰度值数据的数据数组,如此能直接提取出所有待解码的灰度值数据,并剔除无需解码的其他数据,减少对于无需解码的数据的筛选过程,也有助于提高图像数据的整体解码效率。

在得到灰度值数据后,可以对预设数组进行重新赋值。通过重新赋值令预设数组中仅包含符合预设条件的数据,剔除不符合预设条件的数据,便于后续进行解码。

由于已将所有灰度值数据的数据数组上传至解码库,可直接将预设数组发送给解码库进行解码,解码库对数据数组中的灰度值解码后,得到上传解码结果。

本申请实施例获取到第一数据类型的图像数据后,通过第二数据类型的定义数据指针,将图像数据由第一数据类型拆分为第二数据类型,并进一步提取第二数据类型的图像数据中的灰度值数据进行解码,在解码过程中不必再申请中间内存,降低内存开销,并进一步提升对于图像数据的处理效率,优化系统运行。

下文以uint16_t类型的图像数据为例对本申请的一种具体应用过程进行说明,在日常生活中,常应用扫码技术,例如扫码支付、扫码通行等等,此时其过程涉及的图像数据处理过程可以具体如下,参见图2:

第一步、通过扫码获取图像数据,该图像数据为16比特的YUV422格式数据,即以8比特Y数据+8比特U数据或者8比特Y数据+8比特V数据的形式存储在图像数据对应的data数组中。

第二步、定义一个uint8_t格式的数据指针指向data数组。

本步骤相当于将uint16_t类型的数据YU或YV拆分成两个uint8_t类型的数据Y和V或者Y和U,使得所有预览数据排列顺序变成U数据、Y数据、V数据、Y数据、U数据、Y数据、V数据、Y数据……U数据、Y数据。

第三步、确定图像数据的大小端类型。如果是小端,使用for循环把数据指针对应数据数组中奇数下标的数据重新赋值给data数组;如果是大端,使用for循环把数据数组偶数下标的数据重新赋值给data数组;

第四步、利用符合预设条件的数据对data数组进行重新赋值,得到所有数据都是Y数据也即灰度值数据的数据数组,并将数据传给解码库。解码完成后即可得到解码结果。

下面对本申请实施例提供的一种图像数据解码装置进行介绍,下文描述的一种图像数据解码装置与上文描述的图像数据解码方法可相互对应参照。

参见图3,图3为本申请实施例所提供的一种图像数据解码装置的结构示意图,本申请还提供一种图像数据解码装置,包括:

获取模块,用于获取第一数据类型的图像数据,并将所述第一数据类型的图像数据存入预设数组;

指针定义模块,用于利用第二数据类型的数据指针指向所述第一数据类型的图像数据,以使所述图像数据划分为若干所述第二数据类型的图像数据;

灰度值提取模块,用于根据所述第二数据类型的图像数据的大小端类型对每一所述第二数据类型的图像数据进行循环提取符合预设条件的数据,并存入预设数组;其中,所述预设条件用于筛选所述第二数据类型的图像数据中的灰度值数据;

赋值模块,用于利用所述符合预设条件的数据对所述预设数组进行重新赋值;

解码模块,用于将所述预设数组发送给解码库进行解码。

基于上述实施例,作为优选的实施例,若所述第一数据类型的图像数据为16比特的YUV422格式数据,所述预设数组为16比特数组,所述指针定义模块包括:

定义单元,用于定义无符号的8比特数据指针指向所述图像数据对应数组,将所述图像数据拆分为包含8比特Y数据、8比特U数据和8比特V数据的序列;

存储单元,用于将所述图像数据以8比特Y数据和8比特U数据或8比特Y数据和8比特V数据的形式存储于所述预设数组。

基于上述实施例,作为优选的实施例,所述灰度值提取模块包括:

位置确定单元,用于若所述第二数据类型的图像数据的大小端类型为小端数据格式,确定所述符合预设条件的数据存在于数组下标为奇数的位置;若所述第二数据类型的图像数据的大小端类型为大端数据格式,确定所述符合预设条件的数据存在于数组下标为偶数的位置;

灰度值提取单元,用于根据所述位置执行循环提取。

基于上述实施例,作为优选的实施例,灰度值提取单元为用于利用循环语句循环提取所述位置对应的8比特Y数据的单元。

基于上述实施例,作为优选的实施例,赋值模块为利用所述8比特Y数据对所述预设数组进行重新赋值,得到仅包含所述灰度值数据的所述预设数组的模块。

基于上述实施例,作为优选的实施例,所述图像数据解码装置还可以包括:

大小端检测模块,用于利用指针或者定义联合体确定所述第二数据类型的图像数据的大小端类型。

基于上述实施例,作为优选的实施例,还包括:

结果获取模块,用于获取所述解码库的解码结果,并上传所述解码结果。

本申请还提供了一种计算机可读存储介质,其上存有计算机程序,该计算机程序被执行时可以实现上述实施例所提供的步骤。该存储介质可以包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

本申请还提供了一种电子设备,可以包括存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时,可以实现上述实施例所提供的步骤。当然所述电子设备还可以包括各种网络接口,电源等组件。

本申请还提供了一种电子设备,参见图4,本申请实施例提供的一种电子设备的结构图,如图4所示,可以包括处理器1410和存储器1420。

其中,处理器1410可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器1410可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器1410也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1410可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。

存储器1420可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器1420还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器1420至少用于存储以下计算机程序1421,其中,该计算机程序被处理器1410加载并执行之后,能够实现前述任一实施例公开的由电子设备侧执行的电子设备应用的图像数据解码方法中的相关步骤。另外,存储器1420所存储的资源还可以包括操作系统1422和数据1423等,存储方式可以是短暂存储或者永久存储。其中,操作系统1422可以包括Windows、Linux、Android等。

在一些实施例中,电子设备还可包括有显示屏1430、输入输出接口1440、通信接口1450、传感器1460、电源1470以及通信总线1480。

当然,图4所示的电子设备的结构并不构成对本申请实施例中电子设备的限定,在实际应用中电子设备可以包括比图4所示的更多或更少的部件,或者组合某些部件。

说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例提供的系统而言,由于其与实施例提供的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。

还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

相关技术
  • 一种图像增强方法、装置、电子设备及存储介质
  • 一种图像拼接方法、装置、电子设备及存储介质
  • 一种图像拼接方法、装置、电子设备及存储介质
  • 一种焊接图像采集方法、装置、电子设备和存储介质
  • 一种图像二值化方法、装置、电子设备及存储介质
  • 图像编码、图像解码方法、装置、电子设备及存储介质
  • 一种图像编码、解码方法、装置、电子设备及存储介质
技术分类

06120116501154