一种直方图统计电路及多媒体处理系统的制作方法

文档序号:12471635阅读:159来源:国知局
一种直方图统计电路及多媒体处理系统的制作方法与工艺

本发明涉及电子领域,尤其涉及一种直方图统计电路及多媒体处理系统。



背景技术:

目前,随着智能终端和多媒体应用的日益普及,人们对于复杂的计算机视觉处理、图像处理等性能的需求也越来越高。同时,智能终端对多媒体应用的实时性要求也越来越高,因此,多媒体计算的硬件加速受到广泛关注。

现有技术中,智能终端的多媒体处理主要采用矢量处理器完成,矢量处理器的基本架构是:超长指令字(Very Long Instruction Word,VLIW)加上单指令多数据流(Single Instruction Multiple Data,SIMD)处理。虽然矢量处理器具有很强的指令并行和数据并行的处理能力,能高效地完成大多数多媒体处理任务,但是仍然存在一些很难由通用处理器指令来完成的特殊多媒体处理任务,从而限制了某些多媒体处理算法在智能终端上的应用。例如:图片均衡算法(用于拍照时提升照片细节并去除光照不均匀以及细节模糊不清),目标识别算法(包括人脸识别、路标识别、商品识别等算法)等,这些算法中都大量使用了直方图统计,其中,直方图统计是对图片中取值介于0~255的所有图像像素出现次数的进行统计,得到256种不同取值像素出现的次数。更进一步,直方图统计还可以对图片的特征图进行统计,比如典型的边沿特征图,梯度特征图等。当前,由于图片的像素个数随着图像分辨率的提升越来越大,例如:1080p的高清图片的像素点就接近200万个,为了完成一张1080p的高清图片的直方图统计,矢量处理器需要对256个统计计数器来回访存200万次,这将导致明显的访存瓶颈和计算性能瓶颈。

现有技术提供了一种基于存储器(memory)的直方图统计方案,如图1所示,在直方图统计电路10中,存储器11中存储有分别与256种像素取值一一对应的256个统计计数值,直方图统计电路10的计算过程如下:首先,D触发器12以当前像素x0的值做为偏移地址,从存储器11中找到与当前像素对应的统计计数值;其次,加法器13通过读端口(rdata)读取该统计计数值,并在该统计计数值的基础上加1,然后通过写端口(wdata)将加1后的统计计数值回写到存储器11,从而完成对当前像素的统计。例如,当前像素x0的值为122,则从存储器11所存储的256个统计计数值中,找到用于统计像素值122的统计计数值(counter 122),然后在counter 122当前的数值上加1,然后通过写端口将新的counter 122回写到存储器11中,从而完成对像素x0的一次统计。然而,由于受存储器11的读写端口的数量的限制(memory的读写端口一般不多于2个),该直方图统计电路10在一个时钟周期内只能进行1至2个像素的统计,显然,对于高分辨率的图片而言,该直方图统计电路10的计算性能无法满足多媒体应用的实时处理需求。

因此,亟需设计一种新型的直方图统计电路,来改善多媒体处理器的性能和功耗。



技术实现要素:

本发明实施例提供了一种具有较高计算性能的直方图统计电路以及多媒体处理系统,可以满足多媒体应用对于实时处理等性能的急迫需求。

第一方面,本发明提供了一种直方图统计电路,所述直方图统计电路耦合至存储器,所述存储器中存储有多媒体数据,所述直方图统计电路包括:计数器缓存,控制器,解析电路,匹配译码电路,以及计数值更新电路,其中,所述控制器分别与所述计数器缓存,所述解析电路以及所述匹配译码电路相耦合,所述计数值更新电路耦合在所述计数器缓存以及所述匹配译码电路之间;所述计数器缓存,用于缓存Y组计数器,其中每组计数器包括至少一个计数器且每个计数器对应一个当前计数值,Y为大于1的正整数;所述控制器,用于控制所述存储器对所述多媒体数据中的像素进行分组,得到M组分组数据;所述解析电路,用于执行如下步骤:从所述M组分组数据中获取第i分组数据,并对所述第i分组数据的像素值分别进行解析,以确定,在所述计数器缓存中存储的所述Y组计数器中,与所述第i分组数据相匹配的X组计数器,X为正整数且1≤X≤Y,所述解析电路重复执行上述步骤直到i=M为止,其中,i为起始值为1的自然数且每次迭代过程中增加1;所述控制器,还用于根据所述解析电路确定的所述X组计数器,控制所述匹配译码电路在X个时钟周期内,将所述第i分组数据分别与所述X组计数器进行匹配;所述匹配译码电路,用于执行如下步骤:在第j时钟周期,将所述第i分组数据中的各个像素与所述X组计数器中的第j组计数器进行匹配,并根据匹配结果,指示所述计数值更新电路对所述第j组计数器进行计数值更新,所述匹配译码电路重复执行上述步骤,直到j=X为止,其中,j为起始值为1的自然数且每次重复过程中增加1;所述计数值更新电路,用于在所述第j时钟周期,从所述计数器缓存中读取所述第j组计数器的当前计数值,并根据所述匹配译码电路指示的所述匹配结果,对所述第j组计数器的当前计数值进行更新,得到所述第j计数器的更新计数值,并将所述第j组计数器的更新计数值回写到所述计数器缓存的所述第j组计数器中。相比传统的基于存储器的直方图统计电路,本发明提供的直方图统计电路可以在一个时钟周期内,并行完成多个像素的统计,从而提高了直方图统计电路的效率。

可选的,在一种实施方式中,所述控制器用于控制存所述储器按照行或列或矩阵的方式对所述多媒体数据进行分组,得到所述M组分组数据。由于多媒体数据通常为灰度图像,各个分组数据在像素值上保持了良好的局部性,从而在对多媒体数据进行直方图统计时,可以只考虑与当前统计的分组数据相匹配的计数器组,而不用遍历所有的计数器,提高了计算效率。

可选的,在一种实施方式中,所述解析电路用于:对所述第i分组数据的各个像素的值进行解析,确定所述第i分组数据的各个像素所处的第一取值范围,并根据所述第一取值范围确定与所述第i分组数据相匹配的X组计数器。

可选的,在一种实施方式中,所述解析电路用于:对所述第i分组数据的各个像素的值进行解析,以获取所述第i分组数据中的最大像素值以及最小像素值,并根据所述最大像素值以及所述最小像素值,确定所述第i分组数据的第一取值范围。

可选的,在一种实施方式中,所述解析电路用于:当Y=2K时,根据所述第i分组数据中的各个像素的高K位比特,确定与所述第i分组数据相匹配的所述X组计数器,K为正整数且1≤K≤8。通过这种方式确定所述X组计数器,能够进一步减少无效运算,提高直方图统计电路的计算效率。

可选的,在一种实施方式中,所述解析电路还用于:生成指示信息,并将所述指示信息发送给所述控制器,以指示所述X组计数器。

可选的,在一种实施方式中,所述匹配译码电路用于:在所述第j时钟周期,将所述第i分组数据中的各个像素与所述第j组计数器进行匹配;若所述第i分组数据中的任一像素,与所述第j组计数器中的第一计数器相匹配,则指示所述计数值更新电路更新所述第一计数器的当前计数值;

可选的,在一种实施方式中,所述匹配译码电路还用于:若所述第i分组数据中的各个像素,与所述第j组计数器中的任一计数器均不匹配,则指示所述计数值更新电路维持所述第j组计数器的当前计数值不变。

可选的,在一种实施方式中,所述计数值更新电路具体包括至少一个加法器,所述至少一个加法器的数量与所述第j组计数器中的计数器的数量相等且一一对应,其中任一加法器用于:从所述计数器缓存中读取与所述任一加法器对应的第二计数器的当前计数值,若所述匹配译码电路指示所述第i分组数据中的任一像素与所述第二计数器相匹配,则所述任一加法器在所述第二计数器的当前计数值的基础上加1,作为所述第二计数器的更新计数值,并将所述第二计数器的更新计数值回写到所述计数器缓存的所述第二计数器中,替代所述第二计数器的当前计数值。

可选的,在一种实施方式中,当所述计数器缓存中存储的任一计数器的当前计数值,按照高位、低位分两部分存储,低位部分包括:低位以及在设置于低位之前一个溢出位,且用于更新所述任一计数器的当前计数值的加法器包括:第一加法器和第二加法器时,其中高位和低位的位宽分别满足如下公式:

其中,WCNT表示任一计数器的当前计数值的总位宽,Wdata表示所述多媒体数据的像素数量的位宽,WCNT_LOW表示低位的位宽,WCNT_HIGH表示高位的位宽,Wgroup表示对所述M组分组数据中的任一分组数据的的像素数量位宽;则所述第一加法器用于:若所述匹配译码电路指示所述第i分组数据中的任一像素,与所述任一计数器相匹配时,则读取所述任一计数器的当前计数值的低位并加1,并将更新后的低位的数值回写到所述计数器缓存中的所述任一计数器的低位部分;所述控制器还用于:检测所述溢出位,若所述溢出位的值为1,则将所述任一计数器的当前计数值的高位读取到所述第二加法器中,由所述第二加法器加1,并将更新后的高位的数值回写到所述计数器缓存中的所述任一计数器的高位部分。通过将计数器的当前计数值分为高位CNT_HIGH和低位CNT_LOW两部分分别进行更新,可以降低计算强度,从而节省不必要的访存功耗和加法器计算功耗。

第二方面,本发明提供了一种多媒体处理系统,包括:存储器,如第一方面以及第一方面的任一可选的实施方式所述的直方图统计电路,以及处理器;所述存储器,用于存储多媒体数据;所述直方图统计电路,用于从所述存储器中获取所述多媒体数据,并对所述多媒体数据进行直方图统计,生成统计结果;所述处理器,用于根据所述统计结果,并基于直方图应用算法对所述多媒体数据进行处理。本发明提供的多媒体处理系统中,由于直方图统计电路可以并行完成多个像素的计算,同时,通过对多媒体数据进行合理的分组,减少了一些无效运算,从而使得多媒体处理系统的计算效率,得到大幅提高,可以满足人脸识别等场景对于实时性的要求。

可选的,在一种实施方式中,所述直方图应用算法包括:直方图均衡算法,重要的图像特征方向梯度直方图HOG算法,均值平移算法以及连续自适应的均值平移算法。

可选的,在一种实施方式中,所述多媒体处理系统还包括:获取装置,用于获取所述多媒体数据,并将所述多媒体数据写入所述存储器。

可选的,在一种实施方式中,所述处理器和所述直方图统计电路集成在同一个集成电路IC中。

可选的,在一种实施方式中,多媒体处理系统为移动终端或车载设备。

可选的,在一种实施方式中,处理器为多媒体处理器。

可选的,在一种实施方式中,处理器为多媒体矢量处理器。

可选的,在一种实施方式中,获取装置包括:图像传感器或者图形芯片。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为现有技术中基于存储器的直方图统计电路的结构示意图;

图2为本发明实施例提供的一种直方图统计电路的架构示意图;

图3为存储器对多媒体进行分组访问的示意图;

图4为本发明施例提供的另一种直方图统计电路的架构示意图;

图5为本发明施例提供的一种多媒体处理系统的架构示意图。

具体实施方式

下面将结合附图,对本发明实施例中的技术方案进行描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

如图2所示,本发明的一个实施例提供了一种直方图统计电路200,该直方图统计电路200耦合到存储器100,用于对存储器100所存储的多媒体数据进行直方图统计;

该直方图统计电路200可以包括:计数器缓存201,控制器202,解析电路203,匹配译码电路204以及计数值更新电路205,其中,所述控制器202分别与所述计数器缓存201,所述解析电路203以及所述匹配译码电路204相耦合,所述计数值更新电路205耦合在所述计数器缓存201以及所述匹配译码电路204之间;

所述计数器缓存201,用于缓存Y组计数器(Counters),每组计数器中包括至少一个计数器且每个计数器对应一个当前计数值,Y为大于1的正整数;

所述控制器202,用于控制与所述直方图统计电路200相耦合的存储器100对需要统计的多媒体数据中的各个像素进行分组,得到M组分组数据,M为大于1的正整数,如图2所示,每一分组数据中的像素可以表示为x0,x1,…,xN-1,本领域技术人员应当知道,多媒体数据通常是存储在存储器100的存储阵列中的,因此,所述控制器202控制存储器100对多媒体数据进行分组,实际上是通过对存储器100所存储的多媒体数据的访问进行控制来实现的,比如:存储器100将多媒体数据分成两组,实际上是先访问与第一组数据相对应的存储阵列,然后访问与第二组数据相对应的存储阵列;

所述解析电路203,用于执行如下步骤:从所述M组分组数据中获取第i分组数据,并对所述第i分组数据的像素值分别进行解析,以确定,在所述计数器缓存201中存储的所述Y组计数器中,与所述第i分组数据相匹配的X组计数器,X为正整数且1≤X≤Y,所述解析电路203重复执行上述步骤直到i=M为止,其中,i为起始值为1的自然数且每次迭代过程中增加1;

所述控制器202,还用于根据所述解析电路203确定的所述X组计数器,控制所述匹配译码电路204在X个时钟周期内,将所述第i分组数据分别与所述X组计数器进行匹配;

所述匹配译码电路204,用于执行如下步骤:在第j时钟周期,将所述第i分组数据中的各个像素与所述X组计数器中的第j组计数器进行匹配,并根据匹配结果,指示所述计数值更新电路205对所述第j组计数器进行计数值更新,所述匹配译码电路204重复执行上述步骤,直到j=X为止,其中,j为起始值为1的自然数且每次迭代过程中增加1,需要说明的是,这里的时钟周期是指匹配译码电路204在将一组分组数据中的各个像素与一组计数器进行匹配处理的所需的时间,这里的时钟周期可以包括一个或者多个系统时钟周期;

所述计数值更新电路205,用于在所述第j时钟周期,从所述计数器缓存201中读取所述第j组计数器的当前计数值,并根据所述匹配译码电路204得到的所述匹配结果,对所述第j组计数器的当前计数值进行更新,得到所述第j计数器的更新计数值,并将所述第j组计数器的更新计数值回写到所述计数器缓存201的所述第j组计数器中,以替代所述第j组计数器的当前计数值。

相比传统的基于存储器的直方图统计电路10,采用本发明实施例中提供的直方图统计电路200对多媒体数据进行直方图统计,不会受到存储器的读写端口的数量的限制,可以在一个时钟周期内,并行完成多个像素的统计,提高了直方图统计电路的效率。

本领域技术人员应当知道,像素的取值范围介于0到255之间,因此,若所述计数器缓存201存储了8组计数器,每组计数器中包括32个计数器,且每个计数器分别对应一个像素值,则所述直方图统计电路200可以使用所述计数器缓存201所存储的256个计数器,对[0,255]范围内的像素值分别进行统计。进一步地,可以按照各个计数器对应的像素值大小,给所述计数器缓存201存储的256个计数器进行编号,示例性的,将用于统计像素值0的计数器记为C0,将用于统计像素值1的计数器记为C1,以此类推,将用于统计像素值255的计数器记为C255。在对256个计数器进行分组时,则可以按照各个计数器的编号进行连续分组,以将256个计数器分为8组且每组包括32个计数器为例,分组情况可以如下:计数器组0为(C0~C31),计数器组1为(C32~C63),计数器组2为(C64~C95),计数器组3为(C96~C127),计数器组4为(C128~C159),计数器组5为(C160~C191),计数器组6为(C192~C223),计数器组7为(C224~C255)。需要说明的是,本发明实施例中,还可以根据实际需要,对256个计数器进行分组,并不局限于分8组,比如:可以分为16组,每组包括16个计数器,或者可以分为4组,每组64个计数器,等等。此外,本发明也不局限于256个计数器,计数器的数量具体可以根据统计对象的特征进行设定,比如统计对象的取值范围为[0,1000],则可以在计数器缓存201中设置1000个计数器。

本实施例中,示例性的,假设存储器100存储的多媒体数据中总共包括L个像素,则所述控制器202具体可以控制所述存储器100将L个像素分成M组,每组分组数据中包括N(N=L/M)个像素,其中,N、L均为正整数,通常情况下,N和L的取值均大于等于2。以多媒体数据包括1024个像素点为例,可以将多媒体数据分成16组,每组分组数据分别包括64个像素。

进一步地,当多媒体数据为自然图像时,如图3所示(图3中分别用P0~P63表示各个像素),由于自然图像中的相邻像素的取值相近,具有很好的局部性,也就是说,自然图像一般是灰度图片,而灰度图片中通常不会出现一个像素(如P0)的像素值为0,而该像素的相邻像素(如P1或P8)的像素值为255的情况,此外,多媒体数据中的各个像素在存储器100中是按照矩阵形式存储的,且多媒体数据的读写通常是逐行进行的,因此,所述控制器202控制所述存储器100对多媒体数据中的像素进行分组时,所述控制器202具体可以用于控制存储器100按行,或列,或矩阵的方式对多媒体数据进行分组访问,得到所述M组分组数据,使其中任一分组数据中的像素的数值局限在一个小于[0,255]的取值范围内。示例性的,参考图3,如图中所示的分组数据1(包括像素P0~P7),所述控制器202可以控制存储器100将其存储的多媒体数据的每一行像素分别作为一个分组数据;或者,如图中所示的分组数据2(包括像素P32,P40,P48,P56),存储器100可以将多媒体数据的每一列像素作为一个分组数据;再或者,如图中所示的分组数据3(包括4X4的方块中的16个像素),存储器100还可以将多媒体数据中每个矩阵中的像素作为一个分组数据。由于自然图像在水平方向或垂直方向都具有一定的连续性,因此,图3所示的各个分组数据在像素值上都保持着良好的局部性,从而使得直方图统计电路200在对该自然图像进行直方图统计时,可以只考虑与当前统计的分组数据相匹配的计数器组,而不用遍历所有的计数器,也就是跳过很多无效的计数器组的计算,因此,在相同时间内,直方图统计电路200能进行的有效计算更多,计算性能得以显著提高。应当知道,存储器100按行或列或矩阵的方式对多媒体数据进行分组时,实际是以行或列或矩阵的方式对存储器100的存储阵列中的多媒体数据进行分组访问。

在本发明的一种实施方式中,解析电路203可以通过对所述第i分组数据的各个像素的值进行解析,确定第i分组数据的各个像素所处的第一取值范围,并根据所述第一取值范围确定与所述第i分组数据相匹配的X组计数器。

具体地,解析电路203可以对所述第i分组数据的各个像素的值进行解析,以获取所述第i分组数据中的最大像素值以及最小像素值,并根据所述最大像素值以及所述最小像素值确定所述第一取值范围。示例性的,若解析电路203通过解析,确定第i分组数据中的最大像素值为55,最小像素值为5,即解析电路203可以确定第i分组数据的像素的第一取值范围为[5,55]。这里以计数器缓存201存储有256个计数器,且256个计数器被均分为8组为例,相应的,解析电路203根据第一取值范围[5,55],可以确定与第i分组数据相匹配的是计数器组0(C0~C31)和计数器组1(C32~C63)。

示例性的,若第i分组数据的第一取值范围为[100,200],则解析电路203可以确定与第i分组数据相匹配的是计数器组3(C96~C127),计数器组4(C128~C159),计数器组5(C160~C191),以及计数器组6(C192~C223),其原因在于,像素值100对应的计数器C100位于计数器组3(C96~C127)内,而像素值200对应的计数器C200位于计数器组6(C192~C223)内,由于其余像素的像素值介于100到200之间,则相应的计数器可能位于计数器组3(C96~C127),计数器组4(C128~C159),计数器组5(C160~C191),或计数器组6(C192~C223)内。通过这种方式,可以较为便捷地确定于第i分组数据相对应的X组计数器。但是,应当看到,这里的X组计数器是连续的,而第i分组数据中可能并没有一个像素,能够与X组计数器中的某一组计数器相匹配,示例性的,仍然假设第i分组数据的第一取值范围为[100,200],但是,第i分组数据中没有一个像素的值落在[160,191]这个取值范围内,也就是说,第i分组数据与计数器组5(C160~C191)并不匹配,在对第i分组数据进行直方图统计时,针对计数器组5(C160~C191)的计算可以认为是无效的。

在本发明的另一种实施方式中,由于像素值的取值范围为[0,255],因此任一像素值可以用8位二进制数(比特)表示,则解析电路203还可以根据第i分组数据中的各个像素的数值的高位比特,确定与第i分组数据相匹配的X组计数器。示例性的,在计数器缓存201存储有256个计数器,且256个计数器被均分为8组的情形下,解析电路203可以利用第i分组数据中的各个像素的高三位比特,确定与所述第i分组数据相匹配的X组计数器。假设第i分组数据包括两个像素,它们的像素值分别为:30(二进制表示为00011110)和50(二进制表示为00110010),根据256个计数器的分组情况,可以知道像素值30对应的计数器C30位于计数器组0(C0~C31)中,像素值50对应的计数器C50位于计数器组1(C32~C63)中;而在本实施方式中,解析电路203可以通过解析两个像素值的高三位比特(000和001),确定与第i分组数据相对应的是计数器组0(C0~C31)以及计数器组1(C32~C63),其原因在于,十进制数与二进制数之间存在如下对应关系,十进制的取值范围[0,31]用二进制数表示为[00000000,00011111],十进制的取值范围[32,63]用二进制数表示为[00100000,00111111],十进制的取值范围[64,95]用二进制数表示为[01000000,01011111],以此类推,而高三位比特的刚好与计数器组的编号一一对应,比如000对应计数器组0,001对应计数器组1,010对应计数器组2,等等,因此,解析电路203根据8位二进制数的高三位比特,就可以得出该8位二进制数对应的计数器在哪一组计数器中。可以看到,在这种实施方式中,X组计数器中的任意一组计数器,都能与第i分组数据中的至少一个像素相匹配,相对前述根据第i分组数据的最大像素值和最小像素值确定X组计数器的方案,本实施方式中的方案能够进一步减少无效运算,提高直方图统计电路200的计算效率。

再例如,在计数器缓存201存储有256个计数器,且256个计数器被均分为16组的情形下,其中,计数器组0为(C0~C15),计数器组1为(C16~C31),计数器组2为(C32~C47),以此类推;若第i分组数据中包括的像素的像素值分别为20(二进制表示为00010100),40(二进制表示为00101000),80(二进制表示为01010000);则三个像素的高四位比特分别为:0001(10进制数为1),0010(十进制数为2),0101(十进制数为5),则解析电路203根据这些高四位比特,可知与第i分组数据相匹配的分别是计数器组1(C16~C31),计数器组2(C32~C47),以及计数器组5(C80~C95)。

综上,可以看出,当Y=2K时,即256个计数器分为2K组,解析电路203可以根据第i分组数据中的各个像素的高K位比特,确定与第i分组数据相匹配的X组计数器,K为正整数且1≤K≤8。比如,当256个计数器分为16(24)组时,则可以根据高4位比特与第i分组数据相匹配的X组计数器;当256个计数器分为8(23)组时,则可以根据高3位比特与第i分组数据相匹配的X组计数器。

进一步地,解析电路203还可以用于生成指示信息,并将所述指示信息发送给所述控制器202,以指示由所述解析电路203确定的所述X组计数器。

示例性的,当Y=2K时,解析电路203可以将第i分组数据中的各个像素的高K位比特发送给所述控制器202,所述控制器202根据高K位比特可以获知由所述解析电路203确定的所述X组计数器。

本发明实施例中,进一步地,当控制器202控制所述匹配译码电路204在X个时钟周期内,将所述第i分组数据分别与所述X组计数器进行匹配之前,控制器202还可以根据由所述解析电路203确定的所述X组计数器设置相应的X个时钟周期。示例性的,若解析电路203通过前述实施方式,确定与第i分组数据相匹配的3组(X=3)计数器分别为:计数器组1(C16~C31),计数器组2(C32~C47),以及计数器组5(C80~C95),则控制器202可以相应的设置3个时钟周期,并在第1时钟周期,控制所述匹配译码电路204对3组计数器中的第1组计数器(即计数器组1(C16~C31))进行匹配;在第2时钟周期,控制所述匹配译码电路204对3组计数器中的第2组计数器(即计数器组2(C32~C47))进行匹配,以及在第3时钟周期,控制所述匹配译码电路204对3组计数器中的第3组计数器(即计数器组5(C80~C95))进行匹配。相应的,若解析电路203确定与第i分组数据相匹配的是4组(X=4)计数器,则控制器202可以相应的设置4个时钟周期,并在4个时钟周期内,控制所述匹配译码电路204将所述第i分组数据逐一与4组计数器进行匹配。

本发明实施例中,所述匹配译码电路204具体用于:在所述X个时钟周期中的第j时钟周期,将所述第i分组数据中的各个像素与所述X组计数器中的第j组计数器进行匹配,若所述第i分组数据中的任一像素,与所述第j组计数器中的第一计数器相匹配,则指示计数值更新电路205更新所述第一计数器的计数值。

进一步地,针对前述根据第i分组数据的最大像素值和最小像素值确定X组计数器的方案,由于所确定的X组计数器中可能存在一组或多组计数器冗余(即不能与第i分组数据中的任一像素相匹配),则所述匹配译码电路204还用于:若所述第i分组数据中的各个像素,与所述第j组计数器中的任一计数器均不匹配,则指示计数值更新电路205维持所述第j组计数器的当前计数值不变。

示例性的,假设第i分组数据中的各个像素的像素值分别为(3,5,5,37),且计数器缓存201中的256个计数器分为8组,则根据前述实施方式,可知与该分组数据(3,5,5,37)相匹配的X组计数器分别为:计数器组0(C0~C31),和计数器组1(C32~C63),这里可以把计数器组0(C0~C31)作为2组计数器中的第1组计数器,把计数器组1(C32~C63)作为2组计数器中的第2组计数器;相应的,匹配译码电路204在第1时钟周期,将分组数据(3,5,5,37)与计数器组0(C0~C31)进行匹配,由于像素值(3,5,5)位于取值范围[0,31]中,可知计数器组0(C0~C31)(即第1组计数器)中与这3个像素值相匹配的计数器分别是计数器C3和计数器C5,则所述匹配译码电路204可以指示计数值更新电路205在计数器C3当前的计数值的基础上加1,以及在计数器C5当前的计数值的基础上加2,其余计数器则维持当前的计数值不变,从而实现对计数器组0(C0~C31)的计数值更新,然后,在第2时钟周期,将分组数据(3,5,5,37)与计数器组1(C32~C63)(即第2组计数器)进行匹配,由于只有像素值37落在取值范围[32,63]中,因此可知在计数器组1(C32~C63),与该分组数据(3,5,5,37)相匹配的是计数器C37,则所述匹配译码电路204可以指示计数值更新电路205在计数器C37当前的计数值的基础上加1。

本发明实施例中,参见图2,所述计数值更新电路205,具体可以包括至少一个加法器,所述至少一个加法器的数量与所述第j计数器中的计数器的数量相等且一一对应,其中任一加法器用于:从所述计数器缓存201中读取与所述任一加法器对应的第二计数器的当前计数值(用c1表示),若所述匹配译码电路204指示所述第i分组数据中的任一像素与所述第二计数器相匹配,则所述任一加法器在所述第二计数器的当前计数值的基础上加1,作为所述第一计数器的更新计数值(用c1′表示),并将所述第二计数器的更新计数值c1′回写到计数器缓存201的所述第二计数器中,替代所述第二计数器的当前计数值c1,以作为所述第二计数器在下一时钟周期的当前计数值;若所述匹配译码电路204指示所述第i分组数据中的任一像素与所述第二计数器均不匹配,则所述任一加法器维持所述第二计数器的当前计数值不变。

本发明实施例中,进一步地,如图4所示,所述计数器缓存201中存储的任一计数器2011的当前计数值,可以按照高位(CNT_HIGH)、低位(CNT_LOW),分两部分进行存储,并且,低位部分包括低位CNT_LOW以及一个溢出位(OV),也就是在低位(CNT_LOW)之前还设置了一个溢出位(OV),若低位CNT_LOW溢出,则溢出位(OV)为1,反之,若低位CNT_LOW没有溢出,则溢出位(OV)为0,其中,高位(CNT_HIGH)和低位(CNT_LOW)的位宽分别满足如下公式:

其中,WCNT表示当前计数值的总位宽,Wdata表示多媒体数据的像素数量的位宽,WCNT_LOW表示低位CNT_LOW的位宽,WCNT_HIGH表示高位CNT_HIGH的位宽,Wgroup表示对多媒体数据进行分组后得到M组分组数据中的任一分组数据的像素数量的位宽。

示例性的,若多媒体数据包括1024(210)个像素,则Wdata为10,为了保证任一计数器2011在统计时不会溢出,通常,WCNT比Wdata大1位即可,即WCNT为11,相应的,若1024个像素被分为16组,每组64(26)个像素,即Wgroup为6,则WCNT_LOW可以为6或者大于6,相应的,WCNT_HIGH可以为5,或者小于5。

此外,需要说明的是,溢出是指数值超出了计数器当前的计数范围,比如,二进制的当前计数值的位宽为4位,其最大值1111对应的十进制数值为15,若是需要在15的基础上再加1,则超出了计数器的计数范围,导致溢出。

相应的,将用来更新任一计数器2011的当前计数值的加法器2051也拆分成2个小位宽的第一加法器20511和第二加法器20512,其中,第一加法器20511用于计算当前计数值的低位CNT_LOW,第二加法器20512用于计算当前计数值的高位CNT_HIGH,需要说明的是,由于第一加法器20511和第二加法器20512不会同时使用,因此在具体实现方案中,可以通过时分复用的方式,复用同一个小位宽的加法器,也可以使用两个独立的加法器。

当匹配译码电路204指示第i分组数据中的一个像素与计数器2011相匹配时,具体计算过程可以如下:

所述第一加法器20511读取所述任一计数器的当前计数值的低位CNT_LOW并加1,并将更新后的低位CNT_LOW的数值回写到所述计数器缓存中的所述任一计数器2011的低位部分,替代原来的低位CNT_LOW的值;

控制器202检测溢出位(OV),若溢出位为1,则将计数器2011的当前计数值的高位CNT_HIGH读取到第二加法器20512中,由第二加法器20512加1,完成高位CNT_HIGH的更新,并将更新后的数值回写到计数器缓存中的所述任一计数器2011的高位部分,替代原来的高位CNT_HIGH。

也就是说,在第一计数器20511将读取的低位CNT_LOW与新的统计值相加后,控制器202控制计数器缓存201对所述任一计数器的当前计数值的低位CNT_LOW和溢出位OV进行更新,若更新后的低位CNT_LOW的计数值没有溢出,则溢出位OV设置为0,若更新后的低位CNT_LOW的计数值溢出,则溢出位OV更新为1。在溢出位为1的时候,则控制器202进一步控制计数器缓存201将当前计数值的高位CNT_HIGH读出,由第二加法器20512加1,并将更新后的高位CNT_HIGH的值回写到计数器缓存201中的所述任一计数器2011的高位部分,替代原来的高位CNT_HIGH的值。

本实施例中,通过将计数器2011的当前计数值分为高位CNT_HIGH和低位CNT_LOW两部分分别进行更新,可以降低计算强度,从而节省不必要的访存功耗和加法器计算功耗。

如图5所示,本发明的另一个实施例还提供了一种多媒体处理系统20,包括:

存储器21,用于存储多媒体数据;

直方图统计电路22,用于从所述存储器21中获取所述多媒体数据,并对所述多媒体数据进行直方图统计,生成统计结果,其中,直方图统计电路22的结构可以参考图2和图4中直方图统计电路200的结构,其功能也可以参考前述实施例中对于直方图统计电路200的描述,这里不再赘述;需要说明的是,直方图统计电路22完成对多媒体数据的所有分组数据的直方图统计之后,其统计结果即计数器缓存201所存储的Y组计数器最终的更新计数值,相应的,处理器23可以从计数器缓存201读取Y组计数器最终的更新计数值。

处理器23,用于根据所述统计结果,并基于直方图应用算法对所述多媒体数据进行处理,其中,直方图应用算法可以是利用直方图参与图像处理的各种算法,例如:1、直方图均衡算法,应用于图像处理领域,该算法可以通过调节图像的直方图,使得图片的对比度更加明显,并改善照片曝光不佳的问题;2、重要的图像特征方向梯度直方图(Histogram of Oriented Gradients,HOG)算法,应用于计算机视觉领域,该算法被广泛应用于目标检测和目标识别,利用该算法对多媒体数据进行处理后,可以实现行人检测,人脸识别,车牌检测等;3、借助图像直方图来检测特定物体的算法,应用于计算机视觉领域,具体可以包括:均值平移(meanshift)算法,连续自适应的均值平移(Continuously Adaptive Mean SHIFT,CamShift)算法等,该算法可以用于检测人脸位置等。

应当知道,直方图应用算法相关的指令也可以存储在存储器21中,处理器23通过读取存储器21中存储的指令,执行相应的直方图应用算法。

本发明实施例提供的多媒体处理系统20中,由于直方图统计电路22可以并行完成多个像素的计算,同时,通过对多媒体数据进行合理的分组,减少了一些无效运算,从而使得多媒体处理系统20的计算效率,得到大幅提高,可以满足人脸识别等场景对于实时性的要求。

本发明实施例中,多媒体处理系统20可以是移动终端,比如手机,平板电脑,也可以是车载设备等等。此外,处理器23为多媒体处理器,例如:多媒体矢量处理器。

进一步地,多媒体处理系统20还可以包括获取装置24,用于获取多媒体数据,并将所述多媒体数据写入所述存储器21。获取装置24可以包括:图像传感器(image sensor),摄像头(camera)或者图形芯片等。

进一步地,处理器23和直方图统计电路22还可以集成在同一个集成电路(Integrated circuit,IC)中。

应当理解,此处所描述的具体实施例仅为本发明的普通实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1