CN117255256A - 图像数据处理方法、装置、电子设备及可读存储介质 - Google Patents
图像数据处理方法、装置、电子设备及可读存储介质 Download PDFInfo
- Publication number
- CN117255256A CN117255256A CN202310914113.1A CN202310914113A CN117255256A CN 117255256 A CN117255256 A CN 117255256A CN 202310914113 A CN202310914113 A CN 202310914113A CN 117255256 A CN117255256 A CN 117255256A
- Authority
- CN
- China
- Prior art keywords
- image data
- storage space
- tile
- address
- image
- 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.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N23/00—Cameras or camera modules comprising electronic image sensors; Control thereof
- H04N23/80—Camera processing pipelines; Components thereof
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N7/00—Television systems
- H04N7/01—Conversion of standards, e.g. involving analogue television standards or digital television standards processed at pixel level
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Image Input (AREA)
Abstract
本申请公开了一种图像数据处理方法、装置、电子设备及可读存储介质,属于图像处理技术领域。该方法包括:对第一图像的图像数据流进行分组;每组图像数据流包括M行图像数据,或者,每组图像数据流包括至少一个图像数据块;M为正整数;针对每组图像数据流,在将一组图像数据写入对应的存储空间中的情况下,生成读地址,上述读地址用于指示一组所述图像数据中需要按块读出的各个图像数据在存储空间中的地址;按照读地址,将一组图像数据中的各个图像数据从存储空间中读出,并将下一组图像数据中的各个图像数据写入已读出图像数据的存储空间。
Description
技术领域
本申请属于图像处理技术领域,具体涉及一种图像数据处理方法、装置、电子设备及可读存储介质。
背景技术
在图像处理领域,为了更好地参考邻域的像素点,经常需要对图像数据进行按块处理,比如三维降噪算法,图像编解码,图像压缩等。目前,图像传感器通常是按照行扫描的方式输出视频数据流。因此在ISP(image signal processor)芯片的处理过程中就会涉及到行转块,块转行的图像变换。
在相关技术中,当进行行块互转时,为了保证实时视频数据流不被覆盖,采用乒乓缓存的方式。具体的就是使用两块缓冲区,以行转块(M*N)为例,首先将需要转换的按M行输入的数据流存入缓冲区1中,再按照块M*N从该缓冲区1中读出数据,与此同时将后续连续输入的M行数据同步按行存入缓冲区2中,重复上述步骤,按块读和按行写在两块缓冲区中交替进行。
由于上述方式需要消耗两块缓冲区空间,会消耗大量的存储资源,从而导致成本较高。
发明内容
本申请实施例的目的是提供一种图像处理方法、装置、电子设备及可读存储介质,能够实现图像数据的行块转换并且节省存储空间。
第一方面,本申请实施例提供了一种图像处理方法,该方法包括:对第一图像的图像数据流进行分组;每组图像数据流包括M行图像数据,或者,每组图像数据流包括至少一个图像数据块;M均为正整数;针对每组图像数据流,在将一组图像数据写入对应的存储空间中的情况下,生成读地址,上述读地址用于指示一组所述图像数据中需要按块读出的各个图像数据在存储空间中的地址;按照读地址,将一组图像数据中的各个图像数据从存储空间中读出,并将下一组图像数据中的各个图像数据写入已读出图像数据的存储空间。
第二方面,本申请实施例提供了一种图像处理装置,该装置包括:拆分模块、生成模块和处理模块,其中:上述拆分模块,用于对第一图像的图像数据流进行分组;每组图像数据流包括M行图像数据,或者,每组图像数据流包括至少一个图像数据块;M均为正整数;上述生成模块,用于针对拆分模块分组后得到的每组图像数据流,在处理模块将一组图像数据写入对应的存储空间中的情况下,生成读地址,上述读地址用于指示一组图像数据中需要按块读出的各个图像数据在所述存储空间中的地址;上述处理模块,用于按照生成模块生成的读地址,将一组图像数据中的各个图像数据从存储空间中读出,并将下一组图像数据中的各个图像数据写入已读出图像数据的存储空间。
第三方面,本申请实施例提供了一种电子设备,该电子设备包括处理器和存储器,所述存储器存储可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如第一方面所述的方法的步骤。
第四方面,本申请实施例提供了一种可读存储介质,所述可读存储介质上存储程序或指令,所述程序或指令被处理器执行时实现如第一方面所述的方法的步骤。
第五方面,本申请实施例提供了一种芯片,所述芯片包括处理器和通信接口,所述通信接口和所述处理器耦合,所述处理器用于运行程序或指令,实现如第一方面所述的方法。
第六方面,本申请实施例提供一种计算机程序产品,该程序产品被存储在存储介质中,该程序产品被至少一个处理器执行以实现如第一方面所述的方法。
在本申请实施例中,图像处理装置对第一图像的图像数据流进行分组;每组图像数据流包括M行图像数据,或者,每组图像数据流包括至少一个图像数据块;M为正整数;针对每组图像数据流,在将一组图像数据写入对应的存储空间中的情况下,生成读地址,上述读地址用于指示一组所述图像数据中需要按块读出的各个图像数据在存储空间中的地址;按照读地址,将一组图像数据中的各个图像数据从存储空间中读出,并将下一组图像数据中的各个图像数据写入已读出图像数据的存储空间。通过该方法,图像处理装置可以生成需要的读地址,并在根据读地址将图像数据从存储空间中读出的情况下,在已读出图像数据对应的存储位置,快速写入新的图像数据,实现了在一个存储空间中交替进行图像数据的读取和写入,从而能够高效地进行图像数据地按行写入,按块读出,实现了图像数据流的行块转换并且节省存储空间。
附图说明
图1为本申请实施例提供的图像数据处理方法的方法流程示意图;
图2(A)为本申请实施例提供的基于行扫描得到的图像数据的示意图;
图2(B)为本申请实施例提供的图像数据的读地址的示意图;
图3为本申请实施例提供的行块转换的图像数据的示意图;
图4为本申请实施例提供的图像数据处理方法的流程示意图;
图5为本申请实施例提供的图像数据处理装置的结构示意图;
图6为本申请实施例提供的电子设备的结构示意图;
图7为本申请实施例提供的电子设备的硬件结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中“和/或”表示所连接对象的至少其中之一,字符“/”,一般表示前后关联对象是一种“或”的关系。
本申请实施例可以应用于视频降噪、图像降噪、视频编辑码、图像编解码、视频压缩以及图像压缩的场景。
目前,在图像处理领域,为了更好地参考邻域的像素点,经常需要对图像数据进行按块处理,比如三维降噪算法,图像编解码,图像压缩等。而一般的CMOS图像传感器都是按照行扫描的方式输出视频数据流。因此在ISP(image signal processor)芯片的处理过程中就会涉及到行转块,块转行的图像变换。
常规的处理方案中,当进行行块互转时,为了保证实时视频数据流不被覆盖,采用乒乓缓存的方式。具体的就是使用两块存储空间,以行转块(M*N)为例,首先将需要转换的按M行输入的数据流存入第一块存储空间中,再按照块M*N从第一块存储空间中读出数据,与此同时将后续连续输入的M行数据同步按行存入第二块存储空间中,重复上述步骤,按块读和按行写在两块存储空间中交替进行。采用这种方式能保证数据流不会被覆盖,而且操作也比较简单,但是需要消耗两块存储空间,导致对存储空间的浪费。
本申请实施例提供的图像数据处理方法,图像处理装置可以生成需要的读地址,并在根据读地址将图像数据从存储空间中读出的情况下,在已读出图像数据对应的存储位置,快速写入新的图像数据,实现了在一个存储空间中交替进行图像数据的读取和写入,而不需要通过两块存储空间才能实现数据的行转块,从而能够高效地进行图像数据地按行写入,按块读出,实现了图像数据流的行块转换并且节省成本。
此外,在相关技术中,为了节省存储空间,可以通过对初始读写地址进行简单的移位操作得到所需要的操作地址,进而得到写地址和读地址的周期性变化,从而达到只使用一个存储空间实现行转块的操作。
然而,相关技术存在以下几点缺陷:
第一、为了能在同一时刻既能写入数据又能读取数据,使用的是双口SRAM来存储像素值,且例化的SRAM的深度必须是2^n,例如,存储1920*1080的图像,8*8的块需要8*2048深度的SRAM,导致芯片的功耗和面积较大。
第二、对数据块的大小规格进行了限制,比如M*N的数据块,M必须要等于2^i,其中i为正整数,这限制了其应用范围;
第三、只涉及从数据行到块的转换,如何通过一块存储空间实现从数据块到数据行的转换仍然是待解决的问题。
为了解决上述问题,本申请实施例提供的图像数据处理方法,一方面,通过单周期多像素写入和读写交错的方法使用单口SRAM替代双口SRAM,并且SRAM的深度按照实际的图像宽度大小配置,不需要为了2^n深度对齐造成SRAM空间的浪费,从而能够有效地降低芯片的功耗和面积;另一方面,支持任意大小的M*N(一般M、N为偶数)的块的转换,没有M必须为2^i的限制;再一方面,可以持数据行到数据块的快速转换以及数据块到数据行的快速转换,从而极大提高行数据和块数据转换的灵活性。
下面结合附图,通过具体的实施例及其应用场景对本申请实施例提供的图像处理方法进行详细地说明。
本申请实施例提供的图像数据处理方法的执行主体可以为电子设备,也可以为该电子设备中能够实现该图像数据处理方法的功能模块和功能实体中的至少之一,具体的可以根据实际使用需求确定,本发明实施例不作限定。
图1为本申请实施例提供的图像数据处理方法,如图1所示,该图像数据处理方法可以包括以下步骤S201至步骤S203:
步骤S201:图像数据处理装置对第一图像的图像数据流进行分组。
其中,每组图像数据流包括M行图像数据,或者,每组图像数据流包括至少一个图像数据块;M为正整数;
可选地,在本申请实施例中,上述第一图像可以为图像或者视频帧。
进一步可选地,在第一图像为图像的情况下,第一图像可以为摄像头拍摄得到的图像,或者为下载的图像。
可选地,在第一图像为视频帧的情况下,第一图像可以为在线视频的视频帧,或者离线视频的视频帧。
可选地,在本申请实施例中,图像数据处理装置可以通过行扫描方式对第一图像进行按行扫描,得到该第一图像的至少一行图像数据。
在一些可能的实现方式中,图像数据处理装置可以对第一图像的每行像素依次从左向右进行扫描,得到至少一行图像数据,其中,一行图像数据对应一行像素。
需要说明的是,对图像进行按行扫描,得到图像数据的具体实现方式可以参照相关技术,此处不再赘述。
可选地,在本申请实施例中,上述第一图像的图像分辨率可以为480p、960p或者1080p等,本申请实施例对此不作限定。
示例性地,在该第一图像的分辨率为1080p的情况下,该第一图像包括1920×1080的像素。其中,水平方向含有像素数为1920个,垂直方向像素数1080个。
可选地,在本申请实施例中,在得到第一图像的至少一行图像数据后,图像数据处理装置可以根据获取到图像数据的先后顺序,生成第一图像的图像数据流。
需要说明的是,数据流也可以称为流数据,指的是一串连续不断的数据的集合,图像数据流指的是一串具有先后顺序的图像数据序列。
可选地,在本申请实施例中,图像数据处理装置在对第一图像进行按行扫描,得到第一图像的至少一行图像数据后,可以基于预设的每个图像数据块包括的图像数据的行数,对上述至少一行图像数据进行分组。
示例性地,图像数据处理装置可以将获取到的图像数据流以每M行一组进行分组,得到至少一组图像数据。
示例性地,每个图像数据块包括的图像数据的行数可以为4行、8行或者12行等,具体可以根据实际需求设置,本申请实施例对此不作限定。
举例说明,以M为8为例,图像1在垂直方向上的像素数量480个,即该图像1包括480行像素,在对该图像1按行扫描后可以得到480行图像数据,图像数据处理装置将该480行图像数据对应的图像数据流按照每8行一组进行分组,可以得到60组图像数据。
可选地,在本申请实施例中,上述图像数据可以包括图像的像素值。示例性地,一个图像数据可以为图像的一个像素点的像素值。
在另一些可能的实现方式中,图像数据处理装置可以对第一图像块图像区域进行分块扫描,得到至少一个图像数据块。
可选地,在本申请实施例中,上述图像数据块可以为4*4的图像数据块或者8*8的图像数据块等,本申请实施例对此不作限定。
可选地,在本申请实施例中,每组图像数据流包括的图像数据块为第一图像的行方向上的数据块的个数。
举例说明,假设第一图像包括80行像素点,每行有240个像素点,按照8*8的块对第一图像进行扫描后,得到300个图像数据块,其中,该第一图像的行方向上包括30个图像数据块,即一行图像数据对应30个图像数据块。
步骤S202:针对每组图像数据流,图像数据处理装置在将一组图像数据写入对应的存储空间中的情况下,生成读地址。
其中,上述读地址用于指示一组所述图像数据中需要按块读出的各个图像数据在所述存储空间中的地址。
可选地,在本申请实施例中,上述一组图像数据可以为上述至少一组图像数据中的任意一组图像数据。
可选地,在本申请实施例中,上述存储空间为单口随机存取存储器SPRAM的存储空间、双口随机存取存储器的存储空间或者其它存储器的存储空间。
需要说明的是,单口随机存储器,即单端口随机存储器(Single-Port RAM,SPRAM);双口随机存储器,即双端口随机存储器(True Dual-Port RAM)。
需要说明的是,单口RAM输入只有一组数据线和一组地址线,只有一个时钟,读写共用地址线,输出只有一个端口,所以单端口RAM的读写操作不能同时进行。双口RAM输入有两组地址线和两组数据线,两个时钟,输出有两个分别的数据线,所以双口RAM两个端口都分别带有读写端口,可以在没有干扰的情况下进行读写,彼此互不干扰。单口RAM相比双口RAM在一般情况下无法同时交替进行数据的读取和写入操作,但是功耗相对单口RAM更低。
可选地,在本申请实施例中,上述存储空间的大小可以基于每一行图像数据对应的图像数据块的数量和每个图像数据块的数据行数确定。
可以理解的是,上述每一行图像数据对应的图像数据块的数量,即图像行方向上图像数据块的个数。
示例性地,以一行图像数据包括240个像素值为例,假设需要输出8*8的数据块,则每行像素值对应30个数据块,每个数据块包括8行像素值。
可选地,在本申请实施例中,图像数据处理装置可以基于需要按行读出的各个图像数据在存储空间中的地址的变化规律,确定需要按块读取的各个图像数据在存储空间中的地址,即上述读地址。
可选地,在本申请实施例中,图像数据处理装置可以将输入的M行图像数据按照顺序写入存储空间中,并且存储图像数据的地址依次累加。
可选地,在本申请实施例中,图像数据处理装置可以将每组图像数据流依次写入存储空间。
示例性地,假设图像数据包括60组图像数据,则可以将该60组数据循环写入上述存储空间。
步骤S203:图像数据处理装置按照上述读地址,将上述一组图像数据中的各个图像数据从上述存储空间中读出,并将下一组图像数据写入已读出图像数据的存储空间。
可选地,在本申请实施例中,图像数据处理装置可以根据需要按块读出的图像数据在存储空间中的地址,生成读地址,并根据读地址按块读出各个图像数据,并将下一组图像数据中的图像数据写入存储空间中已读出图像数据的存储位置。
可选地,在本申请实施例中,图像数据处理装置在每组图像数据流中的第M行图像数据写完成之后,可以按块读出数据流;或者,图像数据处理装置在每组图像数据流全部写完成之后,可以按行读出数据流。
可选地,在本申请实施例中,图像数据处理装置可以通过多次循环,将上述图像数据流中的多组图像数据进行写入和读出。
示例性地,在第一次循环中,图像数据处理装置将第一组图像数据按照顺序写入SPRAM的存储空间,在第二次循环中,将第一次写入的第一组图像数据按照M*N大小的图像数据块读出,并将第二组图像数据写入到已经按块读出的SPARM存储空间,在第三次循环中,按M*N块读出第二次循环写入的图像数据,并将第三组图像数据写入到已经按块读出的SPRAM存储空间,依次类推,直至将最后一组图像数据按块读出。
其中,M为第一图像的一个图像数据块包括的图像数据的行数,N为一个图像数据块中的一行数据的数据个数,N为正整数。
示例地,上述M*N可以为8*8、8*4、4*8或者16*16等。
可选地,在本申请实施例中,图像数据处理装置可以在读取出一组图像数据中的一个图像数据块的情况下,在读取出该图像数据块的存储空间存储下一组图像数据;或者,图像数据处理装置可以在读取出一组图像数据中的一个图像数据块的一个图像数据的情况下,在读取出该图像数据的存储空间存储下一组图像数据中的一个图像数据。
针对分组后得到的每组图像数据流,均可以通过执行上述步骤S202和步骤S203及其相关方案,以写入存储空间。
本申请实施例提供的图像数据处理方法,图像处理装置对第一图像的图像数据流进行分组;每组图像数据流包括M行图像数据,或者,每组图像数据流包括至少一个图像数据块;M为正整数;针对每组图像数据流,在将一组图像数据写入对应的存储空间中的情况下,生成读地址,上述读地址用于指示一组所述图像数据中需要按块读出的各个图像数据在存储空间中的地址;按照读地址,将一组图像数据中的各个图像数据从存储空间中读出,并将下一组图像数据中的各个图像数据写入已读出图像数据的存储空间。通过该方法,图像处理装置可以生成需要的读地址,并在根据读地址将图像数据从存储空间中读出的情况下,在已读出图像数据对应的存储位置,快速写入新的图像数据,实现了在一个存储空间中交替进行图像数据的读取和写入,从而能够高效地进行图像数据地按行写入,按块读出,实现了图像数据流的行块转换并且节省存储空间。
可选地,在本申请实施例中,每组图像数据流包括M行图像数据;上述步骤S202中图像数据处理装置生成读地址的过程,可以包括以下步骤S202a和步骤S202b:
步骤S202a:图像数据处理装置基于第一图像中行方向上的图像数据块的数量,计算一组图像数据中待读出的目标图像数据在存储空间中的地址。
步骤S202b:图像数据处理装置根据目标图像数据在存储空间中的地址,生成目标图像数据对应的读地址。
可选地,在本申请实施例中,第一图像中行方向上的图像数据块是基于第一图像一行像素点的数量和图像数据块的尺寸确定的。
可选地,在本申请实施例中,一个目标图像数据包括N个图像数据。
可选地,在本申请实施例中,上述目标图像数据为需要输出的图像数据块中的图像数据。
示例性地,以需要输出8*8的图像数据块为例,一个图像数据块8*8包括8个目标图像数据,一个目标图像数据包括8个像素值。
示例性地,假设第一图像包括100行像素点,每行像素点的个数为240个,以图像数据块的尺寸为8*8为例,则第一图像中行方向上的图像数据块的数量为30个,即240/8。
示例性地,结合上述实施例,以一组图像数据包括8行图像数据、每行图像数据包括240个像素值为例,在将该一组图像数据写入至尺寸为30*8的RAM存储空间后,RAM存储空间的第一行存储单元存储第一行像素值对应的30个数据块,第一行存储单元的地址范围为0-29;RAM存储空间的第二行存储单元存储第二行像素值对应的30个数据块,第二行存储单元的地址范围为30-59,以此类推,RAM存储空间的第八行存储单元存储第八行像素值对应的30个数据块,第八行存储单元的地址范围为210-239,根据各个数据块在存储空间中的地址可以确定该一组像素值中待读出的第一个数据块对应的第一个目标像素值的地址为0,第二个目标像素值的地址为30,第三个目标像素值的地址为60,以此类推。
需要说明的是,尺寸为30*8的RAM指的是RAM存储空间包括8行存储单元,一行存储单元包括30个存储单元,每个存储单元可以存储8个像素值,8个像素值为一个数据块的一行数据。该RAM存储空间的存储单元对应的存储地址范围为0-239。
可选地,在本申请实施例中,图像数据处理装置将目标图像数据在存储空间中的地址,作为目标图像数据对应的读地址。
示例性地,结合上述实施例,该一组像素值中待读出的第一个数据块对应的第一个目标像素值的地址为0,则该第一个数据块对应的第一个目标像素值对应的读地址为0,也就是说,图像处理装置可以在地址为0的存储单元中读出该第一个目标像素值。
可选地,在本申请实施例中,上述步骤S202a可以通过以下步骤S202a1实现:
步骤S202a1:图像数据处理装置采用第一公式,根据图像在行方向上的图像数据块的数量与每个所述图像数据块对应的图像数据的行数,计算一组所述图像数据中待读出的第i+1个目标图像数据在存储空间中的地址;i∈[0,tile_num*M-1],且i为整数;
其中,上述第一公式为:An(i)=(i*tile_num^n-1)%(tile_num*M-1)+1,tile_num为图像在行方向上的图像数据块的数量,n等于所述图像数据所在的分组减去1。
示例性地,以tile_num等于30,M等于8为例,在采用第一公式计算第一组图像数据的第1个目标图像数据在存储空间中的地址的情况下,将tile_num等于30、M等于8、i等于0、以及n等于0(即1-1)代入上述第一公式,得到An(0)等于0,即第一组图像数据的第1个目标图像数据在存储空间中的地址为0。
以下通过具体的实施例对本申请实施例上述确定读地址的过程进行解释说明。
示例性地,以将1080P图像按行扫描得到的多行图像数据转换成8*8块为例,如图2(A)所示,对该图像行扫描后得到1080行像素值,每一行的像素值个数为1920个,每8行像素值划分为一组。其中,第一行的第一个像素值用Y0_0表示,第一行的第二个像素值用Y0_1表示,……,第一行的第1920个像素值用Y0_1919表示,同理,第二行的第一个像素值用Y1_0表示,第二行的第二个像素值用Y1_1表示,……,第二行的第1920个像素值用Y1_1919表示,实线框内的像素值表示需要对第一组图像数据转换得到的第一个图像数据块包含的所有图像数据,P11、P21至P81分别表示该图像数据块中的一行像素值,该一行像素值可以视为一个像素值集合,即上述目标图像数据。
结合上述图2(A),在第一次循环中,图像数据处理装置将该图像的像素值写入至SPRAM,一个地址存储8个像素值,如图2(B)所示,Content(N=240)表示在行方向上对应有240个图像数据块,在第一次循环中,图像处理装置将第一组图像数据存储至相应的地址空间,在图2(B)中,P11表示第一组像素值对应的第一个图像数据块的第一行图像数据,P12表示第一组像素值对应的第二个图像数据块的第一行图像数据,……,P1N表示第一组像素值对应的第N个图像数据块的第一行图像数据,P21表示第一组像素值对应的第一个图像数据块的第二行图像数据,P22表示第二行像素值对应的第二个图像数据块的第二行图像数据,……,P2N表示第一组像素值对应的第N个图像数据块的第二行图像数据,同理,P81表示第一组像素值对应的第一个图像数据块的第八行图像数据,P82表示第一组像素值对应的第二个图像数据块的第八行图像数据,……,P8N表示第一组像素值对应的第N个图像数据块的第八行图像数据,P11的地址为0,P12的地址为1,……,P8N的地址为1919。在将上述一组像素值写入SPRAM后,开始第二次循环,图像数据处理装置根据第一公式,计算该一组像素值对应的各个图像数据块需要读取的目标像素值的地址,然后根据地址将目标图像数据按块读出,并将第二组像素值写入到已经按块读出的SPRAM存储空间,如图2(B)所示,按块读出的目标像素值的地址分别为0、240、480、……、1919。在第三次循环中,图像数据处理装置根据上述第一公式,计算上一组像素值对应的各个图像数据块需要读取的目标像素值的地址,然后根据地址将目标图像数据按块读出,并将第三组像素值写入到已经按块读出的SPRAM存储空间,如图2(B)所示,按块读出的目标像素值的地址分别为0、30、60、……、1919。依次类推,直至将该图像的135组像素值全部转换为块像素输出。
结合上述图2(A)和图2(B),图3为本申请实施例提供的行块转换的图像数据的示意图。如图3所示,左图为将按行扫描得到的像素值按行存储至存储空间中的示意图,左图中的每一列像素值构成一个图像数据块,每列像素值中的一个像素值包含8个像素的像素值,即8个像素值存储在一个存储单元中,如图3所示,P0_0表示第1个至第8个像素值,N表示在行方向上的数据块个数。图3中的右图为将按行写入的像素值转换为数据块时,各个数据块的排布,如图3所示,第一行的像素值构成一个数据块。
以下对上述第一公式的推导过程进行详细的解释说明。
示例性地,先定义“tile_num”为图像行方向上块的个数,即tile_num等于图像的宽度除以N,即img_width/N。“tile_height”为图像块相关的行数,即也等于M,表示一个块包含了M行。每M行图像像素的读写周期为一个循环操作,并且写操作有比读操作更高的优先级。对于按行扫描的k ppc(pixel per cycle)的输入图像数据流,首先按照2k ppc合并像素,这样做的目的是为了数据交错读写SPRAM。SPRAM的宽度为像素位宽乘以2k,即pixel_width*2k,SPRAM的深度为图像宽度乘以M除以2k,即img_width*M/2k。
第一次循环中,输入的M行图像数据流按照顺序将合并的2k像素写入SPRAM中,地址依次累加。在M行图像数据流全部写完成之后,可以按块M*N读出数据流,为了较少数据读出延迟时间,可以在第M行数据写满一个块的时候,开始第一个M*N块数据的读出。为了描述方便,这里假设N=2k,一般情况下,N为2k的整数倍。
第二次循环中,第一次循环中写入的数据在第二次循环中按M*N块读出,同时新的M行图像视频流要写入到已经按块读出的SPRAM存储空间。第一个数据块读出的地址跳转规则为:
0,
tile_num,
2*tile_num,
3*tile_num,
…,
(M-1)*tile_num;
第二个数据块的读地址跳转规则为
1,
1+tile_num,
1+2*tile_num,
1+3*tile_num,
…,
1+(M-1)*tile_num;
以此类推,可以得到最后一个数据块的地址跳转规则为
tile_num-1,
tile_num-1+tile_num,
tile_num-1+2*tile_num,
tile_num-1+3*tile_num,
…,
tile_num-1+(M-1)*tile_num;
需要说明的是,由于在第二次循环中,新的M行图像数据流需要写入到已经按块读出的空间,所以第二次循环中新的M行图像数据流的写地址规则是跟随之前的M*N块的读地址规则。
第三次循环中,按M*N块读出第二次循环写入的视频数据流,同时新的M行图像视频流要写入到已经按块读出的SPRAM存储空间。第一个数据块读出的地址跳转规则为:
0,
(tile_num^2-1)%(tile_num*M-1)+1,
(2*tile_num^2-1)%(tile_num*M-1)+1,
(3*tile_num^2-1)%(tile_num*M-1)+1,
…,
((M-1)*tile_num^2-1)%(tile_num*M-1)+1,
第二个块读出的地址跳转规则为
1,
1+(tile_num^2-1)%(tile_num*M-1)+1,
1+(2*tile_num^2-1)%(tile_num*M-1)+1,
1+(3*tile_num^2-1)%(tile_num*M-1)+1,
…,
1+((M-1)*tile_num^2-1)%(tile_num*M-1)+1,
以此类推,可以得到最后一个块的地址跳转规则为
tile_num-1,
tile_num-1+(tile_num^2-1)%(tile_num*M-1)+1,
tile_num-1+(2*tile_num^2-1)%(tile_num*M-1)+1,
tile_num-1+(3*tile_num^2-1)%(tile_num*M-1)+1,
…,
tile_num-1+((M-1)*tile_num^2-1)%(tile_num*M-1)+1,
对上面的描述进行总结,可以得到一般性的规律如下:
对于第一次循环:
A0(i)=i,i∈[0,tile_num*M-1],其中“A0”表示第一次循环写地址,i表示输入图像数据流的第i+1个2k像素。
对于第二次循环:
A1(i)=(i*tile_num-1)%(tile_num*M-1)+1,
对于第三次循环:
A2(i)=(i*tile_num^2-1)%(tile_num*M-1)+1,
…,
以此类推,对于第n+1次循环:
An(i)=(i*tile_num^n-1)%(tile_num*M-1)+1,
可选地,上述公式中,tile_num*M为SPRAM的地址空间大小,tile_num^n在硬件实现的时候,图像数据处理装置可以首先保存上一次循环的tile_num^(n-1)的值,在当前次循环使用的时候乘以tile_num,从而提高运算效率。
基于上述计算结果,可以得到一般性的规律如下:
对于第一次循环:
A0(i)=i,i∈[0,tile_num*M-1],“A”表示第一次循环写地址,i表示输入图像数据流的第i个2k像素。
对于第二次循环:
A1(i)=(i*tile_num-1)%(tile_num*M-1)+1,
对于第三次循环:
A2(i)=(i*tile_num^2-1)%(tile_num*M-1)+1,
…,
以此类推,对于第n+1次循环:
An(i)=(i*tile_num^n-1)%(tile_num*M-1)+1,
需要说明的是,在上述公式中,tile_num*M为SPRAM的地址空间大小。
可选地,在本申请实施例中,在硬件实现的过程中,图像数据处理装置可以首先保存上一次循环的tile_num^(n-1)的值,并在当前次循环使用的时候乘以tile_num,从而提高数据运算的效率。
本申请实施例提供的图像数据处理方法,图像数据处理装置可以采用第一公式,基于图像在行方向上的图像数据块的数量与每个所述图像数据块对应的图像数据的行数,计算一组所述图像数据中待读出的每个目标图像数据在存储空间中的地址,从而能够高效准确地根据待读出的每个目标图像数据的地址按块读出的各个图像数据。
可选地,在本申请实施例中,上述步骤S203中按照读地址,将一组所述图像数据中的各个图像数据从存储空间中读出,并将图像数据的下一组图像数据中的各个图像数据写入已读出图像数据的存储空间的过程,可以通过以下步骤S203a来实现:
步骤S203a:图像数据处理装置按照上述第i+1个目标图像数据对应的读地址,将上述第i+1个目标图像数据从上述存储空间读出,并将下一组图像数据中的第j个图像数据写入已读出上述第i+1个目标图像数据的存储空间。
其中,j∈[1,tile_num*M]。
在本申请实施例中,图像数据处理装置可以在将一个目标图像数据取出后,将一个新的图像数据写入至取出该目标图像数据的存储空间。
示例性地,结合上述实施例,图像数据处理装置先将第一组像素值中的第一个数据块对应的第一个目标像素值从一个存储地址对应的存储单元取出,并在将该目标像素值从其存储地址对应的存储空间取出之后,将第二组像素值中的第一个像素值写入至该存储空间,接着,图像数据处理装置继续将第1组像素值中的第一个数据块对应的第二个目标像素值从其存储地址对应的存储空间取出,并在将该第二个目标像素值取出之后,第二组像素值中的第二个像素值写入该存储空间,依次类推,直至将所有按行写入的像素值按块读出。
需要说明的是,在将最后一组像素值写入存储空间之后,只需要将该最后一组像素值按块读出,而不需要再写入像素值。
本申请实施例中,图像数据处理装置每从存储空间中读出一个图像数据,便将一个新的图像数据写入至读出图像数据的存储空间,通过读取和写入的交替进行,极大提高对图像数据进行行转块处理效率。
可选地,在本申请实施例中,每组图像数据流包括至少一个图像数据块;示例性地,上述步骤S202中生成读地址的过程可以包括以下步骤S202c和步骤S202d:
步骤S202c:图像数据处理装置基于第一图像中行方向上的图像数据块的数量和一个图像数据块对应的图像数据的行数,计算一组图像数据中待读出的目标图像数据在存储空间中的地址。
步骤S202d:图像数据处理装置根据目标图像数据在存储空间中的地址,生成目标图像数据对应的读地址。
可选地,在本申请实施例中,图像数据处理装置可以将目标图像数据在存储空间中的地址,作为目标图像数据对应的读地址。
示例性地,结合上述实施例,以第一图像中行方向上的图像数据块的数量为30个、一行图像数据包括240个图像数据、一个图像数据块对应的图像数据的行数为8行为例,需要读出的第一行图像数据的第一个图像数据的地址为0,需要读出的第一行图像数据的第二个图像数据的地址为8,需要按行读出的第一行图像数据的第三个图像数据的地址为16,依次类推,需要按行读出的第一行图像数据的最后一个图像数据的地址为232,即,29*8。
需要说明的是,根据上述实施例处理的行到块的变换,块到行变换可以看作是行到块变换的逆过程。为了实现块到行的变换,可以上述的‘tile_num’和‘tile_height’的定义对调即可,这是因为按照像素的处理方式来看基于行的图像矩阵和基于块的图像矩阵是转置矩阵的关系。
本申请实施例提供的图像数据处理方法,图像处理装置图像将接收到的图像数据流按照进行分组,得到L组图像数据,在将第h组图像数据写入存储空间中的情况下,根据第二地址跳转规则,生成读地址,其中,0≤h≤L-1;然后,按照上述读地址,将上述第h组图像数据从上述存储空间中读出,并将第h+1组图像数据写入已读出的所述图像数据对应的存储空间。
本申请实施例中,图像处理装置可以根据得出所需要按行读出的图像数据对应的读地址,并在根据读地址将图像数据从存储空间中读出的情况下,在已读出图像数据对应的存储位置,快速写入新的图像数据,实现了在一个存储空间中交替进行图像数据的读取和写入,从而能够高效地进行图像数据地按块写入,按行读出,实现了图像数据流的行块转换并且节省存储空间。
可选地,在本申请实施例中,上述步骤S202c可以通过以下步骤S202c1实现:
步骤S202c1:图像处理装置采用第二公式,根据基于图像在在行方向上的图像数据块的数量和一个图像数据块对应的图像数据的行数,计算一组所述图像数据中待读出的第i个目标图像数据在所述存储空间中的地址。
其中,i∈[0,tile_height*tile_num-1],且i为正整数。
其中,上述第二公式为:An(i)=(i*tile_height^n-1)%(tile_height*tile_num-1)+1;tile_num为第一图像在行方向上的图像数据块的数量,tile_height为一个图像数据块包含的图像数据的行数。
示例性地,以tile_height等于8为例,在采用第二公式计算第一组图像数据的第1个目标图像数据在存储空间中的地址的情况下,将tile_height等于8、i等于0、以及n等于0(即1-1)代入上述第一公式,得到An(0)等于0,即第一组图像数据的第1个目标图像数据在存储空间中的地址为0。
以下对上述第二公式的推导过程进行详细的解释说明。
沿用上述行转块的参数定义,以下为块转行的前两次循环的写/读地址的变化规则,以及推断出的循环地址变化规律。
第一次循环中,输入的M*N块图像数据流按照顺序将M个N像素的块数据写入SPRAM中,地址依次累加。
第二次循环中,第一次循环中写入的块数据流在第二次循环中按行读出,同时新的M行的M*N块图像视频流要写入到已经按行读出的SPRAM存储空间。第一行读出的地址跳转规则为
0,
tile_height,
2*tile_height,
3*tile_height,
…,
(tile_num-1)*tile_height;
第二行的读地址跳转规则为
1,
1+tile_height,
1+2*tile_height,
1+3*tile_height,
…,
1+(tile_num-1)*tile_height;
以此类推,可以得到最后一行的地址跳转规则为
tile_height-1,
tile_height-1+tile_height,
tile_height-1+2*tile_height,
tile_height-1+3*tile_height,
…,
tile_height-1+(tile_num-1)*tile_height;
需要说明的是,由于在第二次循环中,新的M行的M*N块图像数据流需要写入到已经按行读出的空间,所以第二次循环中新的M行的M*N块图像数据流的写地址规则是跟随之前的M行的读地址规则。
根据上述读地址和写地址的变化规律,可以得到一般性的规律如下:
对于第一次循环:
A0(i)=i,i∈[0,tile_height*tile_num-1],“A0”表示第一次循环写地址,i表示输入图像块数据流的第i个像素。
对于第二次循环:
A1(i)=(i*tile_height-1)%(tile_height*tile_num-1)+1,
对于第三次循环:
A2(i)=(i*tile_height^2-1)%(tile_height*tile_num-1)+1,
…,
以此类推,对于第n+1次循环:
An(i)=(i*tile_height^n-1)%(tile_height*tile_num-1)+1,
可选地,在本申请实施例中,上述步骤S202中将一组所述图像数据写入对应的存储空间的过程,可以通过以下步骤A1实现:
步骤A1:图像数据处理装置将一组图像数据中的相邻两个图像数据进行合并,并将合并后的每个图像数据通过一个时钟周期写入至SPRAM的存储空间。
可选地,在本申请实施例中,图像数据处理装置可以交替执行图像数据的读取和写入。
可选地,在本申请实施例中,图像数据处理装置在对第一图像按行扫描,得到输入图像数据流的情况下,首先按照将相邻两个图像数据合并,得到一个合并后的图像数据,然后在一个时钟周期内将该合并后的图像数据传输并写入至存储空间。
示例性地,图像数据处理装置可以对图像数据流中的相邻两个像素数据进行像素合并,得到合并后的像素数据。
需要说明的是,对于像素合并的具体过程可以参见相关技术,本申请实施例对此不做赘述。
可选地,在本申请实施例中,图像数据处理装置可以在一个时钟周期内对图像数据进行写入,并在该时钟周期的下一个时钟周期内,对图像数据进行读出;或者,图像数据处理装置可以在一个时钟周期内对图像数据进行读出,并在该时钟周期的下一个时钟周期内,对图像数据进行写入。
在一种示例中,以一组图像数据包括500个像素值为例,假设总的时钟周期数量为500,图像数据处理装置将上述500个像素值中的相邻像素值进行像素合并,得到合并后的250个像素数据,并通过250个时钟周期分别将上述250个像素数据写入至相应的存储空间,然后,通过余下的250个时钟周期将上述250个像素数据按块读出,以交替执行对图像数据的读取和写入操作。
在另一种示例中,图像数据处理装置在按块读出已写入M行像素数据的情况下,在一个时钟周期内读出一个像素数据,并在该时钟周期的下一个周期内写入一个新的像素数据,以交替执行对图像数据的读取和写入操作。
在本申请实施例中,通过将数据合并后进行传输,使得一个时钟周期可以实际传输两个图像数据,从而能够空余一个时钟周期进行新的图像数据的写入,从而能够通过一个单口RAM,实现了对图像数据交替进行读取和写入,在保证了图像数据处理效率的情况下,使用单口RAM能够有效降低系统功耗。
可选地,在本申请实施例中,图像处理装置按照读地址,将第h组图像数据从存储空间中读出之后,可以对合并的图像数据进行拆分,得到每个独立的图像数据。
示例性地,图像数据处理装置可以合并后的像素数据进行拆分,得到每个像素点对应的像素数据。
需要说明的是,上述像素数据可以包括像素值。
结合上述实施例,图4为本申请实施例提供的图像数据处理方法的流程示意图,如图4所示,对于按行扫描的k ppc(pixel per cycle)的输入图像数据流,首先按照2k ppc合并像素,以使得SPRAM交错执行数据的写入和读出操作。SPRAM的宽度为像素位宽乘以2k,即pixel_width*2k,SPRAM的深度为图像宽度乘以M除以2k,即img_width*M/2k。然后,生成写地址,并根据写地址将合并后的像素写入至SPRAM的存储空间,根据上述第一地址跳转规则,生成读地址,并根据上述读地址将写入的像素值按块读出,并对读出后的像素值进行拆分,得到每个像素点对应的像素值。
本申请实施例提供的图像数据处理方法,能够支持任意大小的图像分辨率和任意大小的M*N块之间的互转,通过多次循环找到读写地址的变化规律,使用单口SPRAM来存储图像行或者图像块数据,相比于通用的行块变换方案,本申请提出的图像数据处理方法更能节省芯片的面积和功耗;并且根据行块转换图像矩阵之间的转置特征,提出了块转行的思路和实施方式,这也使得本申请的图像数据处理方法的应用范围更广。
本申请实施例提供的图像数据处理方法,执行主体可以为图像数据处理装置。本申请实施例中以图像数据处理装置执行图像数据处理方法为例,说明本申请实施例提供的图像数据处理装置。
图5为本申请实施例提供的图像数据处理装置的结构示意图,如图5所示,上述图像数据处理装置包括拆分模块501、生成模块502和处理模块503,其中:所述拆分模块501,用于对第一图像的图像数据流进行分组;每组所述图像数据包括M行图像数据,或者,所述每组所述图像数据包括至少一个图像数据块;M为正整数;所述生成模块502,用于针对所述拆分模块分组后得到的每组所述图像数据,在所述处理模块将一组所述图像数据写入对应的存储空间中的情况下,生成读地址,所述读地址用于指示一组所述图像数据中需要按块读出的各个图像数据在所述存储空间中的地址;所述处理模块503,用于按照所述生成模块生成的所述读地址,将一组所述图像数据中的各个图像数据从所述存储空间中读出,并将下一组图像数据中的各个图像数据写入已读出图像数据的存储空间。
可选地,在本申请实施例中,每组所述图像数据包括M行图像数据;
所述生成模块,具体用于基于所述第一图像中行方向上的图像数据块的数量,计算一组所述图像数据中待读出的目标图像数据在所述存储空间中的地址;
所述生成模块,具体用于根据所述目标图像数据在所述存储空间中的地址,生成所述目标图像数据对应的读地址。
可选地,在本申请实施例中,所述生成模块,具体用于采用第一公式,根据第一图像中行方向上的图像数据块的数量与每个所述图像数据块对应的图像数据的行数,计算一组所述图像数据中待读出的第i+1个目标图像数据在所述存储空间中的地址;i∈[0,tile_num*M-1],且i为整数;
其中,所述第一公式为:An(i)=(i*tile_num^n-1)%(tile_num*M-1)+1,tile_num为图像在行方向上的图像数据块的数量,n等于所述图像数据所在的分组减去1。
可选地,在本申请实施例中,所述处理模块,具体用于按照所述第i个目标图像数据对应的读地址,将所述第i个目标图像数据从所述存储空间读出,并将下一组图像数据中的第j个图像数据写入已读出所述第i个目标图像数据的存储空间;j∈[1,tile_num*M]。
可选地,在本申请实施例中,所述每组所述图像数据包括至少一个图像数据块;
所述生成模块,具体用于基于所述第一图像中行方向上的图像数据块的数量和一个图像数据块对应的图像数据的行数,计算一组所述图像数据中待读出的目标图像数据在所述存储空间中的地址;
所述生成模块,具体用于根据所述目标图像数据在所述存储空间中的地址,生成所述目标图像数据对应的读地址。
可选地,在本申请实施例中,所述生成模块,具体用于采用第二公式,根据基于图像在在行方向上的图像数据块的数量和一个图像数据块对应的图像数据的行数,计算一组所述图像数据中待读出的第i个目标图像数据在所述存储空间中的地址;i∈[0,tile_height*tile_num-1],且i为正整数;
其中,所述第二公式为:An(i)=(i*tile_height^n-1)%(tile_height*tile_num-1)+1;tile_num为第一图像在行方向上的图像数据块的数量,tile_height为一个图像数据块包含的图像数据的行数。
可选地,在本申请实施例中,所述处理模块,具体用于将一组所述图像数据中的相邻两个图像数据进行合并,并将合并后的每个图像数据,通过一个时钟周期写入至所述SPRAM的存储空间。
本申请实施例提供的图像数据处理装置,图像处理装置对第一图像的图像数据流进行分组;每组图像数据流包括M行图像数据,或者,每组图像数据流包括至少一个图像数据块;M为正整数;针对每组图像数据流,在将一组图像数据写入对应的存储空间中的情况下,生成读地址,上述读地址用于指示一组所述图像数据中需要按块读出的各个图像数据在存储空间中的地址;按照读地址,将一组图像数据中的各个图像数据从存储空间中读出,并将下一组图像数据中的各个图像数据写入已读出图像数据的存储空间。通过该方法,图像处理装置可以生成需要的读地址,并在根据读地址将图像数据从存储空间中读出的情况下,在已读出图像数据对应的存储位置,快速写入新的图像数据,实现了在一个存储空间中交替进行图像数据的读取和写入,从而能够高效地进行图像数据地按行写入,按块读出,实现了图像数据流的行块转换并且节省存储空间。
本申请实施例中的图像数据处理装置可以是电子设备,也可以是电子设备中的部件,例如集成电路或芯片。该电子设备可以是终端,也可以为除终端之外的其他设备。示例性的,电子设备可以为手机、平板电脑、笔记本电脑、掌上电脑、车载电子设备、移动上网装置(Mobile Internet Device,MID)、增强现实(augmented reality,AR)/虚拟现实(virtual reality,VR)设备、机器人、可穿戴设备、超级移动个人计算机(ultra-mobilepersonal computer,UMPC)、上网本或者个人数字助理(personal digital assistant,PDA)等,还可以为服务器、网络附属存储器(Network Attached Storage,NAS)、个人计算机(personal computer,PC)、电视机(television,TV)、柜员机或者自助机等,本申请实施例不作具体限定。
本申请实施例中的图像数据处理装置可以为具有操作系统的装置。该操作系统可以为安卓(Android)操作系统,可以为ios操作系统,还可以为其他可能的操作系统,本申请实施例不作具体限定。
本申请实施例提供的图像数据处理装置能够实现图1至图4的方法实施例实现的各个过程,为避免重复,这里不再赘述。
可选地,如图6所示,本申请实施例还提供一种电子设备600,包括处理器601和存储器602,存储器602上存储有可在所述处理器601上运行的程序或指令,该程序或指令被处理器601执行时实现上述图像数据处理方法实施例的各个步骤,且能达到相同的技术效果,为避免重复,这里不再赘述。
需要说明的是,本申请实施例中的电子设备包括上述所述的移动电子设备和非移动电子设备。
图7为实现本申请实施例的一种电子设备的硬件结构示意图。
该电子设备100包括但不限于:射频单元101、网络模块102、音频输出单元103、输入单元104、传感器105、显示单元106、用户输入单元107、接口单元108、存储器109、以及处理器110等部件。
本领域技术人员可以理解,电子设备100还可以包括给各个部件供电的电源(比如电池),电源可以通过电源管理系统与处理器110逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。图7中示出的电子设备结构并不构成对电子设备的限定,电子设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置,在此不再赘述。
其中,所述处理器110,用于对第一图像的图像数据流进行分组;每组所述图像数据包括M行图像数据,或者,所述每组所述图像数据包括至少一个图像数据块;M为正整数;所述处理器110,用于针对所述处理器110分组后得到的每组所述图像数据,在所述处理器110将一组所述图像数据写入对应的存储空间中的情况下,生成读地址,所述读地址用于指示一组所述图像数据中需要按块读出的各个图像数据在所述存储空间中的地址;所述处理器110,用于按照所述处理器110生成的所述读地址,将一组所述图像数据中的各个图像数据从所述存储空间中读出,并将下一组图像数据中的各个图像数据写入已读出图像数据的存储空间。
可选地,在本申请实施例中,每组所述图像数据包括M行图像数据;
所述处理器110,具体用于基于所述第一图像中行方向上的图像数据块的数量,计算一组所述图像数据中待读出的目标图像数据在所述存储空间中的地址;
所述处理器110,具体用于根据所述目标图像数据在所述存储空间中的地址,生成所述目标图像数据对应的读地址。
可选地,在本申请实施例中,所述处理器110,具体用于采用第一公式,根据第一图像中行方向上的图像数据块的数量与每个所述图像数据块对应的图像数据的行数,计算一组所述图像数据中待读出的第i+1个目标图像数据在所述存储空间中的地址;i∈[0,tile_num*M-1],且i为整数;
其中,所述第一公式为:An(i)=(i*tile_num^n-1)%(tile_num*M-1)+1,tile_num为图像在行方向上的图像数据块的数量,n等于所述图像数据所在的分组减去1。
可选地,在本申请实施例中,所述处理器110,具体用于按照所述第i个目标图像数据对应的读地址,将所述第i个目标图像数据从所述存储空间读出,并将下一组图像数据中的第j个图像数据写入已读出所述第i个目标图像数据的存储空间;j∈[1,tile_num*M]。
可选地,在本申请实施例中,所述每组所述图像数据包括至少一个图像数据块;
所述处理器110,具体用于基于所述第一图像中行方向上的图像数据块的数量和一个图像数据块对应的图像数据的行数,计算一组所述图像数据中待读出的目标图像数据在所述存储空间中的地址;
所述处理器110,具体用于根据所述目标图像数据在所述存储空间中的地址,生成所述目标图像数据对应的读地址。
可选地,在本申请实施例中,所述处理器110,具体用于采用第二公式,根据基于图像在在行方向上的图像数据块的数量和一个图像数据块对应的图像数据的行数,计算一组所述图像数据中待读出的第i个目标图像数据在所述存储空间中的地址;i∈[0,tile_height*tile_num-1],且i为正整数;
其中,所述第二公式为:An(i)=(i*tile_height^n-1)%(tile_height*tile_num-1)+1;tile_num为第一图像在行方向上的图像数据块的数量,tile_height为一个图像数据块包含的图像数据的行数。
可选地,在本申请实施例中,所述处理器110,具体用于将一组所述图像数据中的相邻两个图像数据进行合并,并将合并后的每个图像数据,通过一个时钟周期写入至所述SPRAM的存储空间。
本申请实施例提供的电子设备,电子设备对第一图像的图像数据流进行分组;每组图像数据流包括M行图像数据,或者,每组图像数据流包括至少一个图像数据块;M为正整数;针对每组图像数据流,在将一组图像数据写入对应的存储空间中的情况下,生成读地址,上述读地址用于指示一组所述图像数据中需要按块读出的各个图像数据在存储空间中的地址;按照读地址,将一组图像数据中的各个图像数据从存储空间中读出,并将下一组图像数据中的各个图像数据写入已读出图像数据的存储空间。通过该方法,电子设备可以生成需要的读地址,并在根据读地址将图像数据从存储空间中读出的情况下,在已读出图像数据对应的存储位置,快速写入新的图像数据,实现了在一个存储空间中交替进行图像数据的读取和写入,从而能够高效地进行图像数据地按行写入,按块读出,实现了图像数据流的行块转换并且节省存储空间。
应理解的是,本申请实施例中,输入单元104可以包括图形处理器(GraphicsProcessing Unit,GPU)1041和麦克风1042,图形处理器1041对在视频捕获模式或图像捕获模式中由图像捕获装置(如摄像头)获得的静态图片或视频的图像数据进行处理。显示单元106可包括显示面板1061,可以采用液晶显示器、有机发光二极管等形式来配置显示面板1061。用户输入单元107包括触控面板1071以及其他输入设备1072中的至少一种。触控面板1071,也称为触摸屏。触控面板1071可包括触摸检测装置和触摸控制器两个部分。其他输入设备1072可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆,在此不再赘述。
存储器109可用于存储软件程序以及各种数据。存储器109可主要包括存储程序或指令的第一存储区和存储数据的第二存储区,其中,第一存储区可存储操作系统、至少一个功能所需的应用程序或指令(比如声音播放功能、图像播放功能等)等。此外,存储器109可以包括易失性存储器或非易失性存储器,或者,存储器x09可以包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double Data Rate SDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(Synch link DRAM,SLDRAM)和直接内存总线随机存取存储器(Direct Rambus RAM,DRRAM)。本申请实施例中的存储器109包括但不限于这些和任意其它适合类型的存储器。
处理器110可包括一个或多个处理单元;可选的,处理器110集成应用处理器和调制解调处理器,其中,应用处理器主要处理涉及操作系统、用户界面和应用程序等的操作,调制解调处理器主要处理无线通信信号,如基带处理器。可以理解的是,上述调制解调处理器也可以不集成到处理器110中。
本申请实施例还提供一种可读存储介质,所述可读存储介质上存储有程序或指令,该程序或指令被处理器执行时实现上述图像数据处理方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
其中,所述处理器为上述实施例中所述的电子设备中的处理器。所述可读存储介质,包括计算机可读存储介质,如计算机只读存储器ROM、随机存取存储器RAM、磁碟或者光盘等。
本申请实施例另提供了一种芯片,所述芯片包括处理器和通信接口,所述通信接口和所述处理器耦合,所述处理器用于运行程序或指令,实现上述图像数据处理方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
应理解,本申请实施例提到的芯片还可以称为系统级芯片、系统芯片、芯片系统或片上系统芯片等。
本申请实施例提供一种计算机程序产品,该程序产品被存储在存储介质中,该程序产品被至少一个处理器执行以实现如上述图像数据处理方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。此外,需要指出的是,本申请实施方式中的方法和装置的范围不限按示出或讨论的顺序来执行功能,还可包括根据所涉及的功能按基本同时的方式或按相反的顺序来执行功能,例如,可以按不同于所描述的次序来执行所描述的方法,并且还可以添加、省去、或组合各种步骤。另外,参照某些示例所描述的特征可在其他示例中被组合。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以计算机软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本申请的保护之内。
Claims (16)
1.一种图像数据处理方法,其特征在于,所述方法包括:
对第一图像的图像数据流进行分组;每组所述图像数据流包括M行图像数据,或者,所述每组所述图像数据流包括至少一个图像数据块;M为正整数;
针对每组所述图像数据,在将一组所述图像数据写入对应的存储空间中的情况下,生成读地址,所述读地址用于指示一组所述图像数据中需要按块读出的各个图像数据在所述存储空间中的地址;
按照所述读地址,将一组所述图像数据中的各个图像数据从所述存储空间中读出,并将下一组图像数据中的各个图像数据写入已读出图像数据的存储空间。
2.根据权利要求1所述的方法,其特征在于,每组所述图像数据流包括M行图像数据;所述生成读地址,包括:
基于所述第一图像中行方向上的图像数据块的数量,计算一组所述图像数据中待读出的目标图像数据在所述存储空间中的地址;
根据所述目标图像数据在所述存储空间中的地址,生成所述目标图像数据对应的读地址。
3.根据权利要求2所述的方法,其特征在于,所述基于图像在行方向上的图像数据块的数量,计算一组所述图像数据中待读出的目标图像数据在所述存储空间中的地址,包括:
采用第一公式,根据图像在行方向上的图像数据块的数量与每个所述图像数据块对应的图像数据的行数,计算一组所述图像数据中待读出的第i+1个目标图像数据在所述存储空间中的地址;i∈[0,tile_num*M-1],且i为整数;
其中,所述第一公式为:An(i)=(i*tile_num^n-1)%(tile_num*M-1)+1,tile_num为图像在行方向上的图像数据块的数量,n等于所述图像数据所在的分组减去1。
4.根据权利要求3所述的方法,其特征在于,所述按照所述读地址,将一组所述图像数据中的各个图像数据从所述存储空间中读出,并将所述图像数据的下一组图像数据中的各个图像数据写入已读出图像数据的存储空间,包括:
按照所述第i+1个目标图像数据对应的读地址,将所述第i+1个目标图像数据从所述存储空间读出,并将下一组图像数据中的第j个图像数据写入已读出所述第i+1个目标图像数据的存储空间;j∈[1,tile_num*M]。
5.根据权利要求1所述的方法,其特征在于,所述每组所述图像数据流包括至少一个图像数据块;所述生成读地址,包括:
基于所述第一图像中行方向上的图像数据块的数量和一个图像数据块对应的图像数据的行数,计算一组所述图像数据中待读出的目标图像数据在所述存储空间中的地址;
根据所述目标图像数据在所述存储空间中的地址,生成所述目标图像数据对应的读地址。
6.根据权利要求5所述的方法,其特征在于,所述基于图像在在行方向上的图像数据块的数量和一个图像数据块对应的图像数据的行数,计算一组所述图像数据中待读出的目标图像数据在所述存储空间中的地址,包括:
采用第二公式,根据基于图像在在行方向上的图像数据块的数量和一个图像数据块对应的图像数据的行数,计算一组所述图像数据中待读出的第i个目标图像数据在所述存储空间中的地址;i∈[0,tile_height*tile_num-1],且i为正整数;
其中,所述第二公式为:An(i)=(i*tile_height^n-1)%(tile_height*tile_num-1)+1;tile_num为第一图像在行方向上的图像数据块的数量,tile_height为一个图像数据块包含的图像数据的行数。
7.根据权利要求1所述的方法,其特征在于,所述将一组所述图像数据写入对应的存储空间,包括:
将一组所述图像数据中的相邻两个图像数据进行合并,并将合并后的每个图像数据,通过一个时钟周期写入至SPRAM的存储空间。
8.一种图像数据处理装置,其特征在于,所述装置包括:拆分模块、生成模块和处理模块,其中:
所述拆分模块,用于对第一图像的图像数据流进行分组;每组所述图像数据流包括M行图像数据,或者,所述每组所述图像数据流包括至少一个图像数据块;M为正整数;
所述生成模块,用于针对所述拆分模块分组后得到的每组所述图像数据,在所述处理模块将一组所述图像数据写入对应的存储空间中的情况下,生成读地址,所述读地址用于指示一组所述图像数据中需要按块读出的各个图像数据在所述存储空间中的地址;
所述处理模块,用于按照所述生成模块生成的所述读地址,将一组所述图像数据中的各个图像数据从所述存储空间中读出,并将下一组图像数据中的各个图像数据写入已读出图像数据的存储空间。
9.根据权利要求8所述的装置,其特征在于,每组所述图像数据包括M行图像数据;
所述生成模块,具体用于基于所述第一图像中行方向上的图像数据块的数量,计算一组所述图像数据中待读出的目标图像数据在所述存储空间中的地址;
所述生成模块,具体用于根据所述目标图像数据在所述存储空间中的地址,生成所述目标图像数据对应的读地址。
10.根据权利要求9所述的装置,其特征在于,
所述生成模块,具体用于采用第一公式,根据第一图像中行方向上的图像数据块的数量与每个所述图像数据块对应的图像数据的行数,计算一组所述图像数据中待读出的第i+1个目标图像数据在所述存储空间中的地址;i∈[0,tile_num*M-1],且i为整数;
其中,所述第一公式为:An(i)=(i*tile_num^n-1)%(tile_num*M-1)+1,tile_num为图像在行方向上的图像数据块的数量,n等于所述图像数据所在的分组减去1。
11.根据权利要求10所述的装置,其特征在于,
所述处理模块,具体用于按照所述第i个目标图像数据对应的读地址,将所述第i个目标图像数据从所述存储空间读出,并将下一组图像数据中的第j个图像数据写入已读出所述第i个目标图像数据的存储空间;j∈[1,tile_num*M]。
12.根据权利要求8所述的装置,其特征在于,所述每组所述图像数据包括至少一个图像数据块;
所述生成模块,具体用于基于所述第一图像中行方向上的图像数据块的数量和一个图像数据块对应的图像数据的行数,计算一组所述图像数据中待读出的目标图像数据在所述存储空间中的地址;
所述生成模块,具体用于根据所述目标图像数据在所述存储空间中的地址,生成所述目标图像数据对应的读地址。
13.根据权利要求12所述的装置,其特征在于,
所述生成模块,具体用于采用第二公式,根据基于图像在在行方向上的图像数据块的数量和一个图像数据块对应的图像数据的行数,计算一组所述图像数据中待读出的第i个目标图像数据在所述存储空间中的地址;i∈[0,tile_height*tile_num-1],且i为正整数;
其中,所述第二公式为:An(i)=(i*tile_height^n-1)%(tile_height*tile_num-1)+1;tile_num为第一图像在行方向上的图像数据块的数量,tile_height为一个图像数据块包含的图像数据的行数。
14.根据权利要求8所述的装置,其特征在于,
所述处理模块,具体用于将一组所述图像数据中的相邻两个图像数据进行合并,并将合并后的每个图像数据,通过一个时钟周期写入至所述SPRAM的存储空间。
15.一种电子设备,其特征在于,包括处理器和存储器,所述存储器存储可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如权利要求1-7任一项所述的图像处理方法的步骤。
16.一种可读存储介质,其特征在于,所述可读存储介质上存储程序或指令,所述程序或指令被处理器执行时实现如权利要求1-7任一项所述的图像处理方法的步骤。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202310914113.1A CN117255256A (zh) | 2023-07-24 | 2023-07-24 | 图像数据处理方法、装置、电子设备及可读存储介质 |
| PCT/CN2024/106528 WO2025021044A1 (zh) | 2023-07-24 | 2024-07-19 | 图像数据处理方法、装置、电子设备及可读存储介质 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202310914113.1A CN117255256A (zh) | 2023-07-24 | 2023-07-24 | 图像数据处理方法、装置、电子设备及可读存储介质 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| CN117255256A true CN117255256A (zh) | 2023-12-19 |
Family
ID=89132040
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202310914113.1A Pending CN117255256A (zh) | 2023-07-24 | 2023-07-24 | 图像数据处理方法、装置、电子设备及可读存储介质 |
Country Status (2)
| Country | Link |
|---|---|
| CN (1) | CN117255256A (zh) |
| WO (1) | WO2025021044A1 (zh) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2025021044A1 (zh) * | 2023-07-24 | 2025-01-30 | 维沃移动通信有限公司 | 图像数据处理方法、装置、电子设备及可读存储介质 |
Family Cites Families (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP4015890B2 (ja) * | 2002-06-28 | 2007-11-28 | 松下電器産業株式会社 | 画素ブロックデータ生成装置および画素ブロックデータ生成方法 |
| JP6757141B2 (ja) * | 2016-01-18 | 2020-09-16 | キヤノン株式会社 | 画像処理装置、その制御方法、及びプログラム |
| CN106101712B (zh) * | 2016-06-13 | 2019-07-16 | 浙江大华技术股份有限公司 | 一种视频流数据的处理方法及装置 |
| CN116033092A (zh) * | 2022-12-30 | 2023-04-28 | 中星电子股份有限公司 | 数据读取方法和数据写入方法 |
| CN117255256A (zh) * | 2023-07-24 | 2023-12-19 | 维沃移动通信有限公司 | 图像数据处理方法、装置、电子设备及可读存储介质 |
-
2023
- 2023-07-24 CN CN202310914113.1A patent/CN117255256A/zh active Pending
-
2024
- 2024-07-19 WO PCT/CN2024/106528 patent/WO2025021044A1/zh active Pending
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2025021044A1 (zh) * | 2023-07-24 | 2025-01-30 | 维沃移动通信有限公司 | 图像数据处理方法、装置、电子设备及可读存储介质 |
Also Published As
| Publication number | Publication date |
|---|---|
| WO2025021044A1 (zh) | 2025-01-30 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US10257456B2 (en) | Hardware friendly virtual frame buffer | |
| JP2004007337A5 (zh) | ||
| EP3335107A1 (en) | Data reordering using buffers and memory | |
| CN106846255B (zh) | 图像旋转实现方法及装置 | |
| CN105681807A (zh) | 一种基于h264协议的分像素运动矢量计算方法和装置 | |
| CN114339072B (zh) | 图像处理电路、方法和电子设备 | |
| JP2011258207A (ja) | 多次元データをデータ競合なしで同時検索するための処理システム、データ構造およびデータ処理方法 | |
| CN115205099A (zh) | 图像数据传输方法、装置和电子设备 | |
| CN111984189A (zh) | 神经网络计算装置和数据读取、数据存储方法及相关设备 | |
| CN117255256A (zh) | 图像数据处理方法、装置、电子设备及可读存储介质 | |
| JPH04276870A (ja) | 画像回転処理方法及びその装置 | |
| WO2024140568A1 (zh) | 图像处理方法、装置、电子设备及可读存储介质 | |
| CN116974475A (zh) | 数据缓存方法、装置及电子设备 | |
| CN104618717A (zh) | 行与块的整合转换方法及其计算机可读取存储介质 | |
| EP2400455A1 (en) | System, data structure, and method for transposing multi-dimensional data to switch between vertical and horizontal filters | |
| CN107977923B (zh) | 图像处理方法、装置、电子设备及计算机可读存储介质 | |
| CN118014819A (zh) | 图像处理装置、方法、芯片、电子设备及可读存储介质 | |
| KR102247741B1 (ko) | 이미지 프로세서, 상기 이미지 프로세서의 동작 방법, 및 상기 이미지 프로세서를 포함하는 애플리케이션 프로세서 | |
| CN114862659A (zh) | 图像直方图生成方法、装置、电子设备及存储介质 | |
| CN117271090A (zh) | 图像处理方法、装置、电子设备及介质 | |
| CN102891998B (zh) | 一种图像缩放、编码方法及系统 | |
| CN103210400A (zh) | 有效度图的临近关系选择的快速实现 | |
| CN117710185A (zh) | 图像处理装置、方法、芯片、电子设备及可读存储介质 | |
| CN116527908B (zh) | 运动场估计方法、装置、计算机设备和存储介质 | |
| CN121235899A (zh) | 一种图像生成方法、装置、电子设备及存储介质 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PB01 | Publication | ||
| PB01 | Publication | ||
| SE01 | Entry into force of request for substantive examination | ||
| SE01 | Entry into force of request for substantive examination |