使用图形处理单元计算直方图的方法和系统技术方案

技术编号:2946847 阅读:161 留言:0更新日期:2012-04-11 18:40
一种用于使用图形处理单元(GPU)来计算直方图的方法包括:将图像数据存储在二维(2D)纹理域中;将该域划分为独立的区域或片;在图形处理单元中并行地计算多个片直方图,针对每一片有一个片直方图;并在该图形处理单元中并行地累加这些片直方图,以便得到最终的图像直方图。

【技术实现步骤摘要】

本专利技术涉及图像处理领域,并且更具体地涉及直方图计算领域。
技术介绍
由于现代的图形处理器(GPU)的巨大的计算能力,GPU上的通用计算已经变成了非常活跃的研究和发展领域。在GPU上运行的算法的性能非常依赖于它们能够怎样被良好地安排以适应以及利用处理器的单指令多数据(SIMD)结构。许多被认为简单的用于在中央处理单元(CPU)上执行的、例如用于统计目的的域值的分组和计算的任务对在GPU上的实施形成相当大的挑战。参见2004年出版的、Kevin Bjorke的Color Controls,GPU Gems,Addison-Wesley,第22和24章。
技术实现思路
根据本专利技术的算法允许在图形卡上计算直方图。直方图是在理解、解释和处理数字图像时的关键因素。它们可被用于不同的目的,包括值在图像中的范围和分布的分析。虽然GPU目前被广泛用于以交互速率处理和显示图像并且用于色彩校正和滤波的图像处理算法已经在GPU上被成功地实施,但完全在GPU上计算直方图的可行方法显得仍然难以理解。 因此,直方图通常必须在CPU上被计算并且被传输给GPU。由于典型地可用的有限的传输带宽,在GPU和CPU之间传输数据是一种昂贵的操作。通常,如果应用程序可完全在图形硬件上运行,则该应用程序仅受益于GPU性能。 依照本专利技术的一个方面,一种用于使用图形处理单元(GPU)来计算直方图的方法包括在二维(2D)纹理域内存储图像数据,将该域划分为独立的区域或片;在GPU中并行地计算多个片直方图,针对每一片有一个片直方图;以及在该GPU中并行地累加这些片直方图,以便得到最终的图像直方图。 依照本专利技术的另一个方面,划分该域的步骤包括将该域划分为有均匀大小的并且独立的区域。 依照本专利技术的另一个方面,计算多个片直方图的步骤包括计算由纹理元素纹理坐标、直方图条的数目和该图像数据的大小决定的纹理元素的亮度。 依照本专利技术的另一个方面,计算多个片直方图的步骤包括通过使用纹理坐标为每一纹理元素确定相应的条。 依照本专利技术的另一个方面,计算多个片直方图的步骤包括针对相应的直方图条,为每一纹理元素对在其附属片中值的出现进行计数。 依照本专利技术的另一个方面,通过使用纹理坐标为每一纹理元素确定相应的条的步骤包括为在各自的附属片中具有相同的给定位置的每一纹理元素确定相同的相应的条。 依照本专利技术的另一个方面,并行地累加的步骤包括应用逐片纹理减少操作。 依照本专利技术的另一个方面,应用纹理减少操作的步骤包括执行用于将纹理尺寸减半的渲染流程(rendering pass)。 依照本专利技术的另一个方面,执行用于将纹理尺寸减半的渲染流程的步骤包括对给定直方图的第i个纹理元素和在正的纹理坐标方向上的三个相邻片的第i个纹理元素求和。 依照本专利技术的另一个方面,存储图像数据的步骤包括使用RGB和RGBA纹理中的至少一个。 依照本专利技术的另一个方面,存储图像数据的步骤包括使用亮度(c=1)、RGB(c=3)和RGBA(c=4)纹理中的至少一个,使得具有n个条的直方图产生具有sqrt(n/c)×sqrt(n/c)个纹理元素的正方形片尺寸,其中c是每个纹理元素的通道数。 依照本专利技术的另一个方面,一种用于使用图形处理单元(GPU)来计算直方图的方法包括在二维(2D)纹理域内存储图像数据;通过将该域划分为有均匀大小的并且独立的片来将该域划分为独立的区域或片;在GPU中并行地计算多个片直方图,针对每一片有一个片直方图,并且通过针对相应的直方图条为每一纹理元素对在其附属片中值的出现进行计数来通过使用纹理坐标为每一纹理元素确定相应的条;通过应用纹理减少操作在该GPU中并行地累加这些片直方图,以便得到最终的图像直方图,其中通过执行用于将纹理尺寸减半的渲染流程来应用纹理减少操作,通过对给定直方图的第i个纹理元素和在正的纹理坐标方向上的三个相邻片的第i个纹理元素求和来执行用于将纹理尺寸减半的渲染流程。 依照本专利技术的另一个方面,一种用于使用图形处理单元(GPU)来计算直方图的方法包括在二维(2D)纹理域内存储输入数据;将该域划分为有均匀大小的区;在GPU中并行地得到包括每一区的直方图的直方图组;以及对该直方图组求和,以便得到最终的直方图。 依照本专利技术的另一个方面,一种用于使用图形处理单元(GPU)来计算图像直方图的方法包括在二维(2D)纹理域内存储图像输入数据;将该域划分为有均匀大小的区;在GPU中并行地得到包括每一区的直方图的图像直方图组;以及对该图像直方图组求和,以便得到最终的直方图。 依照本专利技术的另一个方面,得到图像直方图组的步骤包括为每一纹理元素确定相应的条。 依照本专利技术的另一个方面,得到图像直方图组的步骤包括通过使用纹理坐标为每一纹理元素确定相应的条。 依照本专利技术的另一个方面,应用纹理减少操作的步骤包括执行用于将纹理尺寸减半的渲染流程。 依照本专利技术的另一个方面,执行用于将纹理尺寸减半的渲染流程的步骤包括对给定直方图的第i个纹理元素求和是和在正的纹理坐标方向上的三个相邻片的第i个纹理元素的累加。 依照本专利技术的另一个方面,得到直方图组的步骤包括应用纹理减少操作。 依照本专利技术的另一个方面,应用纹理减少操作的步骤包括在对应于为每一纹理元素所确定的相应的条的附属片内,对所述附属片的每一纹理元素中的所有计数求和,以便获得组合的图像直方图。 依照本专利技术的另一个方面,应用纹理减少操作的步骤包括重复纹理减少操作的步骤,以便获得最终的图像直方图。 依照本专利技术的另一个方面,应用纹理减少操作的步骤包括在对应于为每一纹理元素所确定的相应的条的附属片内,对所述附属片的每一纹理元素中的所有计数求和;并且对直方图组求和,以便得到最终的图像直方图。 依照本专利技术的另一个方面,一种用于使用图形处理单元(GPU)来计算直方图的系统包括用于存储程序和其他数据的存储设备;与该存储设备通信的处理器设备,该处理器运行程序以便执行将图像数据存储在二维(2D)纹理域内;将该域划分为独立的区域或片;在GPU中并行地计算多个片直方图,针对每一片有一个片直方图;以及在该GPU中并行地累加这些片直方图,以便得到最终的图像直方图。 依照本专利技术的另一个方面,该处理器运行程序以便执行将该域划分为有均匀大小的并且独立的区域;依照本专利技术的另一个方面,该处理器运行程序以便执行计算由纹理元素纹理坐标、直方图条的数目和图像数据的大小决定的纹理元素的亮度。 依照本专利技术的另一个方面,一种计算机程序产品包括计算机可用介质,该计算机可用介质具有被存储在其上的用于使用图形处理单元(GPU)通过以下步骤来计算直方图的程序代码的计算机程序逻辑在二维(2D)纹理域内存储图像数据;将该域划分为独立的区域或片;在GPU中并行地计算多个片直方图,针对每一片有一个片直方图;在该GPU中并行地累加这些片直方图,以便得到最终的图像直方图。 依照本专利技术的另一个方面,一种用于使用图形处理单元(GPU)来计算直方图的方法包括将图像数据存储在二维(2D)纹理域中;将该域划分为独立的区域或片;在GPU中并行地计算多个片直方图,针对每一片有一个片直方图;以及在该GPU中并行地累加这些片直方图,以便得到最终的图像直方图。附图说明结合附图,根据下面详细的描述,将更本文档来自技高网...

【技术保护点】
一种用于使用图形处理单元(GPU)来计算直方图的方法,包括:在二维(2D)纹理域内存储图像数据;将所述域划分为独立的区域或片;在图形处理单元中并行地计算多个片直方图,针对每一片有一个片直方图;以及在所述图形处 理单元中并行地累加所述片直方图以便得到最终的图像直方图。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:O弗拉克S阿哈伦M鲁森D克雷默斯
申请(专利权)人:美国西门子医疗解决公司
类型:发明
国别省市:US[美国]

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

1