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

文档序号:9291697阅读:472来源:国知局
使用图形处理单元的直方图计算的系统和方法【
技术领域
】[0001]本发明的实施例涉及图像处理,且更具体地,涉及直方图计算和其它统计计算的领域。[0002]发明背景[0003]对D维数值集S执行的直方图计算和相关统计运算,例如min(S)、max(S)、中值X(S)、标准偏差〇(S)和众数(S)是图像处理系统中利用的常见运算。直方图计算也已用于涉及并行执行的问题中,例如大集合的并行执行、快速处理量或两者。举例来说,第8,451,384号美国专利中教示的系统和方法利用多个直方图和其相交点来提供用于高分辨率视频中的场景变换检测的数个手段之一。遗憾的是,缺少在利用大规模多并行硬件(其可包含图形处理单元(GPU)和大规模多核SB?或MMD向量处理系统)的同时高效执行这些类型的计算。[0004]早期执行基于GPU的直方图计算的尝试遭遇递归化简运算方面的不良性能,例如,如第7,889,922号美国专利(下文称作'922专利)中教示。这些递归化简运算需要具有小的数据块大小的大型重复递归或遭遇具有大的数据块大小和较少递归的缓存缺失。这限制如通过'922专利教示的用于大型数据集的递归化简运算的可用性和实际性能。[0005]其它现有技术方法通过使用当前GPU硬件的特征在单个步骤中执行化简而避免递归,即顶点着色器内的纹理缓冲值的读取,如Scheuermann,T.和Hensley,J.,2007,"使用在GPU上的分散有效地产生直方图(EfficienthistogramgenerationusingscatteringonGPUs)',,Proceedingsofthe2007symposiumonInteractive3Dgraphicsandgames(I3D'07),第33页到第37页(下文中称作"Scheuermann和Hensley")中揭示。如通过Scheuermann和Hensley教示的顶点着色器内纹理缓冲值的读取允许"分散"操作,例如,目的写入位置非固定,而是可基于依赖输入纹理的决策而变化。[0006]相比之下,'922专利中教示的递归化简运算只允许"集中"操作,其中写入操作位置固定,而读取操作可变。应注意,虽然Scheuermann和Hensley的方法展现良好的并行性和仅针对输入数据集大小而非直方图柱条大小的缩放性能的进一步好处,但是其遭遇性能的反转,其中大柱条大小展现优于较小柱条大小的性能。这种不可预测性是由于到GPU缓存的存储器写入请求的序列化,尤其在具有高模态的数据集中,使这些方法和系统完全不适用于其中可预测性是必要因素的实时流处理应用。[0007]在Nugteren,Cedric等人,"在GPU上的高性能可预测直方图计算:探索及评估算法权衡(Highperformancepredictablehistogrammingongpus:exploringandevaluatingalgorithmtrade-offs)',,ProceedingsoftheFourthWorkshoponGeneralPurposeProcessingonGraphicsProcessingUnits,ACM,2011年(下文中称作"Nugteren")中,揭示两种直方图计算方法,其解决缓存冲突问题,但是两者都采用专用API(CUDA),其仅可从GPU硬件的单个经销商获得。此外,这些现有技术方法适用于单个目的,即使用GPU的柱条直方图的计算而非任意联合的统计功能。此外,对于图像和视频处理,直方图功能通常在GPU外,例如在CPU上执行,从而引入流水线停滞和等候状态。这些停滞使这些系统和方法不适用于实时图像和视频处理。[0008]因此,将需要但尚未提供的是高处理量、存储器高效、独立于GPU经销商且灵活的直方图和用于计算直方图的统计方法和系统,其展现一致的性能。【
发明内容】[0009]根据本发明的系统和方法执行直方图计算的功能并且实现从一个集合中查找下列项目中的一或多者:最小值、最大值、集合标准偏差和查找一个集合的第N个众数。虽然本发明的优选实施例在GPU上实现,但是本领域技术人员将了解,本发明具有图像和视频处理功能以外的多种用途。需要任意大型D维数据集的统计或直方图分析的任意问题将受益。处于这种额外理由,高效的GPU直方图计算系统和方法为在GPU上运行的任意实时或其它时间敏感图像或视频处理系统或方法提供伴随的好处。[0010]更具体地,通过提供用于从纹素数据集中获得直方图和相关统计值的方法和系统而在本领域中解决上述问题并且实现技术解决方案。处理装置从第一缓冲区接收纹素数据集。数据集包括至少为2的维度D且每个纹素含有一个值。处理装置将数据集分类到坐标点列表中,其中点列表中的点对应于数据集中的纹素位置。处理装置通过根据N-1维度优势布置点列表中的点来约简点列表的维度。处理装置对所布置点的每个相关联值执行光栅操作以获得至少一个值。处理装置将所述至少一个值输出到第二缓冲区。处理装置可为图形处理单元。可重复分类、约简、执行和输出步骤,直到D为1。[0011]在一个实例中,将数据集分类可包括产生顶点缓冲区,其具有针对每个纹素位置的个别顶点。约简点列表的维度可包括执行顶点着色器遍次以通知用于执行光栅操作的目的柱条位置的后续像素着色器遍次。执行光栅操作可包括使用像素着色器执行替换光栅操作、加性光栅操作、最小值光栅操作或最大值光栅操作中的至少一者。[0012]在一个实例中,输出的至少一个值可为数据集的直方图、数据集的最大值、数据集的最小值、数据集的求和值、数据集的平均值、中值或众数值、数据集的标准偏差值、数据集的最小值的位置或数据集的最大值的位置中的至少一者。[0013]在一个实例中,可在第一缓冲区中从二维或三维静态图像或视频接收纹素数据集。[0014]通过提供用于从纹素数据集中获得直方图和相关统计值的方法和系统而在本领域中解决上述问题和实现技术解决方案。处理装置从第一缓冲区接收二维纹素数据集,其中数据集中的每个纹素与一个值相关联。处理装置将来自第一缓冲区的数据集分类到第二缓冲区中的坐标点列表中,其中点列表中的点对应于数据集中的纹素位置。处理装置从第二缓冲区读取值并且将列位置输出到具有等于第一大小的宽度和等于第二大小的高度的第三缓冲区。处理装置使用加性光栅操作使第三缓冲区中的列纹素位置中的值递增1以获得至少一个值。处理装置将所述至少一个值输出到第四缓冲区。[0015]在一个实例中,第一大小和第二大小对应于直方图柱条大小。[0016]在一个实例中,将列位置输出到具有等于第一大小的宽度和等于第二大小的高度的第三缓冲区可进一步包括通过用列位置写入到第三缓冲区中的纹素位置而将第二缓冲区中的纹素的位置坐标转换为新的坐标系统,使得位于第二缓冲区中的纹素的位置坐标的垂直坐标根据位于第一缓冲区中的相关联纹素纹理的值而被转换为新的坐标系统。递增值可包括针对位置坐标指示其操作的每个纹素位置使第三缓冲区的纹素值递增1。[0017]在一个实例中,处理装置可包括将具有高度1和等于最终直方图柱条大小的宽度的柱条纹素位置输出到第四缓冲区。处理装置可使用加性光栅操作使第四缓冲区中的值递增1以获得直方图。[0018]在一个实例中,第一大小可对应于第一缓冲区的宽度,且第二大小对应于等于1的高度。处理装置可将具有高度1和等于1的宽度的柱条纹素位置输出到第四缓冲区。[0019]在一个实例中,执行光栅操作可包括执行替换光栅操作、加性光栅操作、最小值光栅操作或最大值光栅操作中的至少一者。[0020]在一个实例中,处理装置可使用最小值光栅操作替换第四缓冲区中的值以获得数据集的最小值。处理装置可使用求和光栅操作替换第四缓冲区中的值以获得数据集的求和值。替换第四缓冲区中的值可进一步包括将第四缓冲区中的值乘以1除以数据集的大小以获得数据集的平均值。[0021]通过提供用于在纹素数据集内获得最小值或最大值的位置的方法和系统而在本领域中解决上述问题和实现技术解决方案。处理装置计算二维纹素数据集的最小值或最大值。处理装置从第一缓冲区接收二维纹素数据集,其中数据集中的每个纹素与一个值相关联。处理装置将来自第一缓冲区的数据集分类到第二缓冲区中的坐标点列表中,其中点列表中的点对应于数据集中的纹素位置。处理装置从第二缓冲区读取纹素值并且在纹素值等于最小值的情况下将单个纹素位置和x值及y值输出到第三缓冲区,且在纹素值大于最小值的情况下输出单个范围外纹素位置。处理装置从第二缓冲区读取x值及y值且经由替换光栅操作将这些值复制到第三缓冲区的x值及y值以计算数据集内最小值或最大值的位置。【附图说明】[0022]图1是说明本发明的实例可运行的示例性计算系统的框图。[0023]图2是说明用于从纹素数据集获得直方图和相关统计值的方法的实例的流程图。[0024]图3是适于使用分散-约简-递增操作计算数据集的直方图的图1的示例性计算系统的框图。[0025]图4A到4B是说明用于使用分散-约简-递增操作计算直方图的方法的实例的流程图。[0026]图5描绘数据经由结合列主偏差的分散-约简过程行经本发明的实施例的空间布局。[0027]图6描绘说明用于在GPU上计算数据集的直方图的第一示例性现有技术步骤的过程和数据流图。[0028]图7A到7C是对应于如在第7,889,922号美国专利(下文中称作'922专利)中执行的直方图计算的实例的过程和数据流的框图。[0029]图8是适于使用分散-约简-替换操作计算数据集的最小值的图1的示例性计算系统的框图。[0030]图9A到9B是说明用于使用分散-约简-替换操作计算数据集的最小值的方法的实例的流程图。[0031]图10是适于使用分散-约简-替换操作计算数据集的最大值的图1的示例性计算系统的框图。[0032]图11A到11B是说明用于使用分散-约简-累加操作计算数据集的最大值的方法的实例的流程图。[0033]图12是适于使用分散-约简-累加操作计算数据集的求和值的图1的示例性计算系统的框图。[0034]图13A到13B是说明用于使用分当前第1页1 2 3 4 5 6 
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1