基于ARM-NEON扩展指令集的图像直方图统计方法技术

技术编号:30165331 阅读:24 留言:0更新日期:2021-09-25 15:21
本发明专利技术公开了一种基于ARM

【技术实现步骤摘要】
基于ARM

NEON扩展指令集的图像直方图统计方法


[0001]本专利技术属于图像处理
,更进一步涉及图像直方图统计
中的一种基于ARM高级单指令多数据流扩展指令集(又称ARM

NEON技术)的图像直方图统计方法。本专利技术可用于在ARM架构下对数字图像中像素点进行图像直方图统计。

技术介绍

[0002]图像直方图统计了每个灰度级对应的像素个数,并将结果分布于一系列预定义的区间中。图像直方图反映了图像像素分布的统计特性,以左暗右亮的分布曲线形式呈现,不显示源图像数据,在进行图像计算处理时代价较小。图像直方图统计是数字图像处理技术中一个重要环节,广泛应用于空间域处理、特征描述及特征匹配等领域。在处理器架构下实现高性能的图像直方图统计在数字图像处理领域中尤为重要。现有的图像处理库Intel IPP库中对图像直方图统计实现具有较高性能,但是该产品主要依赖于Intel微处理器的优化,并配合英特尔微处理器使用。由于Intel处理器基于x86架构,因此Intel IPP库中的图像直方图统计不支持ARM架构。
[0003]中国科学院上海高等研究院在其申请的专利文献“图像直方图的统计方法及其系统”(专利申请号:201510239292.9,公开号:CN 104809747 A)中提出了一种利用行程编码对相同连续像素进行压缩的图像直方图的统计方法。该方法利用原始图像像素数据中存在相同连续像素的特征,预先使用行程编码对这些相同连续像素进行压缩,通过在一个操作中完成对相同连续像素进行直方图统计,减少了直方图统计的读写操作步骤,从而减少了直方图统计的时间和功耗。但是,该方法存在的不足之处在于,减少直方图统计的读写操作只能适用于具有连续相同像素的图像,实际应用中大多数的图像数据并不符合行程编码,读写操作不能有效减少,计算过程冗余,故无法对复杂情况下的图像数据进行并行统计计算。
[0004]腾讯科技(上海)有限公司在其申请的专利文献“图像直方图信息统计方法及系统、电子设备”(专利申请号:CN201710252524.3,公开号:CN107169943A)中公开了一种对图像局部窗口进行图像直方图信息方法。该专利技术通过排除当前图像的局部窗口相对于已统计图像直方图信息的历史局部窗口的重叠区域图像,只对非重叠区域进行图像直方图统计,进而避免冗余计算提高计算效率。该方法存在的不足之处在于,利用OpenCV(Open Source ComputerVision Library,开源计算机视觉库)或调用python程序对非重叠区域的各个像素的灰度值进行统计,在ARM架构下OpenCV无法利用了IPP高度手工优化的代码实现加速,导致直方图统计函数的性能降低。

技术实现思路

[0005]本专利技术的目的在于针对现有技术的不足,提出一种基于ARM高级单指令多数据流扩展指令集的图像直方图统计方法,以解决对于密集型图像数据进行图像直方图统计时无法进行并行统计,大量的循环判断消耗内存资源,导致图像直方图统计过程中的冗余计算
和效率低的问题。
[0006]实现本专利技术目的的具体思路是:利用ARM支持单指令多数据流(SIMD)扩展的NEON指令集,将源图像中单个像素点操作扩展为一组像素点进行矢量操作,通过数据并行计算,大幅减少访存与操作次数,解决了对于密集型图像进行图像直方图统计时的冗余计算问题,极大降低了循环中分支预测对CPU资源消耗,不需要载入其他函数库,通过高度手工的优化方式实现图像处理的加速过程,进而提高图像直方图的统计效率。
[0007]本专利技术的步骤包括如下:
[0008](1)按照下式,计算图像直方图中每个灰度级的临界点:
[0009][0010][0011]其中,p
i
‑1表示图像直方图中第i个灰度级的左临界点,i表示图像直方图中灰度级的序号i∈[0,n+1),n表示图像直方图统计范围内灰度级总数,l表示图像直方图统计范围r的下边界,u表示图像直方图统计范围r的上边界,p
i
表示图像直方图中第i个灰度级的右临界点;
[0012](2)设置图像直方图中每个灰度级的临界点寄存器:
[0013]使用128位NEON寄存器设置m+1个临界点寄存器,每个临界点寄存器与图像直方图灰度级临界点一一对应,用每个临界点的像素值对相应的临界点寄存器中所有元素进行赋值,其中,m的取值与n相等;
[0014](3)统计源图像所有像素点的图像直方图:
[0015](3a)将焦点区域roi区域中的源图像从首个像素点开始,逐行逐列依次将像素点加载到源图像寄存器src中;
[0016](3b)从图像直方图第一个有效灰度级开始遍历,将源图像寄存器src中的像素点与当前灰度级的左、右临界点寄存器进行连续矢量比较操作,统计在源图像寄存器src中像素点在当前灰度级左、右临界点之间的像素点个数c,用c更新当前灰度级的总像素点数;
[0017](3c)采用与步骤(3b)相同的方式,使用源图像寄存器src更新所有有效灰度级的总像素点数;
[0018](3d)采用与步骤(3a)

(3c)相同的方式,更新源图像中所有像素点在每个图像直方图灰度级的个数;
[0019](4)将统计的源图像在每个图像直方图灰度级的像素点总数赋值到图像直方图数组pHist中。
[0020]本专利技术与现有的技术相比具有以下优点:
[0021]第一,由于本专利技术采用了ARM支持单指令多数据流(SIMD)扩展的NEON指令集将源图像中单个像素点操作扩展为一组像素点进行矢量操作,利用数据并行计算,极大减少了循环迭代次数和访存次数,进而大幅减少操作次数,克服了现有技术中对于复杂图像进行图像直方图统计时的冗余计算问题,使得本专利技术具有支持数据并行计算、支持密集型图像数据以及计算速度快的优点,有效地提升了图像直方图统计效率。
[0022]第二,本专利技术基于ARM处理器架构设计实现图像直方图统计功能,不需载入其他函
数库,通过高度手工的优化方式使得直方图统计运行速度得到大幅提升,克服了现有技术因计算机体系结构的限制无法直接部署到ARM架构上的问题,使得本专利技术具有专用于ARM架构上实现高速图像直方图统计的优点。
附图说明
[0023]图1为本专利技术的流程图;
[0024]图2为本专利技术NEON直方图统计数据处理图。
具体实施方式
[0025]下面结合附图和实施例对本专利技术做进一步详细描述。
[0026]参照图1,以数据类型为uint8单通道源图像为例,对本专利技术的具体实施步骤做进一步的描述。
[0027]步骤1,按照下式,计算图像直方图中每个灰度级的临界点:
[0028][0029][0030]其中,p
i
‑1表示图像直方图中第i个灰度级的左临界点,i表示图像直方图中灰度级序号i∈[0,n+1),n表示图像直方图统计范围内灰度级总数,l表示图像直方图统计范围本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于ARM

NEON扩展指令集的图像直方图统计方法,其特征在于,将图像直方图灰度级临界点分配到128位NEON寄存器存储,通过连续矢量操作对图像直方图进行统计;该方法的步骤如下:(1)按照下式,计算图像直方图中每个灰度级的临界点:(1)按照下式,计算图像直方图中每个灰度级的临界点:其中,p
i
‑1表示图像直方图中第i个灰度级的左临界点,i表示图像直方图中灰度级的序号i∈[0,n+1),n表示图像直方图统计范围内灰度级的总数,l表示图像直方图统计范围r的下边界,u表示图像直方图统计范围r的上边界,p
i
表示图像直方图中第i个灰度级的右临界点;(2)设置图像直方图中每个灰度级的临界点寄存器:使用128位NEON寄存器设置m+1个临界点寄存器,每个临界点寄存器与图像直方图灰度级临界点一一对应,用每个临界点的像素值对相应的临界点寄存器中的所有元素进行赋值,其中,m的取值与n相等;(3)统计源图像所有像素点的图像直方图:(3a)将焦点区域roi区域中的源图像从首个像素点开始,逐行逐列依次将像素点加载到源图像寄存器src中;(3b)从图像直方图第一个有效灰度级开始遍历,将源图像寄存器src中的像素点与当前灰度级的左、右临界点寄存器进行连续矢量比较操作,统计在源图像寄存器src中像素点在当前灰度级左、右临界点之间的像素点个数c,用c更新当前灰度级的总像素点数;(3c)采用与步骤(3b)相同的方式,使用源图像寄存器src更新所有有效灰度级的总像素点数;(3d)采用与步骤(3a)

(3c)相同的方式,更新源图像中所有像素点在每个图像直方图灰度级的个数;(4)将统计的源图像在每个图像直方图灰度级的像素点总数赋值到图像直方图数组pHist中。2.根据权利要求1所述的基于ARM

...

【专利技术属性】
技术研发人员:刘凯孙单单谷一鑫张瑞钰
申请(专利权)人:西安电子科技大学
类型:发明
国别省市:

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

1