数据处理方法、装置、图形处理器、设备和存储介质制造方法及图纸

技术编号:33618500 阅读:25 留言:0更新日期:2022-06-02 00:37
本实施例公开了一种数据处理方法、装置、图形处理器、电子设备和计算机存储介质,该方法包括:在GPU的第一存储器存储的像素值中,确定待计算邻域中值的像素值的集合;确定像素值的集合中每个像素值的第i邻域像素值;在i等于1的情况下,第i邻域像素值表示所述每个像素值的邻域范围内的最大像素值,在i大于1的情况下,第i邻域像素值表示邻域范围内小于第i

【技术实现步骤摘要】
数据处理方法、装置、图形处理器、设备和存储介质


[0001]本公开涉及计算机视觉处理技术,涉及但不限于一种数据处理方法、装置、图形处理器(Graphics Processing Unit,GPU)、电子设备和计算机存储介质。

技术介绍

[0002]目前,中值滤波是图像处理领域一种常用的基于统计的非线性滤波方式,中值滤波的实现方式为:以中心像素邻域范围内所有像素值排序数列的中值替换原像素,中值滤波被广泛用于针对高斯和椒盐等噪音的图像降噪任务。
[0003]在相关技术中,可以采用桶排序方法对中心像素邻域范围内所有像素值进行排序,从而确定中心像素邻域范围内所有像素值排序数列的中值;在像素值的数据类型为0

255之间的无符号整型(unsigned char)的情况下,桶排序方法可以有效地实现像素值排序;在像素值的数据类型为除0

255之间的无符号整型外的其它类型的情况下,例如,在像素值的数据类型为浮点类型或大于255的整型数据的情况下,由于难以确定桶的划分方式和数目,因此,桶排序方法不支持这些类型数据的使用。

技术实现思路

[0004]本公开实施例提供了数据处理方法、装置、图形处理器、电子设备和计算机存储介质。
[0005]本公开实施例提供了一种数据处理方法,应用于GPU中,所述方法包括:
[0006]在所述GPU的第一存储器存储的像素值中,确定待计算邻域中值的像素值的集合;确定所述像素值的集合中每个像素值的第i邻域像素值;在i等于1的情况下,所述第i邻域像素值表示所述每个像素值的邻域范围内的最大像素值,在i大于1的情况下,所述第i邻域像素值表示所述邻域范围内小于所述第i

1邻域像素值的最大像素值;响应于所述第1邻域像素值至所述第i邻域像素值的数量之和大于或等于中值序号,将所述第i邻域像素值确定为所述每个像素值的邻域中值;所述中值序号表示所述邻域范围内的像素值数量与一之和的一半。
[0007]在一些实施例中,所述方法还包括:根据所述GPU的统一计算设备架构(Compute Unified Device Architecture,CUDA)线程块的参数,对确定所述第i邻域像素值、以及确定所述邻域中值的指令进行向量化,得到所述CUDA线程块的各线程执行的第一向量化指令。可以看出,本公开实施例中,基于CUDA线程块执行第一向量化指令的方式,可以实现一个线程通过执行多条指令完成更多像素值的邻域中值的计算处理,提升GPU的处理效率。
[0008]在一些实施例中,所述方法还包括:在i大于2,且确定所述每个像素值的第i邻域像素值的情况下,删除所述第i

2邻域像素值。即,本公开实施例可以仅保存第i邻域像素值和第i

1邻域像素值,无需保存其它邻域像素值,与相关技术中保存大于为中值序号的排序队列的方案相比,在一定程度上,降低了存储资源的消耗。
[0009]在一些实施例中,所述第一存储器为共享存储器;相应地,在确定所述待计算邻域
中值的像素值的集合之前,所述方法还包括:读取第一图像的各像素点的像素值;按照所述第一图像中各像素点的空间位置关系,确定所述各像素点的像素值在所述共享存储器中的存储位置;按照所述各像素点的像素值在所述共享存储器中的存储位置,将所述各像素点的像素值存储至所述共享存储器中;所述第一图像为待进行中值滤波处理的图像。可以看出,本公开实施例可以将各像素点的像素值存储至共享存储器中,由于共享存储器的访问延迟较低,因此,可以提高对像素值的存储访问效率以及像素值的邻域中值的计算效率。
[0010]在一些实施例中,所述方法还包括:根据所述GPU的CUDA线程块的参数,对读取所述第一图像的各像素点的像素值、确定所述各像素点的像素值在所述共享存储器中的存储位置、以及将所述各像素点的像素值存储至所述共享存储器中的指令进行向量化,得到所述CUDA线程块的各线程执行的第二向量化指令。可以看出,本公开实施例中,基于CUDA线程块执行第二向量化指令的方式,可以实现一个线程通过执行多条指令完成多像素值的读取和存储,提升GPU的读写效率。
[0011]在一些实施例中,所述按照所述各像素点的像素值在所述共享存储器中的存储位置,将所述各像素点的像素值存储至所述共享存储器中,包括:按照所述各像素点的像素值在所述共享存储器中的存储位置,将所述各像素点的像素值以二维数组的形式存储至所述共享存储器中;相应地,所述在所述第一存储器存储的像素值中,确定待计算邻域中值的像素值的集合,包括:将所述二维数组划分为中间区域和边界区域,在同一方向上所述中间区域的边界至所述二维数组的边界的距离均大于或等于所述每个像素值的邻域半径;在所述共享存储器存储的二维数组中,将所述中间区域中的像素值确定为所述待计算邻域中值的像素值的集合。
[0012]可以看出,由于在同一方向上中间区域的边界至二维数组的边界的距离均大于或等于每个像素值的邻域半径,因此,对于二维数组的中间区域的任意一个像素值,均可以根据二维数组中的像素值确定出邻域范围,从而可以准确地确定出每个像素值的邻域中值。与相关技术中不对二维数组划分区域的方案相比,增加了一定操作复杂性,但是在对中间区域的左侧边界区域不进行地址对齐,且针对中间区域进行地址对齐的情况下,可以实现中间区域的像素值的快速读取,即,可以提升数据载入效率,在一定程度上实现了操作复杂性和数据载入效率的平衡。
[0013]在一些实施例中,在确定所述每个像素值的邻域中值后,所述方法还包括:按照所述像素值的集合中各像素值在所述第一存储器中的存储位置关系,确定所述各像素值的邻域中值在所述GPU的全局存储器中的存储位置;根据所述各像素值的邻域中值在所述全局存储器中的存储位置,将所述各像素值的邻域中值存储至所述全局存储器中。
[0014]可以看出,本公开实施例可以根据各像素值在第一存储器中的存储位置关系,将对应的邻域中值存储至全局存储器中,从而,便于后续对图像进行中值滤波处理时准确地读取各个像素值的邻域中值,即,便于后续对图像进行中值滤波处理时提高数据访问效率。
[0015]在一些实施例中,所述方法还包括:根据所述GPU的CUDA线程块的参数,对确定所述各像素值的邻域中值在所述全局存储器中的存储位置、以及将所述各像素值的邻域中值存储至所述全局存储器中的指令进行向量化,得到所述CUDA线程块的各线程执行的第三向量化指令。可以看出,本公开实施例中,基于CUDA线程块执行第三向量化指令的方式,可以实现一个线程通过执行多条指令完成更多像素值的存储,提升GPU的读写效率。
[0016]在一些实施例中,所述全局存储器的存储空间包括第1行的存储空间至第m行的存储空间,m为大于1的整数;所述方法还包括:响应于所述CUDA线程块的任意一个线程执行的第三向量化指令为将q个像素值的邻域中值存储至第j行的存储空间,且所述第j行的剩余存储空间的行宽p小于q,将对应线程执行的所述第三向量化指令更改为:将p个像素值的邻域中本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据处理方法,其特征在于,应用于图形处理器GPU中,所述方法包括:在所述GPU的第一存储器存储的像素值中,确定待计算邻域中值的像素值的集合;确定所述像素值的集合中每个像素值的第i邻域像素值;在i等于1的情况下,所述第i邻域像素值表示所述每个像素值的邻域范围内的最大像素值,在i大于1的情况下,所述第i邻域像素值表示所述邻域范围内小于所述第i

1邻域像素值的最大像素值;响应于所述第1邻域像素值至所述第i邻域像素值的数量之和大于或等于中值序号,将所述第i邻域像素值确定为所述每个像素值的邻域中值;所述中值序号表示所述邻域范围内的像素值数量与一之和的一半。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:根据所述GPU的统一计算设备架构CUDA线程块的参数,对确定所述第i邻域像素值、以及确定所述邻域中值的指令进行向量化,得到所述CUDA线程块的各线程执行的第一向量化指令。3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:在i大于2,且确定所述每个像素值的第i邻域像素值的情况下,删除所述第i

2邻域像素值。4.根据权利要求1至3任一项所述的方法,其特征在于,所述第一存储器为共享存储器;相应地,在确定所述待计算邻域中值的像素值的集合之前,所述方法还包括:读取第一图像的各像素点的像素值,所述第一图像为待进行中值滤波处理的图像;按照所述第一图像中各像素点的空间位置关系,确定所述各像素点的像素值在所述共享存储器中的存储位置;按照所述各像素点的像素值在所述共享存储器中的存储位置,将所述各像素点的像素值存储至所述共享存储器中。5.根据权利要求4所述的方法,其特征在于,所述方法还包括:根据所述GPU的CUDA线程块的参数,对读取所述第一图像的各像素点的像素值、确定所述各像素点的像素值在所述共享存储器中的存储位置、以及将所述各像素点的像素值存储至所述共享存储器中的指令进行向量化,得到所述CUDA线程块的各线程执行的第二向量化指令。6.根据权利要求4或5所述的方法,其特征在于,所述按照所述各像素点的像素值在所述共享存储器中的存储位置,将所述各像素点的像素值存储至所述共享存储器中,包括:按照所述各像素点的像素值在所述共享存储器中的存储位置,将所述各像素点的像素值以二维数组的形式存储至所述共享存储器中;所述在所述第一存储器存储的像素值中,确定待计算邻域中值的像素值的集合,包括:将所述二维数组划分为中间区域和边界区域,在同一方向上所述中间区域的边界至所述二维数组的边界的距离均大于或等于所述每个像素值的邻域半径;在所述共享存储器存储的二维数组中,将所述中间区域中的像素值确定为所述待计算邻域中值的像素值的集合。7.根据权利要求1至6任一项所述的方法,其特征在于,在确定所述每个像素值的邻域中值后,所述方法还包括:按照所述像素值的集合中各像素值在所述第一存储器中的存储位置关系,确定所述各
像素值的邻...

【专利技术属性】
技术研发人员:菅立恒
申请(专利权)人:上海商汤科技开发有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1