CN113168667A - 灰度直方图生成 - Google Patents

灰度直方图生成 Download PDF

Info

Publication number
CN113168667A
CN113168667A CN201980075373.6A CN201980075373A CN113168667A CN 113168667 A CN113168667 A CN 113168667A CN 201980075373 A CN201980075373 A CN 201980075373A CN 113168667 A CN113168667 A CN 113168667A
Authority
CN
China
Prior art keywords
output image
pixels
pixel
patch
input
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.)
Granted
Application number
CN201980075373.6A
Other languages
English (en)
Other versions
CN113168667B (zh
Inventor
约翰·达伊-里希特
皮特·麦克尼尼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Google LLC filed Critical Google LLC
Publication of CN113168667A publication Critical patent/CN113168667A/zh
Application granted granted Critical
Publication of CN113168667B publication Critical patent/CN113168667B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/40Image enhancement or restoration using histogram techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Image Processing (AREA)
  • Multimedia (AREA)

Abstract

在图形处理单元(GPU)中,接收包括像素阵列的输入图像。每个像素具有N个灰度值范围内的灰度值。对于分割输入图像的输入色块集的像素的每个特定输入色块,并且对该范围中的每个特定灰度值,并行地计数在具有特定灰度值的特定输入色块中像素的数量。对于分割输入图像的输入色块集中像素的特定输入色块,并行地将输出图像色块创建为N个像素的有序序列,其中,每个相应输出色块中的第n个像素的颜色值表示在具有第n个灰度值的特定输入色块中像素的计数。将输出图像色块组合成N个像素的单个合成输出图像,单个合成输出图像中的第n个像素的像素值对应于具有第n个灰度值的输入图像中像素的计数。

Description

灰度直方图生成
技术领域
本文公开的技术涉及图形处理。具体示例涉及在图形处理单元(GPU)上生成直方图。
背景技术
GPU是被设计为快速处理旨在输出到显示设备的图像的电子子系统(通常是芯片组)。GPU用在嵌入式系统、移动电话、个人计算机、工作站、数码相机、游戏机和其他数字系统中。对于某些任务,GPU的高度并行结构使其比通用中央处理单元(CPU)更为高效。
图像直方图是典型的二维数据结构,其描述了颜色值范围上的图像像素的数量。通常,颜色值的范围形成x轴,而像素的数量形成y轴——x轴的值越低则颜色越深。图像处理中的大量任务(例如,阈值化)涉及创建图像颜色值的直方图。在阈值化中,如果像素的图像强度小于固定常数T,则将图像中的每个像素替换为黑色像素,或者如果图像强度大于该常数,则将图像中的每个像素替换为白色像素。这些直方图最常用于诸如边缘检测、颜色校正、图像分割、共生矩阵和黑白图像转换的任务,这可能是诸如对象和文本识别之类的更复杂的图像分析任务的先决条件。
发明内容
本文所述的技术包括计算机实现方法、计算机程序产品和系统,用于创建输入图像的灰度直方图。在该技术的一些示例中,GPU接收包括像素阵列的输入图像。每个像素具有N个灰度值范围内的灰度值。对于分割输入图像的输入色块(patch)集中的像素的每个特定输入色块,并且对于范围内的每个特定灰度值,GPU并行地计数在具有特定灰度值的特定输入色块中像素的数量。对于分割输入图像的输入色块集中的像素的每个特定输入色块,GPU并行地将输出图像色块创建为N个像素的有序序列,其中,每个相应输出色块中的第n个像素的颜色值表示在具有第n个灰度值的特定输入色块中像素的计数。然后,GPU将输出图像色块组合成N个像素的单个合成输出图像,单个合成输出图像中的第n个像素的像素值对应于具有第n个灰度值的输入图像中像素的计数。
在一些示例中,对于输出图像色块集的分层分割,其中,每个分层节点具有至少两个子节点,GPU从最低级到最高级对每一个第n个像素值进行求和。在一些这样的示例中,每个输出图像色块是16×16像素阵列,并且除了该层之外的每个父节点具有4个子节点。
在一些示例中,以OpenGL RBGA无符号整数格式将输出图像色块中的每个像素的颜色值格式化为基数256的数字,其中,“R”为最低有效位,而“A”为最高有效位。在一些示例中,“A”被格式化为基数256的补码。在一些这样的示例中,每个输出图像色块是16×16像素阵列。
在一些示例中,使用一个或多个片段着色器,在GPU上执行对像素数量的计数、创建相应的输出图像色块并且将输出图像色块组合为单个合成图像。
附图说明
图1是描绘根据某些示例性示例,提供图形用户界面(GUI)的典型设备的一部分简化的通信和处理架构的框图。
图2是图示根据某些示例的用于创建输入图像的灰度直方图的方法的框图。
图3根据某些示例描述输入灰度图像。
图4图示了根据某些示例的被分割成输入图像色块的输入灰度图像。
图5图示了根据某些示例的输出色块像素并且作为直方图。
图6图示了根据某些示例的直方图的两个视图。
图7图示了根据某些示例的直方图求和的两个视图。
图8图示了根据某些示例的直方图的倒数第二个和最后一个阶段。
图9图示了根据某些示例的在图像中以及作为由图像表示的直方图的输出图像直方图的最后一个阶段。
图10是描绘根据某些示例的计算机器和模块的框图。
具体实施方式
当在具有GPU,特别是具有通常在移动设备中设置的GPU的设备上执行图像处理时,用于计算直方图的传统方法非常耗时。尽管存在使用设备的CPU生成图像直方图的方法,但是这些方法在GPU上执行时表现很差,例如,对灰度图像,需要对整个输入图像进行256次全扫描。此外,GPU通常适合于处理图像数据结构,而不是直方图。
本文公开的技术的示例可以在GPU上生成图像直方图,在一些情况下,会以少量O(log N)的快速GPU通过–其中,“O(*)”表示“以……的顺序”,而“N”是像素处理的数量。可以使结果用于图像处理流水线的其他GPU实现的处理,而不必在GPU、CPU和系统内存之间复制结果。这样的复制是相对昂贵的操作,其可能在实时图像处理应用中引入不期望的延迟。
通过使用和依赖本文描述的方法和系统,本文公开的技术可以在不依赖设备CPU的情况下在设备GPU上创建图像直方图。这样,可以利用该技术来以一种更有效地利用计算设备资源的方式执行图像处理任务(诸如阈值化、边缘检测、颜色校正、图像分割、共生矩阵、黑白图像转换以及对象/文本识别)。
示例性系统架构
图1是根据某些示例的描绘提供图形用户界面(GUI)的典型设备的简化通信和处理架构100的一部分的框图。虽然该架构中所示的每个元件都由该元件的一个实例表示,但是可以包括每个元件的多个实例。虽然在与图1有关的示例中呈现了本技术的操作的某些方面以促进所要求保护的发明的实现,但是本文中其他地方公开了本技术的另外的特征,其也促进了所要求保护的发明的实现。
在这样的架构100中,中央处理单元(CPU)110和图形处理单元(GPU)120经由系统存储器总线140共享对系统存储器130的访问。CPU 110和GPU120通过总线160传递消息和数据,总线160还可以连接到其他处理器、传感器和接口设备(未示出)。CPU 110和GPU 120中的每一个包括本地存储器(CPU本地存储器112、GPU本地存储器122)。本地存储器可以包括高速缓存存储器。高速缓存存储器存储数据(或指令,或两者兼有),使得可以更快地服务将来对所述数据的请求;存储在高速缓存中的数据可能是更早的计算的结果,也可能是存储在其他位置的数据的副本。当在高速缓存中可以找到所请求的数据时,发生高速缓存命中,而当在高速缓存中无法找到所请求的数据时,发生高速缓存缺失。通过从高速缓存中读取数据来提供高速缓存命中,这通常比重新计算结果或从更慢的数据存储(诸如,系统存储器130或在CPU 110和GPU 120之间的传递)中读取数据要更快。因此,可以从高速缓存中服务的请求越多,系统执行就越快。GPU 120通常对来自本地存储器的数据进行操作以驱动显示子系统140。在对示例的整个讨论中,应当理解到,术语“数据”和“信息”在本文中可互换使用,以指代在基于计算机的环境中可以存在的文本、图像、音频、视频或任何其他形式的信息。
所示的架构100是示例,并且可以使用在功能块之间建立通信链路的其他方式。此外,受益于本公开的本领域普通技术人员将意识到,图1所示的元件可以具有几种其他合适的计算机系统配置中的任何一种。例如,架构100可以具体实现为移动电话或手持计算机,并且可以不包括上述所有组件。
在示例中,本文呈现的技术可以是任何类型的计算机器(诸如但不限于参考图10更详细讨论的那些计算机器)的一部分。此外,与这些计算机器中的任何一个相关联的任何模块(诸如本文描述的模块或与本文所呈现的技术相关联的任何其他模块(脚本、Web内容、软件、固件或硬件))可以是参考图10更详细讨论的模块中的任何一个。本文所讨论的计算机器可以通过一个或多个网络彼此通信以及与其他计算机器或通信系统通信。网络可以包括任何类型的数据或通信网络,包括参考图10讨论的网络技术中的任何一种。
示例性过程
在下文中,结合示例性架构100的组件描述附图中所示出的示例性方法。示例性方法还可以利用其他系统和在其他架构中执行。参考附图中的任何一个所描述的操作可以被实现为存储在计算机或机器可读的非暂时性有形存储介质(诸如,软盘、硬盘、ROM、EEPROM、非易失性RAM、CD-ROM等)上的可执行代码,其基于由使用一个或多个集成电路实现的处理器电路执行代码来完成;本文描述的操作还可以被实现为编码在一个或多个非暂时性有形介质中以执行的可执行逻辑(诸如,可编程逻辑阵列或器件、现场可编程门阵列、可编程阵列逻辑、专用集成电路等)。
参考图2,并且继续参考图1作为背景,根据某些示例图示了创建图像直方图的方法200。在这样的方法200中,GPU 110接收输入图像——框210。输入图像由像素颜色值的二维阵列组成。例如,像素的颜色可以由具有像素的红色强度、蓝色强度和绿色强度的分量的向量表示。本文公开的示例在
Figure BDA0003066558940000051
“RGBA”格式的输入图像上操作,但不限于该格式。OpenGL是用于渲染图形的跨语言、跨平台应用编程接口(API)。该API通常用于与GPU 120交互以实现硬件加速渲染。OpenGL使得能够使用被称为“着色器”的程序来处理图像。除了用于红色、绿色和蓝色中的每一个的8比特值之外,OpenGL RGBA格式还使用8比特“A”或“α”分量。8比特格式为每个像素提供从“0”到“255”的256个离散值。α分量通常用于表示像素的透明度。
在OpenGL中,可以通过以下三种方式之一存储颜色值:归一化整数、浮点或积分。在着色器中,归一化整数格式和浮点格式两者都将解析为浮点值的向量;而积分格式将解析为整数的向量。本文呈现的示例对“R”、“B”、“G”和“A”中的每一个使用积分格式。尽管OpenGL RGBA格式实际上可以表示像素的任何颜色,但本文公开的示例在“灰度”图像上操作。在OpenGL RGBA格式中,灰度像素值由R=B=G表示,并带有任何适用的A。例如,像素值(127,127,127,255)表示纯(A=最大,纯)中灰色,像素值(0,0,0,255)表示纯黑色,而像素值(255,255,255,255)表示纯白色。
参考图3,并继续参考先前附图作为背景,根据某些示例,图示了输入灰度图像300。在继续的示例中,考虑图3的高64像素×宽76像素的灰度图像300。图像300由垂直条纹的图案组成——4像素宽的纯HTML黑(0,0,0,255)320、4像素宽的纯HTML白(255,255,255,255)330、4像素宽的纯HTML银(192,192,192,255)340和4像素宽的纯HTML灰(128,128,128,255)350。注意,该(黑色320,白色330,银色340和灰色350)图案完整重复四次,然后仅黑色320、白色330和银色340条纹再重复一次。结果,存在(64×4×5)=1280个黑色像素、1280个白色像素和1280个银色像素,但只有(64×4×4)=1024个灰色像素。
对于分割输入图像的输入色块集的像素的每个特定输入色块,并且对于该范围的每个特定灰度值,GPU 110并行地对具有特定灰度值的特定输入色块中像素的数量进行计数——框220。表1呈现了用于执行该计数的示例性伪代码。
Figure BDA0003066558940000071
表1
参考图4,并且继续参考先前附图作为背景,根据某些示例,输入灰度图像被示为被分割成输入图像色块410和420。在继续的示例中,如图4所示,使用16像素×16像素输入图像色块作为基础。这些输入图像色块的四行中的每行包括四个完整的输入图像色块410和一个16像素高×12像素宽的最后一个输入图像色块420。在一些示例中,始终使用尺寸统一的输入图像色块,而无需对该技术进行实质性更改。
GPU使用OpenGL着色器对每个输入色块中的256个灰度值的每一个的像素的数量进行计数。在继续的示例中,所有输入色块具有相同数量的黑色、白色和银色像素(64个)。20个色块中的16个色块具有64个灰色像素,而剩余4个最后的输入色块420不具有灰色像素。
对于分割输入图像的输入色块集的像素的每个特定输入色块,在GPU 110上运行的着色器并行地将输出图像色块创建为N个像素的有序序列,每个相应输出色块中的第n个像素的颜色值表示具有第n个灰度值的特定输入色块中的像素的计数——框230。在继续的示例中,N=256–在OpenGL RBGA方案中的不同灰度值的数量。
重要的是要注意,16像素×16像素输出图像色块中的像素的位置对应于OpenGLRBGA灰度方案中的颜色。给定输出图像色块像素的颜色值对应于输入图像中的该颜色的像素的计数。注意,已经进行了变换——输出图像色块中的位置对应于灰度颜色,而输出图像色块中的颜色对应于该灰度颜色的输入色块像素的计数。此外,包括对应于16像素×12像素输入色块的输出色块的每个输出色块是16像素×16像素。
在GPU 110上运行的着色器将以OpenGL RBGA无符号整数格式的每个输出图像色块中的每个像素的颜色值格式化为基数256,其中,“R”为最低有效位,而“A”为最高有效位。然而,为便于在故障排除过程中使用所得到的输出图像,将“A”位格式化为计数中其实际值的基数256补码。否则,在“A”的典型用法中,假设“A”位在输出图像色块编码方案中为最高有效位,则“A”将等于“0”(透明),直到计数到给定灰度颜色的超过16,000,000个像素为止。
参考图5,并且继续参考先前的附图作为背景,根据本技术的示例,输出色块500被示为像素510(i,j),其中n=(i-1)*16+j,并且被示为直方图520。在输出色块中,四位基数256符号中的第n个=第一个像素——(0,0,0,0)——对应于第一个灰度值(0,0,0,255=补码256(0))——黑色。
在继续的示例中,存在具有颜色值为(0,0,0,255)=黑色的输入图像的64个像素。GPU将输出色块中的第一个像素(对应于黑色的第一行中的第一个像素的输出色块位置)的颜色值设置为(64,0,0,255)——红色阴影。存在具有颜色值为(255,255,255,255)=白色的输入图像的64个像素。GPU将输出色块中第256个像素(对应于白色的输出色块位置)的颜色值设置为(64,0,0,255)——与第一个像素一样,具有相同的红色阴影。存在具有颜色值为(192,192,192,255)=银色的输入图像的64个像素。GPU将输出色块中的第193个像素(输出图像色块的第12行的最后一个像素)(对应于银色的输出色块位置)的颜色值设置为(64,0,0,255)——与第一和第二个像素一样,具有相同的红色阴影。最后,存在具有颜色值为(128、128、128、255)=灰色的输入图像的64个像素。GPU将输出色块中的第129个像素(输出图像色块的第12行的最后一个像素)(对应于银色的输出色块位置)的颜色值设置为(64,0,0,255)–与在先的像素一样,具有红色阴影。请注意,每个直方图列的宽度已被略微放大,以提高可见性。
如上所述,在将每个输入色块的灰度直方图表示为输出色块之后,GPU将输出图像色块组合为N个像素的单个合成输出图像——框240。单个合成输出图像中第n个像素的像素值对应于具有第n个灰度值的输入图像中像素的计数。
在继续的示例中,对于输出图像色块集的分层分割,其中,每个分层节点具有至少两个子节点,GPU从最低级到最高级对每一个第n个像素值进行求和。参考图6并且继续参考先前的附图作为背景,根据本技术的示例,示出了直方图600的两个视图610、620。在继续的示例中,考虑每个输出图像色块510a、510b、510c和510d中的像素#1。每个像素都具有值(64,0,0,255)或64256(因为“R”位是最低有效base256位)。GPU对来自输出图像色块510a,510b,510c和510d的每个510#1像素的颜色值进行求和——给定256,或以本技术的表示法(0,1,0,255),表示为非常深的绿色。直方图620在从左侧的第一个直方图条中反映该计数。GPU对来自色块510a,510b,510c和510d的相应像素的剩余组进行求和,得到直方图620中所示的剩余条。GPU对输出图像色块集{510e,510f,510g,510h}、{510i,510j,510k,510l}和{510m,510n,510o,510p}执行并行累加。求和将数字转换为整数,将整数与进位相加,然后将整数转换回浮点数。
尽管如从图7中可以看出,{510q,510r,510s,510t}中的每一个示出在像素714(对应于灰色)处均无计数——与输入色块510p中在像素712处的值(64,0,0,255)相反。相应的直方图720中灰度值129处的缺失条是与来自16×16像素输出色块{510q,510r,510s,510t}的相应像素计数的累计结果的另一视图。
参考图8,并且继续参考先前的附图作为背景,800图示了根据本技术的示例的直方图的倒数第二个810和最后一个820阶段。在完成结合图6和图7描述的处理之后,GPU正在存储五(5)个16像素×16像素色块,GPU以逐个像素求和的方式形成直方图820。参考图9并且继续参考先前图作为背景,900图示了图像中以及作为由图像表示的直方图的输出图像直方图的最后一个阶段。在继续的示例中,16像素×16像素输出图像色块910表示原始完整的灰度输入图像300的同一直方图。GPU分配对应于黑色、银色和白色值的像素,该黑色、银色和白色值反映来自原始灰度输入图像300的每种颜色的计数——对应于计数1280的蓝色值(0,5,0,255)。GPU分配对应于灰色值的像素,该灰色值反映来自原始灰度输入图像300的每个灰度像素的计数——对应于计数1024的蓝色值(0,4,0,255)。
其他示例
图10描绘了根据某些示例的计算机器2000和模块2050。计算机器2000可以对应于本文呈现的各种计算机、服务器、移动设备、嵌入式系统或计算系统中的任何一个。模块2050可以包括一个或多个硬件或软件元件,所述硬件或软件元件被配置为促进计算机器2000执行本文呈现的各种方法和处理功能。计算机器2000可以包括各种内部或附接的组件,诸如处理器2010、系统总线2020、系统存储器2030、存储介质2040、输入/输出接口2060以及用于与网络2080通信的网络接口2070。
计算机器2000可以被实现为常规计算机系统、嵌入式控制器、膝上型计算机、服务器、移动设备、智能电话、机顶盒、信息亭、路由器或其他网络节点、车辆信息系统、与电视机相关联的一个或多个处理器、定制的机器、任何其他硬件平台、或前述各项的任何组合或多个前述各项。计算机器2000可以是被配置为使用经由数据网络或总线系统互连的多个计算机器而起作用的分布式系统。
处理器2010可以被配置为执行代码或指令以实现本文描述的操作和功能、管理请求流和地址映射以及执行计算并生成命令。处理器2010可以被配置为监视和控制计算机器2000中的组件的操作。处理器2010可以是通用处理器、处理器核、多处理器、可重构处理器、微控制器、数字信号处理器(“DSP”)、专用集成电路(“ASIC”)、图形处理单元(“GPU”)、现场可编程门阵列(“FPGA”)、可编程逻辑器件(“PLD”)、控制器、状态机、门控逻辑、离散硬件组件、任何其他处理单元、或前述各项的任何组合或多个前述各项。处理器2010可以是单个处理单元、多个处理单元、单个处理核、多个处理核、专用处理核、协处理器或其任何组合。根据某些示例,处理器2010连同计算机器2000的其他组件一起可以是在一个或多个其他计算机器中执行的虚拟化计算机器。
系统存储器2030可以包括非易失性存储器,诸如只读存储器(“ROM”)、可编程只读存储器(“PROM”)、可擦除可编程只读存储器(“EPROM”)、闪存、或能够在施加或不施加电力的情况下存储程序指令或数据的任何其他设备。系统存储器2030还可以包括易失性存储器,诸如随机存取存储器(“RAM”)、静态随机存取存储器(“SRAM”)、动态随机存取存储器(“DRAM”)和同步动态随机存取存储器(“SDRAM”)。其他类型的RAM也可以被用来实现系统存储器2030。系统存储器2030可以使用单个存储器模块或多个存储器模块来实现。尽管系统存储器2030被描绘为计算机器2000的一部分,但是本领域技术人员将认识到,在不脱离主题技术的范围的情况下,系统存储器2030可以与计算机器2000分离。还应当意识到,系统存储器2030可以包括诸如存储介质2040之类的非易失性存储设备或与之协作操作。
存储介质2040可以包括硬盘、软盘、光盘只读存储器(“CD-ROM”)、数字多功能光盘(“DVD”)、蓝光光盘、磁带、闪存、其他非易失性存储器设备、固态驱动器(“SSD”)、任何磁存储设备、任何光存储设备、任何电存储设备、任何半导体存储设备、任何基于物理的存储设备、任何其他数据存储设备、或前述各项的任何组合或多个前述各项。存储介质2040可以存储一个或多个操作系统、应用程序和诸如模块2050的程序模块、数据或任何其他信息。存储介质2040可以是计算机器2000的一部分或连接到计算机器2000。存储介质2040还可以是与计算机器2000通信的一个或多个其他计算机器(诸如服务器、数据库服务器、云存储、网络附接存储等)的一部分。
模块2050可以包括一个或多个硬件或软件元件,所述硬件或软件元件被配置为促进计算机器2000执行本文呈现的各种方法和处理功能。模块2050可以包括被存储为与系统存储器2030、存储介质2040或两者相关联的软件或固件的一个或多个指令序列。因此,存储介质2040可以表示可以在其上存储指令或代码以供处理器2010执行的机器或计算机可读介质的示例。机器或计算机可读介质通常可以是指用于向处理器2010提供指令的任何介质或媒介。与模块2050相关联的这种机器或计算机可读介质可以包括计算机软件产品。应当意识到,包括模块2050的计算机软件产品还可以与用于经由网络2080、任何承载信号的介质、或任何其他通信或传送技术将模块2050发布到计算机器2000的一个或多个处理或方法相关联。模块2050还可以包括硬件电路或用于配置硬件电路的信息(诸如用于FPGA或其他PLD的微码或配置信息)。
输入/输出(“I/O”)接口2060可以被配置为耦合到一个或多个外部设备,以从一个或多个外部设备接收数据,并且向一个或多个外部设备发送数据。这种外部设备以及各种内部设备也可以被称为外围设备。I/O接口2060可以包括用于将各种外围设备可操作地耦合到计算机器2000或处理器2010的电气连接和物理连接两者。I/O接口2060可以被配置为在外围设备、计算机器2000或处理器2010之间传递数据、地址和控制信号。I/O接口2060可以被配置为实现任何标准接口,诸如小型计算机系统接口(“SCSI”)、串行附接SCSI(“SAS”)、光纤信道、外围组件互连(“PCI”)、快速PCI(PCIe)、串行总线、并行总线、高级技术附接(“ATA”),串行ATA(“SATA”)、通用串行总线(“USB”)、Thunderbolt、FireWire、各种视频总线等。I/O接口2060可以被配置为仅实现一种接口或总线技术。可替代地,I/O接口2060可以被配置为实现多种接口或总线技术。I/O接口2060可以被配置为系统总线2020的一部分、全部或与系统总线2020协作操作。I/O接口2060可以包括一个或多个缓冲器,用于缓冲一个或多个外部设备、内部设备、计算机器2000或处理器2010之间的传输。
I/O接口2060可以将计算机器2000耦合到各种输入设备,包括鼠标、触摸屏、扫描仪、电子数字化仪、传感器、接收器、触摸板、轨迹球、相机、麦克风、键盘、任何其他指示设备或其任何组合。I/O接口2060可以将计算机器2000耦合到各种输出设备,包括视频显示器、扬声器、打印机、投影仪、触觉反馈设备、自动化控制、机器人组件、致动器、电机、风扇、螺线管、阀门、泵、发送器、信号发射器、灯等。
计算机器2000可以使用通过网络接口2070到跨网络2080的一个或多个其他系统或计算机器的逻辑连接,在联网环境中操作。网络2080可以包括广域网(WAN)、局域网(LAN)、内联网、因特网、无线接入网络、有线网络、移动网络、电话网络、光网络或其组合。网络2080可以是任何拓扑的分组交换、电路交换,并且可以使用任何通信协议。网络2080内的通信链路可以涉及各种数字或模拟通信介质,诸如光纤电缆、自由空间光学器件、波导、电导体、无线链路、天线、射频通信等等。
处理器2010可以通过系统总线2020连接到计算机器2000的其他元件或本文讨论的各种外围设备。应当意识到,系统总线2020可以在处理器2010之内、在处理器2010之外或两者兼有。根据某些示例,处理器2010、计算机器2000的其他元件或本文讨论的各种外围设备中的任何一个都可以被集成到单个设备(诸如片上系统(“SOC”)、系统封装(“SOP”)或ASIC设备)中。
示例可以包括具体实现本文描述和示出的功能的计算机程序,其中,所述计算机程序在计算机系统中实现,所述计算机系统包括存储在机器可读介质中的指令和执行所述指令的处理器。但是,很显然,在计算机编程中可以有许多不同的方式来实现示例,并且这些示例不应当被解释为限于任何一组计算机程序指令。此外,本领域程序员将能够基于在申请文本中所附的流程图和相关描述来编写计算机程序以实现所公开示例的示例。因此,对于充分理解如何做出和使用示例,认为不需要公开一组特定的程序代码指令。此外,本领域技术人员将意识到,本文描述的示例的一个或多个方面可以由硬件、软件或其组合来执行,如可以具体实现在一个或多个计算系统中。此外,任何对由计算机执行的动作的引用都不应当解释为由单个计算机执行,因为一个以上的计算机也可以执行所述动作。
本文描述的示例可以与执行本文描述的方法和处理功能的计算机硬件和软件一起使用。本文描述的系统、方法和过程可以具体实现在可编程计算机、计算机可执行软件或数字电路中。所述软件可以被存储在计算机可读介质上。例如,计算机可读介质可以包括软盘、RAM、ROM、硬盘、可移动介质、闪存、记忆棒、光学介质、磁光介质、CD-ROM等。数字电路可以包括集成电路、门阵列、构件块逻辑、现场可编程门阵列(FPGA)等。
先前呈现的示例中描述的示例性系统、方法和动作是说明性的,并且在替代示例中,某些动作可以在不脱离各个示例的范围和精神的情况下以不同的顺序、彼此并行、完全省略和/或在不同示例之间组合来执行,和/或可以执行某些其他动作。因此,这种替代示例被包括在所附权利要求的范围内,这些权利要求应被赋予最宽泛的解释以涵盖这些替代示例。
尽管上文已经详细描述了具体示例,但是所述描述仅出于说明的目的。因此,应当意识到,除非另有明确说明,否则上述许多方面不旨在作为必需或必要的要素。除了上述方面之外,本领域普通技术人员可以在不脱离所附权利要求中定义的示例的精神和范围的情况下,受益于本公开而对示例的所公开的方面进行修改以及实现与之相对应的等同组件或动作。所附权利要求书中定义的示例的精神和范围应被赋予最宽泛的解释,以涵盖此类修改和等同结构。

Claims (20)

1.一种用于创建输入图像的灰度直方图的计算机实现的方法,包括:
在图形处理单元GPU中:
接收包括像素阵列的输入图像,每个像素具有N个灰度值的范围内的灰度值;
对于分割所述输入图像的输入色块集中的像素的每个特定输入色块:
对于所述范围内的每个特定灰度值,对在具有所述特定灰度值的所述特定输入色块中像素的数量并行地计数;以及
将输出图像色块创建为N个像素的有序序列,其中,每个相应输出色块中的第n个像素的颜色值表示在具有第n个灰度值的所述特定输入色块中所述像素的计数;以及
将所述输出图像色块组合成N个像素的单个合成输出图像,所述单个合成输出图像中的第n个像素的像素值对应于具有第n个灰度值的所述输入图像中所述像素的计数。
2.根据权利要求1所述的方法,其中,将所述输出图像色块组合成单个合成输出图像包括:
对于所述输出图像色块集的分层分割,其中,每个分层节点具有至少两个子节点,从最低级到最高级对每一个第n个像素值进行求和。
3.根据权利要求2所述的方法,其中,每个输出图像色块是16×16像素阵列,并且除了所述分层之外的每个父节点具有4个子节点。
4.根据权利要求1所述的方法,其中,以OpenGL RBGA无符号整数格式将输出图像色块中的每个像素的颜色值格式化为基数256的数字,其中,“R”为最低有效位,以及“A”为最高有效位。
5.根据权利要求4所述的方法,其中,“A”被格式化为基数256的补码。
6.根据权利要求4所述的方法,其中,每个输出图像色块是16×16像素阵列。
7.根据权利要求1所述的方法,其中,使用一个或多个片段着色器在所述GPU上执行对像素的数量进行计数、创建相应的输出图像色块以及将所述输出图像色块组合为单个合成图像。
8.一种计算机程序产品,包括:
非暂时性计算机可读存储设备,其上包含计算机可执行程序指令,所述计算机可执行程序指令在由计算机执行时使所述计算机创建输入图像的灰度直方图:
在图形处理单元GPU中:
接收包括像素阵列的输入图像,每个像素具有N个灰度值的范围内的灰度值;
对于分割所述输入图像的输入色块集中的像素的每个特定输入色块:
对于所述范围内的每个特定灰度值,对在具有所述特定灰度值的所述特定输入色块中像素的数量并行地计数;以及
将输出图像色块创建为N个像素的有序序列,其中,每个相应输出色块中的第n个像素的颜色值表示在具有第n个灰度值的所述特定输入色块中所述像素的计数;以及
将所述输出图像色块组合成N个像素的单个合成输出图像,所述单个合成输出图像中的第n个像素的像素值对应于具有第n个灰度值的所述输入图像中所述像素的计数。
9.根据权利要求8所述的计算机程序产品,其中,将所述输出图像色块组合成单个合成输出图像包括:
对于所述输出图像色块集的分层分割,其中,每个分层节点具有至少两个子节点,从最低级到最高级对每一个第n个像素值进行求和。
10.根据权利要求9所述的计算机程序产品,其中,每个输出图像色块是16×16像素阵列,并且除了所述分层之外的每个父节点具有4个子节点。
11.根据权利要求8所述的计算机程序产品,其中,以OpenGL RBGA无符号整数格式将输出图像色块中的每个像素的颜色值格式化为基数256的数字,其中,“R”为最低有效位,以及“A”为最高有效位。
12.根据权利要求11所述的计算机程序产品,其中,“A”被格式化为基数256的补码。
13.根据权利要求11所述的计算机程序产品,其中,每个输出图像色块是16×16像素阵列。
14.根据权利要求8所述的计算机程序产品,其中,使用一个或多个片段着色器在所述GPU上执行对像素的数量进行计数、创建相应的输出图像色块以及将所述输出图像色块组合为单个合成图像。
15.一种用于处理在移动支付服务中用户的注册的系统,所述移动支付服务是由服务提供商支持的多个服务中的一个,包括:
存储设备;以及
可通信地耦合到所述存储设备的处理器,其中,所述处理器执行存储在所述存储设备中的应用代码指令,以使所述系统:
在图形处理单元GPU中:
接收包括像素阵列的输入图像,每个像素具有N个灰度值的范围内的灰度值;
对于分割所述输入图像的输入色块集中的像素的每个特定输入色块:
对于所述范围内的每个特定灰度值,对在具有所述特定灰度值的所述特定输入色块中像素的数量并行地计数;以及
将输出图像色块创建为N个像素的有序序列,其中,每个相应输出色块中的第n个像素的颜色值表示在具有第n个灰度值的所述特定输入色块中所述像素的计数;以及
将所述输出图像色块组合成N个像素的单个合成输出图像,所述单个合成输出图像中的第n个像素的像素值对应于具有所述第n个灰度值的所述输入图像中所述像素的计数。
16.根据权利要求15所述的系统,其中,将所述输出图像色块组合成单个合成输出图像包括:
对于所述输出图像色块集的分层分割,其中,每个分层节点具有至少两个子节点,从最低级到最高级对每一个第n个像素值进行求和。
17.根据权利要求16所述的系统,其中,每个输出图像色块是16×16像素阵列,并且除了所述分层之外的每个父节点具有4个子节点。
18.根据权利要求15所述的系统,其中,以OpenGL RBGA无符号整数格式将输出图像色块中的每个像素的颜色值格式化为基数256的数字,其中,“R”为最低有效位,以及“A”为最高有效位。
19.根据权利要求18所述的系统,其中,“A”被格式化为基数256的补码。
20.根据权利要求18所述的系统,其中,每个输出图像色块是16×16像素阵列。
CN201980075373.6A 2019-02-27 2019-02-27 灰度直方图生成 Active CN113168667B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2019/019891 WO2020176087A1 (en) 2019-02-27 2019-02-27 Grayscale histogram generation

Publications (2)

Publication Number Publication Date
CN113168667A true CN113168667A (zh) 2021-07-23
CN113168667B CN113168667B (zh) 2024-05-14

Family

ID=65767308

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980075373.6A Active CN113168667B (zh) 2019-02-27 2019-02-27 灰度直方图生成

Country Status (4)

Country Link
US (2) US11379945B2 (zh)
EP (1) EP3867858A1 (zh)
CN (1) CN113168667B (zh)
WO (1) WO2020176087A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SI2752189T1 (sl) 2008-11-22 2017-02-28 F. Hoffmann-La Roche Ag Uporaba anti-vegf protitelesa v kombinaciji s kemoterapijo za zdravljenje prsnega raka
WO2020176087A1 (en) * 2019-02-27 2020-09-03 Google Llc Grayscale histogram generation

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102722881A (zh) * 2010-11-16 2012-10-10 手持产品公司 可操作地处理单色图像数据的方法和系统
US20130038622A1 (en) * 2011-08-11 2013-02-14 Chang-Jing Yang Methods for compensating images and producing built-in compensating matrix set and e-paper display device thereof
US20130044809A1 (en) * 2011-08-18 2013-02-21 Qualcomm Incorporated Applying partition-based filters
CN103971381A (zh) * 2014-05-16 2014-08-06 江苏新瑞峰信息科技有限公司 一种多目标跟踪系统及方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RO127451A2 (ro) * 2010-10-04 2012-05-30 Universitatea "Politehnica" Din Bucureşti Metodă optimizată de determinare a histogramei imaginilor în tonuri de gri, pe platforme de procesare paralelă
JP2013183267A (ja) * 2012-03-01 2013-09-12 Sony Corp 画像処理装置および方法、並びにプログラム
WO2020176087A1 (en) * 2019-02-27 2020-09-03 Google Llc Grayscale histogram generation

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102722881A (zh) * 2010-11-16 2012-10-10 手持产品公司 可操作地处理单色图像数据的方法和系统
US20130038622A1 (en) * 2011-08-11 2013-02-14 Chang-Jing Yang Methods for compensating images and producing built-in compensating matrix set and e-paper display device thereof
US20130044809A1 (en) * 2011-08-18 2013-02-21 Qualcomm Incorporated Applying partition-based filters
CN103971381A (zh) * 2014-05-16 2014-08-06 江苏新瑞峰信息科技有限公司 一种多目标跟踪系统及方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
OLIVER FLUCK 等: "GPU histogram computation", 《INTERNATIONAL CONFERENCE ON COMPUTER GRAPHICS AND INTERACTIVE TECHNIQUES》, pages 1 *
赵晓红, 沈绪榜, 张艳宁, 王忠, 张发存: "直方图计算的数据并行实现方法", 信号处理, no. 02 *

Also Published As

Publication number Publication date
US20210358074A1 (en) 2021-11-18
US20210374899A1 (en) 2021-12-02
WO2020176087A1 (en) 2020-09-03
CN113168667B (zh) 2024-05-14
US11379945B2 (en) 2022-07-05
US11710208B2 (en) 2023-07-25
EP3867858A1 (en) 2021-08-25

Similar Documents

Publication Publication Date Title
US11710208B2 (en) Grayscale histogram generation
KR101956197B1 (ko) 그래픽 처리 유닛을 이용한 데이터 처리 방법 및 장치
US11086668B2 (en) Method, electronic device and computer program product for processing task
US11636665B2 (en) Streaming image semantic segmentation method, logical integrated circuit system and electronic device
US10877847B2 (en) Using accelerators for distributed data compression and decompression to improve checkpoint / restart times
US20180184096A1 (en) Method and apparatus for encoding and decoding lists of pixels
CN111667542A (zh) 适用于人工神经网络的用于处理压缩数据的解压缩技术
US8229251B2 (en) Pre-processing optimization of an image processing system
US11653009B2 (en) Multi-pixel caching scheme for lossless encoding
CN115147695A (zh) 融合图像缩放与颜色空间转换的方法、装置及设备
US8854385B1 (en) Merging rendering operations for graphics processing unit (GPU) performance
US11936507B2 (en) CMOS signaling front end for extra short reach links
US11314557B2 (en) Method, apparatus, and computer program product for selecting computing resources for processing computing task based on processing performance
CN108572593B (zh) 跨平台卷积神经网络控制系统及方法、信息数据处理终端
US10810777B1 (en) Feature erasure
CN109408028B (zh) 浮点数运算方法、装置及存储介质
US11037329B2 (en) Encoding positional coordinates based on multiple channel color values
US20200184369A1 (en) Machine learning in heterogeneous processing systems
WO2022089421A1 (en) ReLU COMPRESSION TO REDUCE GPU MEMORY
US10187663B2 (en) Technique for performing variable width data compression using a palette of encodings
CN113065011B (zh) 图片的确定方法和装置
US20230403100A1 (en) Graph neural network for channel decoding
US11575916B2 (en) Top palette colors selection using sorting for palette mode in video encoding
US11683243B1 (en) Techniques for quantifying the responsiveness of a remote desktop session
US20220261650A1 (en) Machine learning training in logarithmic number system

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
GR01 Patent grant