CN109478242B - 用于产生方向梯度直方图的方法 - Google Patents
用于产生方向梯度直方图的方法 Download PDFInfo
- Publication number
- CN109478242B CN109478242B CN201780044704.0A CN201780044704A CN109478242B CN 109478242 B CN109478242 B CN 109478242B CN 201780044704 A CN201780044704 A CN 201780044704A CN 109478242 B CN109478242 B CN 109478242B
- Authority
- CN
- China
- Prior art keywords
- gradient
- sector
- pixel
- sectors
- hog
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 34
- 239000000872 buffer Substances 0.000 description 23
- 238000004364 calculation method Methods 0.000 description 11
- 238000004422 calculation algorithm Methods 0.000 description 6
- 239000013598 vector Substances 0.000 description 6
- 238000013507 mapping Methods 0.000 description 5
- 238000001514 detection method Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 101001056128 Homo sapiens Mannose-binding protein C Proteins 0.000 description 2
- 102100026553 Mannose-binding protein C Human genes 0.000 description 2
- XCWPUUGSGHNIDZ-UHFFFAOYSA-N Oxypertine Chemical compound C1=2C=C(OC)C(OC)=CC=2NC(C)=C1CCN(CC1)CCN1C1=CC=CC=C1 XCWPUUGSGHNIDZ-UHFFFAOYSA-N 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000003909 pattern recognition Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/94—Hardware or software architectures specially adapted for image or video understanding
- G06V10/955—Hardware or software architectures specially adapted for image or video understanding using specific electronic processors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/40—Extraction of image or video features
- G06V10/50—Extraction of image or video features by performing operations within image blocks; by using histograms, e.g. histogram of oriented gradients [HoG]; by summing image-intensity values; Projection analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Biology (AREA)
- Evolutionary Computation (AREA)
- General Engineering & Computer Science (AREA)
- Image Processing (AREA)
- Image Analysis (AREA)
Abstract
本发明提供了一种用于为图像的至少一部分产生方向梯度直方图(HOG)的方法,包括:将所述图像部分分成单元,每个单元包括多个图像像素;然后针对单元的每个图像像素,基于沿着分别包括所述像素的所述图像的至少一行和所述图像的列的像素值差异,获得水平梯度分量gx和垂直梯度分量gy;并且将梯度分配给多个扇区中的一者,其中n是扇区索引,每个扇区延伸通过一系列方位角,并且所述扇区的至少一些根据以下不等式从相邻扇区划分:b*16<a*(n+1),其中0≤n≤5,b=gy并且a=gx;以及b*16<a*(13‑n),其中7≤n≤12,a=gx+gy并且b=gx‑gy;至少一个扇区与区间相关联;并且累加与区间相关联的单元的像素梯度中的每个实例以为所述单元提供HOG。
Description
技术领域
本发明涉及一种用于产生方向梯度直方图的方法。
背景技术
Navneet Dalal和Bill Triggs,“Histograms of Oriented Gradients forHuman Detection”,IEEE Computer Society Conference on Computer Vision andPattern Recognition,第1卷,第886-893页,2005年6月25-26日;以及Navneet Dalal于2006年7月17日在L'institut National Polytechnique De Grenoble上发表的博士论文“Finding People in Images and Videos”PhD Thesis,其公开了用于图像处理(包括用于对象检测和/或分类)的方向梯度直方图(HOG)描述符。
图1示出了用于计算图像的局部部分的HOG的简单示例,在此称为单元。
在图1的示例中,采用2×2像素单元。每个像素值与3×1内核结合以确定单元像素的梯度的相应水平分量;并且使用1×3内核确定单元像素的梯度的垂直分量。(因此应当理解,需要来自2×2单元周围的一个像素的边界的像素值,以便计算单元的每个像素的梯度。)在图1的示例中,边界拐角的像素值4、0、7和4仅作为信息示出,因为这些对于图1的示例性内核不是必需的。然而,应当理解,可以采用其他内核,这些内核可能需要这些像素或其他像素。
水平和垂直梯度分量被组合以提供单元的每个像素的矢量梯度。使用梯度,可以计算单元的每个像素梯度的幅度和方向。在图1的示例中,梯度被映射到8个区间中的一个,然后可以通过对梯度方向的出现计数来确定HOG。在该示例中,3个矢量在区间2中,1个在区间3中,指示图像的该部分的梯度大致在区间2的方向上。(未显示与样本输入图像中显示的值对齐。)然后可以使用每个像素梯度的幅度值来确定该方向上的梯度的范围。
正是HOG和幅度值的这种组合在本文中称为单元的HOG描述符。
在图1中,使用的像素值包括亮度值,例如,YCC格式图像的Y分量。在其他具体实施中,还可以基于该图像格式或其他图像格式计算颜色梯度。
从图1的示例可以看出,基于HOG描述符的简单应用将需要使用:
·乘法器,用于计算梯度的幅度;并且
·反正切函数,用于计算梯度方向。
显然,对这些计算中的每一者的优化将允许用于提供HOG描述符的更合理的实施,并且特别地,这将允许在具有有限处理能力的设备诸如手持式相机或智能电话中提供HOG描述符的有效硬件实施。
Ryoji Kadota等人,“Hardware Architecture for HOG Feature Extraction”,Proceedings of 5th International Conference on Intelligent Information Hidingand Multimedia Signal Processing,2009,第1330-1333页公开了几种简化HOG描述符计算的方法,诸如将除法、平方根和反正切转换为更简单的操作。
Tam Phuong Cao等人,“Implementation of real-time pedestrian detectionon FPGA”Image and Vision Computing New Zealand,2008,23rd InternationalConference,第1-6页公开了将梯度方向划分为非均匀角度区间。
2016年5月28日公布的WO 2016/083002(FN-398-PCT)公开了通过将输入图像的一部分划分为多个单元来产生用于图像的至少一部分的HOG,其中每个单元包括多个图像像素。对于每个单元,累积梯度方向的直方图通过下式确定:对于单元的每个图像像素,计算梯度矢量的水平分量gx和垂直分量gy;执行以下测试:(i)gx>0;(ii)gy>0;(iii)|gx|>|gy|;(iv)|gx|>2|gy|或|gy|>2|gx|;以及(v)|gx|>4|gy|或|gy|>4|gx|,其中在iv)和v)中,通过位移操作计算2lgxl、2lgyl、4lgxl和4lgyl的值;并且将结果组合成二进制掩码。将掩模与预先确定的掩码值比较以确定梯度方向的包括梯度矢量的扇区,其中预先确定的掩码值与梯度方向的唯一扇区相关联,该关联使得关联扇区中的梯度是那些具有上述测试结果的关联掩码的梯度。根据扇区和区间之间的预先确定的关系,一组直方图区间与扇区相关联。梯度幅度或其近似值被累加在该组直方图区间的所有区间中。
发明内容
根据本发明,提供了用于产生根据权利要求1和6中任一项所述的方向梯度直方图的方法。
在另外的方面,提供了图像处理系统,其包括用于实施权利要求1和6的方法的逻辑。
本发明的实施方案适用于HOG描述符的硬件中的有效提供。本发明不需要乘法器和反正切函数来实施。其只需要加法器和比较器,从而实施快速硬件实施,占用空间小。
本发明的实施方案还提供了将HOG扇区组合成区间的非常灵活的方式。
附图说明
现在将参考附图以举例的方式来描述本发明的各种实施方案,在附图中:
图1示出了用于单元的HOG的传统计算;
图2示出了如WO 2016/083002中所公开的分成6个不等扇区的象限;
图3示出了根据WO 2016/083002中公开的用于确定梯度所处的24个扇区中的哪个扇区的技术;
图4示出了根据图2和3分割的扇区布置,并且组合成8个基本区间和基本间区间;
图5示出了根据图2和图3分割的扇区的另一布置的一个象限,并且组合成12个几乎相等的区间;
图6示出了用于将扇区可配置地组合成区间的示例性逻辑,如WO 2016/083002中所公开的;
图7示出了WO 2016/083002中公开的高级HOG图像处理(IP)流水线;
图8示出了图7的HOG IP的硬件实施的内部架构,其具有如WO 2016/083002中公开的四个行缓冲器的块;
图9示出了图7的HOG IP的硬件实施的内部架构,其具有如WO 2016/083002中公开的两个行缓冲器的块;
图10示出了用于连续确定图像条带中的单元的相应HOG的窗口,如WO 2016/083002中所公开的;
图11示出了根据本发明实施方案的分成13个不等扇区的半象限;
图12示出了根据另一个实施方案的用于将整圆的梯度映射到半象限的方法;
图13示出了用于将扇区值从半象限映射回整圆的扇区值的方法;
图14示出了根据本发明又一个实施方案的分成104个不等扇区的整圆;
图15示出了根据本发明另一个实施方案的如何确定位于两个扇区之间的像素梯度矢量的权重。并且
图16示出了如何将根据图15确定的像素梯度矢量的权重映射到边界区间。
具体实施方式
理论上,为了找到像素的梯度方向,使用反正切函数:
方向=arctan(gx/gy)
其中gx是水平分量,并且gy是例如使用关于图1所示的内核计算的梯度的垂直分量。
然而,如从图1中可以理解的,不需要梯度的精确方向角;相反,通常仅需要将像素的梯度分配给覆盖一系列角度的HOG方向区间。
本发明的实施方案提供了一种简单的计算方法,其中多个扇区中的一者适合于梯度方向。虽然可以将各个扇区用作HOG区间,但将扇区组合到方向区间中可能是有用的,这将在下面更详细地解释。
参考图2,如WO 2016/083002中所公开的,四个笛卡尔象限中的每一个被分成6个扇区-示出了其中一个扇区。由图2的辐射线指示的扇区之间的边界由以下条件限定:
·a)gx=0;b)gx=4*gy;c)gx=2*gy;d)gx=gy;e)gy=2*gx;f)gy=4*gx;g)gy=0
如将看到的,所得到的扇区不具有相同的角尺寸。
为了确定梯度位于哪个扇区中,而不是计算每个梯度的角度,可以执行有限数量的比较,包括:
1)gx>0;
2)gy>0;
3)|gx|>|gy|;
4)|gx|>2|gy|或|gy|>2|gx|;
5)|gx|>4|gy|或|gy|>4|gx|
可以将这5个测试组合成掩码,以确定给定梯度所在的24个扇区中的哪个扇区。因此,如果gx>0,则掩码的第一位为“1”;如果gy>0,则第二位为“1”,依此类推。
图3示出了每个扇区0至23的掩码值。
因此,例如,在gx>0的情况下,梯度将位于扇区5至18之一中;并且如果gy>0,这样的梯度只能位于扇区5至0之一中。在这种情况下,如果|gx|>|gy|,,则可能的扇区仅限于扇区2至0;依此类推直至确定具体扇区。
从上面可以看出,可以采用简单的门逻辑时钟通过给定像素的gx和gy值,并且接收像素的梯度扇区值。
还应注意,当使用gx和gy的幂2来确定扇区时,可以使用gx和gy的位移版本在硬件中执行上面列出的测试4)和5),而不需要乘法(或除法)。
可以理解,通过添加测试可以提供更高级别的粒度:
|Gx|>8|gy|或|gy|>8|gx|,但并不认为这将显著改善大多数应用的结果。
同样,例如,如果不使用测试5,则会减少粒度,因为不可能区分扇区0,1;4,5;6,7;10,11;12,13;16,17;18,19;以及图3的示例中的22,23。但是,这可以为某些应用提供可接受的结果。
因此,除了x,y轴之外或作为其替代,扇区之间的边界由对应于gx=2n.gy的线限定。n=0的情况是在诸如上面引用的经典Dalal等的实现中采用的边界,而基于|n|≥1的值的边界的组合提供了组合的有效硬件实现,如下面更详细描述的。
使用上述方法的实现可以允许扇区的任何组合形成区间,从而:
·区间可对应于0至23的任意数量的扇区;
·区间中的扇区不必相邻;
·不是所有的扇区都必须属于某个区间;并且
·不同区间可包含相同的扇区。
图4和图5示出了示例性的区间配置。在图4,已结合了扇区4至7以指示N(orth)梯度;已结合了扇区8至9以指示NW梯度;已结合了扇区10至13以指示W梯度等。图5表明扇区可以结合成表示不同语义诸如水平、垂直、小斜率或陡峭斜率的区间。
图6示出了硬件实现,其中测试1)至5)与可配置的扇区组合一起实现到多达16个区间中的任何一个或多个中。(未显示测试4)和5)的测试和移位逻辑的比较逻辑。)
因此,如果所有五个测试都是正,则sect_0的5输入“与”门输出将为正(图3中的11111);而如果测试1)至4)为正,测试5)为负(图3中为11110),则sect_1的5输入“与”门输出为正,依此类推。
每个区间用相应的24位扇区选择寄存器定义,该寄存器包括定义一个或多个扇区的掩码,这些扇区组合以提供给定的区间。对于bin_0_sel的扇区选择寄存器,每个扇区选择寄存器位与对应的5输入“与”门的输出进行“与”运算,为一组“与”门B0…B23(仅示出其中的三个)中的扇区提供输出。“与”门B0…B23的输出在公共“或”门中组合,使得如果梯度落在根据sector_sel_reg_0配置的bin_0_sel的任何配置扇区中,“或”门输出将指示像素的梯度落入该区间中。针对从bin_0_sel到bin_15_sel的每个区间复制门B0…B23,并且将其连接到5输入“与”门的输出以及从sector_sel_reg_1到sector_sel_reg_15的相应扇区选择寄存器。
因此,对于任何给定像素,可以在与gx和gy呈现给逻辑相同的时钟周期中产生16位区间掩码bin_xx_sel,其中xx=0到15。
同时,可以使用毕达哥拉斯定理简单地计算梯度的幅度:
mag=√gx2+gy2
但是,精确的幅度值通常对于HOG计算和使用不是必需的。因此,为了使硬件实现合理化,可以通过对像素的梯度幅度使用以下近似来避免乘法器(和除数):
mag=|gx|+|gy|-min(|gx|,|gy|)/2
因此,对于gx和gy的任何时钟控制值,可以在相同的时钟周期中产生像素的幅度。
现在参考图7,在一个硬件实现中,HOG图像处理(IP)流水线提供两个主要接口:
·输入图像接口,每个时钟周期以光栅顺序接收一个图像像素;并且
·输出接口,用于在每个时钟周期为最多一个单元提供HOG描述符,具体取决于单元之间配置的步长。
这种模块的典型时钟频率约为400MHz。
可以为输入和输出接口提供协议包装器,以允许HOG IP块连接到可能需要用于图像或图像的任何矩形部分的HOG描述符的任何类型的接口和系统。
同样,HOG IP流水线接口可以允许指定诸如步长大小、单元尺寸等特征。
通常,图像处理流水线将图像或图像部分分成动态的单元。通常,输入图像将被分成矩形单元和针对每个单元计算的HOG描述符。
该流水线可以使用任何单元尺寸。已经发现,4×4单元是一种很好的选择,并且这种单元的HOG可以容易地组合以为较大的单元提供HOG,这将在后面解释。虽然小于4像素宽或高的单元尺寸可能被认为太小而无法提供有用的信息,但是基于比4×4更大的基本单元尺寸的硬件会增加门的数量和所需的行缓冲器的数量。在为相邻单个单元提供的HOG描述符被组合以为图像内的较大单元提供HOG值的情况下,如下所述,可以针对较大单元确定HOG,但是不增加门数。还应理解,还可以配置从单元到单元的步骤。例如,水平和垂直方向上的步长1意味着每个时钟周期(除了移动到新行时)在HOG IP输出接口处产生新的HOG。
还可以安排硬件以支持单元之间的独立水平和垂直步长。硬件可以附加地或另选地被布置成使得HOG描述符被提供用于图像内的重叠单元(如步长大小为1或2的4×4单元尺寸的情况)。
我们要注意的是,大于单元尺寸的步长大小通常是没有用的。而且,通常不需要步长大小3,并且支持这样的步长大小也将导致更复杂的硬件实现。
在任何情况下,图8和图9示出了图7的HOG IP的两个示例性硬件实现。两种实现都使用相同的逻辑子块,但行缓冲器的排列方式不同。图8的实现需要较少的内存用于行缓冲,但需要更多的逻辑门(图8中的25Kgates区别于图9中的20KGates)。在图8中,所有行缓冲器可以被分组为RAM的连续区域,而在图9的实现中,使用两组独立的行缓冲器。
转到图8,在这种情况下,包括来自5个先前行LB0…LB5的像素值的输入行缓冲器一次一个像素地顺序读入存储器。回想图1所示的内核需要1的边界像素,一旦前5行数据被读入存储器,正在读取第6行,可以使用图1的简单[-1,0,1]水平和垂直微分内核计算对应于行2-5的图像的4×4单元的第一条带的HOG描述符。
当读取第6行中的每个像素P时,可以为图像的先前4行中的对应像素P1…P4提供水平和垂直梯度分量gx、gy,即从缓冲器内的像素P移位n*pixel_columns的行,其中n=1…4。
使用图7的电路和上面解释的幅度计算,基于像素P1…P4的gx、gy的这些值的(16位)区间掩码和幅度立即可用,并且这被移位到5x4加窗缓冲器中,该加窗缓冲器维持图像的5列的值。
随着行的每个像素通过HOG IP输入接口时钟控制,一组4个区间掩码和幅度被移位到5x4加窗缓冲器的列中,其中先前的值被移出。
Cell HOG计算块包括计数器电路,其计算每个像素的每个区间的计数,所述每个像素包括从5×4加窗缓冲区读取的4×4组单元。这可以通过简单地添加使用图7的电路生成的16个bin_xx_sel寄存器中的每一个的相应位来完成。
因此,对于每个时钟周期,Cell HOG计算块为每个配置的bin_0到bin_15产生16个计数的阵列。
参考图10,使用5×4加窗缓冲区的特别有用的方法是Cell HOG计算块从5×4加窗缓冲区的最旧列A中减去值,并且将5×4加窗缓冲区的最新列B的值添加到从5×4加窗缓冲区读取的4×4组单元的先前值以在每个时钟周期获得当前HOG。这允许Cell HOG计算块被硬接线到加窗缓冲器,并且在每个时钟周期提供HOG而不移位或切换。
再次参考图8,在每个时钟周期上向抽取块提供包括16个区间中的每一者的计数的阵列,其中所述区间包括HOG。
根据水平和垂直步长,抽取块减少了产生的HOG的频率。因此,例如水平步长大小为4时,HOG IP输出接口将仅产生新的HOG或每隔四个时钟周期更新HOG。
还应理解,对于水平和垂直步长大小4,一旦完成图像的给定条带,将需要读取3个新的图像行,然后在下一行的第5个像素上,下一个HOG变得可用。
在图9的情况下,输入行缓冲器仅包括来自2个先前行LB0和LB1的像素值,因此当读取像素P时,只能确定来自前一行的对应像素P1的水平和垂直梯度分量。
在这种情况下,像素P1的每个新计算的幅度和区间掩码值一次一个(而不是图8中的每次4个)地移位到5×4加窗缓冲器中。当图像的先前3行的幅度和区间掩码值移出该缓冲器,它们被存储在第二组幅度和区间行缓冲器MBL0…MBL2中,以便随着过程逐行前进通过图像,来自先前3行的幅度和区间掩码值总是可用于计算4×4单元的HOG。(每个幅度和区间行缓冲器MBL0…MBL2所需的存储器大于行缓冲器LB0…LB1(并且实际上是LB2…L4)所需的存储器,因为对于每个像素,需要存储梯度幅度和区间掩码两者。)尽管如此,对于5×4加窗缓冲器中的给定一组值,图9的过程和电路依照图8所示。
为简单起见,图8或图9均未说明5×4加窗缓冲区中可用幅度值的处理-当读取单元的HOG值以提供单元的一组完整的HOG描述符时,可以根据需要通过HOG IP输出接口读取这些信息。
应当理解,使用上述实施方式,可以简单地添加相邻4×4单元的对应区间的HOG值,以为图像内的较大单元提供HOG值。因此,一次通过图像,应用可以根据需要执行自顶向下或自底向上的梯度分析。
许多变型是可能的。例如,对应于所有24个扇区的区间的幅度值可用于给出关于单元中的梯度有多陡峭的一般概念,并且可以用于例如缩放。
现在参照图11,在本发明的一个实施方案中,根据不等式b*16<a*(n+1)划分扇区,其中n是扇区索引,而不是沿着线gx=2n.gy划分扇区。对于n=0...5、b=gy和a=gx,这产生一组具有如下所示的边界的扇区:
扇区数目(n) | 扇区边界(度) | 扇区尺寸(度) |
0 | 3.58 | 3.58 |
1 | 7.13 | 3.55 |
2 | 10.62 | 3.49 |
3 | 14.04 | 3.42 |
4 | 17.35 | 3.32 |
5 | 20.56 | 3.20 |
可以看出,随着n增加,每个扇区的尺寸从3.58度减小到3.20度-然而这在扇区尺寸的约10%变化以内。如果将n扩展到覆盖半象限,则需要16个扇区,最后一个具有仅1.85°的范围,这将涉及扇区尺寸的过大变化。
在该实施方案中,通过将轴线旋转45°,我们可以测试扇区n=12直到n=7的梯度。旋转轴线45°可如下进行:
·a=gx+gy;
·b=gx-gy;
由此产生的扇区边界如下:
扇区数目(n) | 扇区边界(度) | 扇区尺寸(度) |
12 | 41.42 | 3.58 |
11 | 37.87 | 3.55 |
10 | 34.38 | 3.49 |
9 | 30.96 | 3.42 |
8 | 27.65 | 3.32 |
7 | 24.44 | 3.20 |
扇区6是扇区0…5和7…12之间的剩余空间,并且具有3.89°的范围-仍然在平均范围的10%之内。
用于确定梯度是否位于半象限的扇区0…12中的任何一个的算法如下:
int a=gx+gy;
int b=gx-gy;
if(gy*16<gx*1)sector=0;else
if(gy*16<gx*2)sector=1;else
…
if(gy*16<gx*6)sector=5;else
if(b*16<a*1)sector=12;else
if(b*16<a*2)sector=11;else
…
if(b*16<a*6)sector=7;else
sector=6;
如上所述,乘以16可以通过简单移位在硬件中执行,而乘以1到6可以通过简单移位和在某些情况下添加来执行-因此,上面的算法可以很容易地在硬件中实现,从而以类似于图6的测试的方式提供输出。需注意,对于n=4和n=9,采用与图2-6的实施方案中相同的边界,并且这些边界仅需要如图2-6中的移位和比较。
通过将所有半象限的计算减少到第一半象限(0°-45°)的计算,可以扩展上述方法以覆盖整个圆,如图12和13所示。
图12开始于针对像素确定是否gx<0,如果是,则其gx极性反转,并且置位像素的水平翻转使能位。在该测试之后,该方法测试是否gy<0,如果是,则其gy极性反转并且置位垂直翻转使能位。最后,如果gx<gy,则这些值互换并且置位翻转45°使能位。需注意,可以独立置位3个翻转位的每一者。该方法通过应用上述算法继续,以确定像素的处理gx、gy值位于哪个半象限扇区0…12中。需注意,在上面的半象限算法中,再次转换处理的gx、gy值以提供a、b的值。
圆的八个半象限分别包括13个扇区,并且图13示出了半象限扇区算法返回的0…12索引如何可以扩展以产生范围从0…103的索引。
因此,如果启用翻转45°使能位,则从25减去扇区值0…12以产生第一处理值。因此,第一处理值将在0…25的范围内。如果启用水平翻转位,则从51减去第一处理值以产生第二处理值,因此第二处理值可以在0…51的范围内。最后,如果启用垂直翻转位,则从103减去第二处理值以产生最终处理值,因此最终处理值可以在0…103的范围内。包含所有104个扇区的整圆表示如图14所示。
可以看出,上面的算法和图12和图13的方法可以通过简单的比较和开关在硬件中容易地实现,从而利用合理硬件和最小延迟将任何像素梯度映射到104个扇区中的任何一个扇区。
可以扩展图6的扇区到区间映射架构,以将104个扇区输出映射到任意数量的区间,以用于确定单元的HOG。然而,当采用104个扇区时,采用具有104个条目的查找表可以更简单,这些条目将每个扇区映射到多个区间中的一个。例如,扇区可以如下所示映射到16个HOG区间:
HOG区间 | 扇区 | 区间度 |
0 | 0..6 | 24.45 |
1 | 7..12 | 20.56 |
2 | 13..18 | 20.56 |
3 | 19..25 | 24.45 |
4 | 26..32 | 24.45 |
5 | 33..38 | 20.56 |
6 | 39..44 | 20.56 |
7 | 45..51 | 24.45 |
8 | 52..58 | 24.45 |
9 | 59..64 | 20.56 |
10 | 65..70 | 20.56 |
11 | 71..77 | 24.45 |
12 | 78..84 | 24.45 |
13 | 85..90 | 20.56 |
14 | 91..96 | 20.56 |
15 | 97..103 | 24.45 |
在另一个示例中,扇区如下所示映射到9个HOG区间:
HOG区间 | 扇区 | 区间度 |
0 | 0..11 | 41.43 |
1 | 12..23 | 41.46 |
2 | 24..34 | 38.1 |
3 | 35..45 | 38.49 |
4 | 46..57 | 41.12 |
5 | 58..69 | 41.81 |
6 | 70..80 | 38.27 |
7 | 81..92 | 41.52 |
8 | 93..103 | 37.88 |
在这些示例中的每一者中,区间尺寸的变化可以保持在平均值的10%以内。
在上述实施方案的另一个变型中,可以基于以下公式计算像素的梯度的幅度m(x,y):
应当理解,在如关于图11至图14所描述的实施方案的情况下,在范围小于4°的扇区内,幅度变化非常小。在构成0-45°的第一半象限的13个扇区中,我们可以计算和存储扇区的中角的测量,例如,扇区0为1.788°,扇区1为5.3506°等。对于在0°和45°之间的角度,的13个扇区值将在1和1.372之间。如果我们将它们乘以256,我们可以将整数结果存储在一个只包含256到351之间的整数的查找表中,如下所示:
现在可以通过下式计算幅度:
可以理解,这种计算只需要单次乘法和一些移位。
在上述实施方案中,无论像素的梯度位于扇区内何处或者扇区位于区间内何处,像素梯度对最终HOG的贡献都是相同的,即像素位于或不位于扇区/区间内。在一些应用中,如果像素的梯度的贡献在两个相邻的区间之间划分,则可以获得更好的结果。
在此类实施方案中,每个区间与特定角度相关联,而不是区间在一定角度范围内延伸。因此,对于图2的边界角,区间0至区间6可以分别与角度g)至a)相关联,其余象限的区间以此类推。对于上表的16HOG区间布置,区间0至区间15中的每一者将分别对应于角度0°、24.45°、45°、70.65°等。类似地,每个扇区与特定角度而不是角度范围相关联,因此在图11至图14的实施方案中,每个扇区将与104个离散角中的一个相关联。
在一个实施方案中,为了对跨越2个相邻区间的像素的梯度进行加权,我们需要考虑像素梯度相对于其所在扇区的角度的特定角位置。参考图15,例如,扇区i和扇区i+1分开gy*16/gx度。这里,区间之间扇区的中的像素梯度的扇区i的梯度权重W0和扇区i+1的权重W1通过下式定义:
其中a1和a2为梯度的扇区内角度。
因此,角度a1相对于a2越大,像素梯度越接近扇区i+1而不是扇区i,并且与扇区i相比,其对扇区i+1的加权越重。
对于至少在第一半象限中的小角度,通过将轴线旋转45°来执行22.5°和45°之间的角度计算,我们可以将近似为/>
由于扇区的边界分开常量gy*16/gx度,gy=y1+y2=gx/16,我们可以通过下式计算W1:
可以理解,对于每个像素梯度执行上述划分将是困难的。因此,在一个实施方案中,可在64和1024之间变化的的值存储在查找表(LUT)中。需注意,当gx(x,y)在0和255之间时,整数近似值/>在0和15之间变化,因此LUT仅需要存储16个值(Kw)以提供近似值。
然后,扇区i+1和扇区i之间的像素梯度的权重W1、W0计算如下:
因此,我们可以使用存储16个值和一个乘数的LUT计算插值的权重。显然,如果采用与图15中所示不同的扇区分隔,则LUT值和索引将相应地改变。
参考图16,示出了如何将权重从像素梯度映射到区间,其中所述像素梯度位于与区间k-1(以及区间k)相关联的扇区0到扇区n的多个区间中的任何一个中。可以使用下式计算像素梯度相对于其所在区间(在其之间)的权重:
/>
其中:
·n-区间之间的扇区的数量;
·i-像素梯度所在区间之间(下)扇区的索引;
·Wi-针对扇区i计算的区间的权重(W1);
·WBin-梯度相对于区间k-1得到的权重。区间k的权重将是1-WBin。
因此,位于两个区间之间的中间扇区之间的中间的像素梯度将其一半的权重贡献给一个边界区间,将其一半的权重贡献给另一个。像素梯度越接近一个边界区间,其对该边界区间产生更大的权重。
一旦确定,即可累加针对其每个边界区间确定的每个像素梯度的权重(WBin、1-WBin),以提供单元的HOG。
需注意,在利用诸如关于图12至图14所描述的方法实施上述加权技术的情况下,其中半象限被翻转到第一半象限中,则针对每个像素梯度(WBin、1-WBin)计算的权重需要相应地翻转。
可以看出,通过采用上述技术和近似,图11至图16中所示的上述实施方案可以用类似于图6至图9所示的复杂度的硬件来实现。
Claims (12)
1.一种用于为图像的至少一部分产生方向梯度直方图HOG的方法,包括:
将所述图像的所述一部分分成单元,每个单元包括多个图像像素;
针对单元的每个图像像素,
基于沿着分别包括所述像素的所述图像的至少一行和所述图像的列的像素值差异,获得水平梯度分量gx和垂直梯度分量gy;以及
将梯度分配给整圆内的多个扇区中的一者,其中n是扇区索引,每个扇区延伸通过一系列方位角,并且所述扇区的至少一些扇区根据以下不等式从相邻扇区划分:gy*16<gx*(n+1),其中
0≤n≤5,以及b*16<a*(13-n),其中7≤n≤12,a=gx+gy并且b=gx-gy,其中n=6的扇区对应于n=0至n=5的扇区与n=7至n=12的扇区之间的剩余空间;
将至少一个扇区与HOG区间相关联;以及
对与HOG区间相关联的单元的每个像素梯度进行累加以为所述单元提供HOG。
2.根据权利要求1所述的方法,包括:在将像素梯度分配到多个扇区中的一个之前:
如果所述水平梯度分量小于0,则反转像素的所述水平梯度分量gx;
如果所述垂直梯度分量小于0,则反转像素的所述垂直梯度分量gy;以及
如果所述垂直梯度分量大于所述水平梯度分量,则互换像素的所述水平和垂直梯度分量,以便将像素梯度映射到公共半象限;以及
在将像素梯度分配给多个扇区中的一者之后:
根据所述反转和互换,将所述分配的扇区映射到整圆的扇区。
3.根据权利要求1所述的方法,其中将扇区与HOG区间关联包括:使用查找表,所述查找表中的条目将每个扇区映射至多个HOG区间中的一个HOG区间。
4.根据权利要求1所述的方法,还包括:
根据以下公式计算每个像素梯度的幅度m(x,y):
其中K是具有近似整数值的查找表中的值,该近似整数值是针对使用分配的扇区索引n索引的cos(∝)而取的,其中cos(∝)是对应于每个扇区索引的角度的余弦值,并且其中c是常数,幂是2。
5.一种图像处理系统,包括用于实现根据权利要求1所述的方法的数字逻辑。
6.一种用于为图像的至少一部分产生方向梯度直方图HOG的方法,包括:
将所述图像的所述一部分分成单元,每个单元包括多个图像像素;
将至少一个扇区与HOG区间相关联,每个扇区对应于整圆内的对应角度,
针对单元的每个图像像素,
基于沿着分别包括所述像素的所述图像的至少一行和所述图像的列的像素值差异,获得水平梯度分量gx和垂直梯度分量gy;以及
根据像素梯度与界定所述像素梯度的一对扇区中的每一者的相对角度,将梯度权重分配给界定所述像素梯度的一对扇区中的扇区;以及
根据所述扇区和所述相关联的HOG区间之间的角度关系,将扇区的所述梯度权重分配给相关联的HOG区间;以及
针对与HOG区间相关联的单元的每个像素累加加权像素梯度,从而为所述单元提供HOG。
7.根据权利要求6所述的方法,其中所述将梯度权重分配给扇区包括:
将梯度权重W1分配给所述一对扇区中的第一扇区并且根据下式计算所述梯度权重:
其中a1和a2是所述像素梯度的扇区内角度,并且其中W0包括所述一对扇区中的第二扇区的所述权重。
8.根据权利要求7所述的方法,其中所述a1用所述垂直梯度分量gy表示,并且所述a1+a2用扇区的最大垂直梯度分量表示。
9.根据权利要求8所述的方法,包括:使用查找表中的值Kw来表示作为所述水平梯度分量gx的函数的所述a1+a2,并且根据下式计算所述权重W1、W0:
其中c是常数,幂是2。
10.根据权利要求6所述的方法,其中扇区沿着包括gx=2n*gy的线延伸,其中n是扇区索引。
11.根据权利要求6所述的方法,其中每个具有索引n的扇区沿着以下线延伸:gy*16=gx*(n+1),其中0≤n≤5,以及b*16=a*(13-n),其中7≤n≤12,a=gx+gy并且b=gx–gy,其中n=6的扇区对应于n=0至n=5的扇区与n=7至n=12的扇区之间的剩余空间。
12.一种图像处理系统,包括用于实现根据权利要求6所述的方法的数字逻辑。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201462085346P | 2014-11-28 | 2014-11-28 | |
US15/160,835 | 2016-05-20 | ||
US15/160,835 US9977985B2 (en) | 2014-11-28 | 2016-05-20 | Method for producing a histogram of oriented gradients |
PCT/EP2017/062188 WO2017198861A1 (en) | 2016-05-20 | 2017-05-19 | A method for producing a histogram of oriented gradients |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109478242A CN109478242A (zh) | 2019-03-15 |
CN109478242B true CN109478242B (zh) | 2023-12-01 |
Family
ID=54288782
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780044704.0A Active CN109478242B (zh) | 2014-11-28 | 2017-05-19 | 用于产生方向梯度直方图的方法 |
Country Status (4)
Country | Link |
---|---|
US (2) | US9977985B2 (zh) |
EP (1) | EP3058510B1 (zh) |
CN (1) | CN109478242B (zh) |
WO (1) | WO2016083002A1 (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016083002A1 (en) | 2014-11-28 | 2016-06-02 | Fotonation Limited | A method for producing a histogram of oriented gradients |
WO2017198861A1 (en) | 2016-05-20 | 2017-11-23 | Fotonation Limited | A method for producing a histogram of oriented gradients |
US10460198B2 (en) | 2015-12-23 | 2019-10-29 | Fotonation Limited | Image processing system |
US10497089B2 (en) | 2016-01-29 | 2019-12-03 | Fotonation Limited | Convolutional neural network |
US11004205B2 (en) * | 2017-04-18 | 2021-05-11 | Texas Instruments Incorporated | Hardware accelerator for histogram of oriented gradients computation |
WO2018197687A1 (fr) * | 2017-04-28 | 2018-11-01 | Another Brain | Dispositif ram automatisé apte à mémoriser, rappeler et gérer de manière non volatile, des associations de messages versus label et vice versa, avec un maximum de vraisemblance |
CN109685058B (zh) * | 2017-10-18 | 2021-07-09 | 杭州海康威视数字技术股份有限公司 | 一种图像目标识别方法、装置及计算机设备 |
KR101882704B1 (ko) * | 2017-12-18 | 2018-07-27 | 삼성전자주식회사 | 전자 장치 및 그 제어 방법 |
US11074671B2 (en) | 2017-12-18 | 2021-07-27 | Samsung Electronics Co., Ltd. | Electronic apparatus and control method thereof |
CN108520262B (zh) * | 2018-03-28 | 2020-08-07 | 厦门瑞为信息技术有限公司 | 一种基于fpga实时提取fhog特征的方法 |
US10558430B2 (en) | 2018-04-17 | 2020-02-11 | Fotonation Limited | Neural network engine |
US11676371B2 (en) | 2018-08-17 | 2023-06-13 | Fotonation Limited | Apparatus for processing a neural network |
JP7327992B2 (ja) * | 2019-05-10 | 2023-08-16 | フォルシアクラリオン・エレクトロニクス株式会社 | 立体物検出装置、及び立体物検出方法 |
US11302009B2 (en) | 2019-08-19 | 2022-04-12 | Fotonation Limited | Method of image processing using a neural network |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012104078A (ja) * | 2010-11-15 | 2012-05-31 | Nec Corp | 画像特徴検出システム、画像認識システム、画像特徴検出方法、画像認識方法、およびプログラム |
JP2012221131A (ja) * | 2011-04-06 | 2012-11-12 | Panasonic Corp | 画像認識プロセッサ |
CN104463186A (zh) * | 2013-09-16 | 2015-03-25 | 深圳市迈瑞思智能技术有限公司 | 一种目标特征检测方法及装置 |
CN104850852A (zh) * | 2015-04-27 | 2015-08-19 | 小米科技有限责任公司 | 特征向量计算方法和装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107248168A (zh) | 2013-03-18 | 2017-10-13 | 快图有限公司 | 用于运动估算的方法和装置 |
US9508018B2 (en) * | 2014-11-24 | 2016-11-29 | Texas Instruments Incorporated | Systems and methods for object detection |
WO2016083002A1 (en) | 2014-11-28 | 2016-06-02 | Fotonation Limited | A method for producing a histogram of oriented gradients |
US9483706B2 (en) * | 2015-01-08 | 2016-11-01 | Linear Algebra Technologies Limited | Hardware accelerator for histogram of gradients |
US9547881B2 (en) * | 2015-01-29 | 2017-01-17 | Qualcomm Incorporated | Systems and methods for calculating a feature descriptor |
-
2015
- 2015-10-06 WO PCT/EP2015/073058 patent/WO2016083002A1/en active Application Filing
- 2015-10-06 EP EP15777923.2A patent/EP3058510B1/en active Active
-
2016
- 2016-05-20 US US15/160,835 patent/US9977985B2/en active Active
-
2017
- 2017-05-19 US US16/303,071 patent/US10839247B2/en active Active
- 2017-05-19 CN CN201780044704.0A patent/CN109478242B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012104078A (ja) * | 2010-11-15 | 2012-05-31 | Nec Corp | 画像特徴検出システム、画像認識システム、画像特徴検出方法、画像認識方法、およびプログラム |
JP2012221131A (ja) * | 2011-04-06 | 2012-11-12 | Panasonic Corp | 画像認識プロセッサ |
CN104463186A (zh) * | 2013-09-16 | 2015-03-25 | 深圳市迈瑞思智能技术有限公司 | 一种目标特征检测方法及装置 |
CN104850852A (zh) * | 2015-04-27 | 2015-08-19 | 小米科技有限责任公司 | 特征向量计算方法和装置 |
Non-Patent Citations (3)
Title |
---|
Real-Time Vision-Based Stop Sign Detection System on FPGA;Tam Phuong Cao et al.;《IEEE》;20081201;全文 * |
基于FPGA的低功耗行人检测系统研究与实现;谢帅;《中国优秀硕士学位论文全文数据库 信息科技辑》;20141015(第10期);全文 * |
结合SVM分类器与HOG特征提取的行人检测;徐渊等;《计算机工程》;20160115(第01期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
WO2016083002A1 (en) | 2016-06-02 |
US9977985B2 (en) | 2018-05-22 |
US20190205691A1 (en) | 2019-07-04 |
EP3058510A1 (en) | 2016-08-24 |
CN109478242A (zh) | 2019-03-15 |
US20170098135A1 (en) | 2017-04-06 |
EP3058510B1 (en) | 2017-12-20 |
US10839247B2 (en) | 2020-11-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109478242B (zh) | 用于产生方向梯度直方图的方法 | |
Gribbon et al. | A real-time FPGA implementation of a barrel distortion correction algorithm with bilinear interpolation | |
US9122954B2 (en) | Performing a histogram using an array of addressable registers | |
KR101470112B1 (ko) | 미리 계산된 스케일-공간으로부터의 데이지 서술자 생성 | |
CN102855649B (zh) | 基于orb特征点的高压杆塔高清图像全景拼接方法 | |
US9547881B2 (en) | Systems and methods for calculating a feature descriptor | |
EP3093757B1 (en) | Multi-dimensional sliding window operation for a vector processor | |
CN110610457A (zh) | 全景图像拼接方法、装置以及系统 | |
JP7368924B2 (ja) | 勾配方向ヒストグラムの演算のためのハードウェアアクセレレータ | |
EP3459010B1 (en) | A method and system for calculating a histogram of oriented gradients | |
Zhou et al. | An efficient implementation of the gradient-based Hough transform using DSP slices and block RAMs on the FPGA | |
CN109753157A (zh) | 显示屏的手势控制方法及装置 | |
US10706316B2 (en) | System and method of feature descriptor processing | |
Rao et al. | Quadrant segmentation and ring-like searching based FPGA implementation of ORB matching system for Full-HD video | |
Zhou et al. | An FPGA Implementation of Hough Transform using DSP blocks and block RAMs | |
Zhang et al. | A hardware-oriented histogram of oriented gradients algorithm and its VLSI implementation | |
CN111009004B (zh) | 一种加速图像匹配的硬件优化方法 | |
Kalms et al. | Efficient pattern recognition algorithm including a fast retina keypoint FPGA implementation | |
Sanchez et al. | A streaming hardware architecture for real-time SIFT feature extraction | |
CN105447493B (zh) | 基于尺度化缓存插值结构的鲁棒特征点提取系统 | |
US11580617B2 (en) | Method of matching images to be merged and data processing device performing the same | |
CN113610134A (zh) | 一种图像特征点匹配方法、装置、芯片、终端和存储介质 | |
JPS6019252A (ja) | メモリアドレス制御回路 |
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 | ||
GR01 | Patent grant |