CN113436121B - 基于arm-neon扩展指令集的图像直方图统计方法 - Google Patents

基于arm-neon扩展指令集的图像直方图统计方法 Download PDF

Info

Publication number
CN113436121B
CN113436121B CN202110721567.8A CN202110721567A CN113436121B CN 113436121 B CN113436121 B CN 113436121B CN 202110721567 A CN202110721567 A CN 202110721567A CN 113436121 B CN113436121 B CN 113436121B
Authority
CN
China
Prior art keywords
critical point
image
register
gray level
image histogram
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
Application number
CN202110721567.8A
Other languages
English (en)
Other versions
CN113436121A (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.)
Xidian University
Original Assignee
Xidian University
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 Xidian University filed Critical Xidian University
Priority to CN202110721567.8A priority Critical patent/CN113436121B/zh
Publication of CN113436121A publication Critical patent/CN113436121A/zh
Application granted granted Critical
Publication of CN113436121B publication Critical patent/CN113436121B/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
    • G06T5/00Image enhancement or restoration
    • G06T5/40Image enhancement or restoration using histogram techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10004Still image; Photographic image

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Image Analysis (AREA)
  • Image Processing (AREA)

Abstract

本发明公开了一种基于ARM‑NEON扩展指令集的图像直方图统计方法。其实现步骤为:通过图像直方图统计范围计算图像直方图中每个灰度级的临界点;使用NEON扩展指令集128位寄存器设置图像直方图中每个灰度级的临界点寄存器;统计源图像所有像素点的图像直方图;将图像直方图结果存入数组pHist中。本发明采用基于ARM架构的单指令多数据流(SIMD)扩展的NEON指令集,将源图像中单个数据操作扩展为一组数据进行矢量操作,减少了复杂图像进行图像直方图统计时的冗余计算,极大降低了循环中的分支预测对CPU资源的消耗,进而提高图像直方图的统计效率。

Description

基于ARM-NEON扩展指令集的图像直方图统计方法
技术领域
本发明属于图像处理技术领域,更进一步涉及图像直方图统计技术领域中的一种基于ARM高级单指令多数据流扩展指令集(又称ARM-NEON技术)的图像直方图统计方法。本发明可用于在ARM架构下对数字图像中像素点进行图像直方图统计。
背景技术
图像直方图统计了每个灰度级对应的像素个数,并将结果分布于一系列预定义的区间中。图像直方图反映了图像像素分布的统计特性,以左暗右亮的分布曲线形式呈现,不显示源图像数据,在进行图像计算处理时代价较小。图像直方图统计是数字图像处理技术中一个重要环节,广泛应用于空间域处理、特征描述及特征匹配等领域。在处理器架构下实现高性能的图像直方图统计在数字图像处理领域中尤为重要。现有的图像处理库IntelIPP库中对图像直方图统计实现具有较高性能,但是该产品主要依赖于Intel微处理器的优化,并配合英特尔微处理器使用。由于Intel处理器基于x86架构,因此Intel IPP库中的图像直方图统计不支持ARM架构。
中国科学院上海高等研究院在其申请的专利文献“图像直方图的统计方法及其系统”(专利申请号:201510239292.9,公开号:CN 104809747 A)中提出了一种利用行程编码对相同连续像素进行压缩的图像直方图的统计方法。该方法利用原始图像像素数据中存在相同连续像素的特征,预先使用行程编码对这些相同连续像素进行压缩,通过在一个操作中完成对相同连续像素进行直方图统计,减少了直方图统计的读写操作步骤,从而减少了直方图统计的时间和功耗。但是,该方法存在的不足之处在于,减少直方图统计的读写操作只能适用于具有连续相同像素的图像,实际应用中大多数的图像数据并不符合行程编码,读写操作不能有效减少,计算过程冗余,故无法对复杂情况下的图像数据进行并行统计计算。
腾讯科技(上海)有限公司在其申请的专利文献“图像直方图信息统计方法及系统、电子设备”(专利申请号:CN201710252524.3,公开号:CN107169943A)中公开了一种对图像局部窗口进行图像直方图信息方法。该专利技术通过排除当前图像的局部窗口相对于已统计图像直方图信息的历史局部窗口的重叠区域图像,只对非重叠区域进行图像直方图统计,进而避免冗余计算提高计算效率。该方法存在的不足之处在于,利用OpenCV(OpenSource ComputerVision Library,开源计算机视觉库)或调用python程序对非重叠区域的各个像素的灰度值进行统计,在ARM架构下OpenCV无法利用了IPP高度手工优化的代码实现加速,导致直方图统计函数的性能降低。
发明内容
本发明的目的在于针对现有技术的不足,提出一种基于ARM高级单指令多数据流扩展指令集的图像直方图统计方法,以解决对于密集型图像数据进行图像直方图统计时无法进行并行统计,大量的循环判断消耗内存资源,导致图像直方图统计过程中的冗余计算和效率低的问题。
实现本发明目的的具体思路是:利用ARM支持单指令多数据流(SIMD)扩展的NEON指令集,将源图像中单个像素点操作扩展为一组像素点进行矢量操作,通过数据并行计算,大幅减少访存与操作次数,解决了对于密集型图像进行图像直方图统计时的冗余计算问题,极大降低了循环中分支预测对CPU资源消耗,不需要载入其他函数库,通过高度手工的优化方式实现图像处理的加速过程,进而提高图像直方图的统计效率。
本发明的步骤包括如下:
(1)按照下式,计算图像直方图中每个灰度级的临界点:
Figure BDA0003137018820000021
Figure BDA0003137018820000022
其中,pi-1表示图像直方图中第i个灰度级的左临界点,i表示图像直方图中灰度级的序号i∈[0,n+1),n表示图像直方图统计范围内灰度级总数,l表示图像直方图统计范围r的下边界,u表示图像直方图统计范围r的上边界,pi表示图像直方图中第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中。
本发明与现有的技术相比具有以下优点:
第一,由于本发明采用了ARM支持单指令多数据流(SIMD)扩展的NEON指令集将源图像中单个像素点操作扩展为一组像素点进行矢量操作,利用数据并行计算,极大减少了循环迭代次数和访存次数,进而大幅减少操作次数,克服了现有技术中对于复杂图像进行图像直方图统计时的冗余计算问题,使得本发明具有支持数据并行计算、支持密集型图像数据以及计算速度快的优点,有效地提升了图像直方图统计效率。
第二,本发明基于ARM处理器架构设计实现图像直方图统计功能,不需载入其他函数库,通过高度手工的优化方式使得直方图统计运行速度得到大幅提升,克服了现有技术因计算机体系结构的限制无法直接部署到ARM架构上的问题,使得本发明具有专用于ARM架构上实现高速图像直方图统计的优点。
附图说明
图1为本发明的流程图;
图2为本发明NEON直方图统计数据处理图。
具体实施方式
下面结合附图和实施例对本发明做进一步详细描述。
参照图1,以数据类型为uint8单通道源图像为例,对本发明的具体实施步骤做进一步的描述。
步骤1,按照下式,计算图像直方图中每个灰度级的临界点:
Figure BDA0003137018820000041
Figure BDA0003137018820000042
其中,pi-1表示图像直方图中第i个灰度级的左临界点,i表示图像直方图中灰度级序号i∈[0,n+1),n表示图像直方图统计范围内灰度级总数,l表示图像直方图统计范围r的下边界,u表示图像直方图统计范围r的上边界,pi表示图像直方图中第i个灰度级的右临界点。
步骤2,使用NEON扩展指令集128位寄存器设置图像直方图中每个灰度级的临界点寄存器。
从第一个图像直方图灰度级临界点开始,依次判断当前临界点pk是否小于源图像所属数据类型最小值MIN,且下一个临界点pk+1是否大于等于0,若是,设置第k个临界点寄存器中的元素均为MIN,记录该临界点索引位置k1作为第一个有效灰度级的左临界点,否则,判断当前临界点pk是否大于源图像所属数据类型最大值MAX,若是,设置第k个临界点寄存器中的元素均为MAX,记录该临界点索引位置k2作为最后一个有效灰度级的右临界点,设置标记flag值为1,否则,使用当前临界点像素值对相应的临界点寄存器中所有元素进行赋值。
步骤3,统计源图像所有像素点的图像直方图。
步骤3.1,将焦点区域roi区域中的源图像从首个像素点开始,逐行逐列依次将像素点加载到源图像寄存器src中。
步骤3.2,从图像直方图第一个有效灰度级开始遍历,将源图像寄存器src中的像素点与当前灰度级的左、右临界点寄存器进行连续矢量比较操作,统计在源图像寄存器src中像素点在当前灰度级左、右临界点之间的像素点个数c,用c更新当前灰度级的总像素点数。
参照图2,对本发明步骤3.2的具体实施步骤做进一步的描述。
源图像寄存器src中的像素点与当前灰度级的左、右临界点寄存器进行连续矢量比较操作的具体步骤如下:
第1步,通过ARM NEON扩展指令集128位矢量的比大于等于操作,判断源图像寄存器src中的每个像素点是否大于或等于当前灰度级左临界点寄存器sk中对应位置的元素,若是,则设置结果寄存器res0中对应位置的元素值为1,否则,设置为0。
第2步,若当前flag值是为0,则通过ARM NEON扩展指令集128位矢量的比小操作,判断源图像寄存器src中的每个像素点是否小于当前灰度级右临界点寄存器sk+1中对应位置的元素,若是,则设置结果寄存器res1中对应位置的元素值为1,否则,设置为0。
第3步,若当前flag值是为1,则通过ARM NEON扩展指令集128位矢量的比小于等于操作,判断源图像寄存器src中的每个像素点是否小于等于当前灰度级右临界点寄存器中对应位置的元素,若是,则设置结果寄存器res1中对应位置的元素值为1,否则,设置为0。
第4步,将res0与res1执行逻辑与操作得到结果寄存器res,将res中所有元素进行求和运算。
步骤3.3,采用与步骤3.2相同的方式,使用源图像寄存器src更新所有有效灰度级的总像素点数。
步骤3.4,采用与步骤3.1、步骤3.2、步骤3.3相同的方式,更新源图像焦点区域roi内所有像素点在每个图像直方图灰度级的像素个数。
步骤4,将统计的源图像在每个图像直方图灰度级的像素点总数赋值到图像直方图数组pHist中。
下面结合实验数据对本发明的效果作进一步的说明。
1.仿真实验条件:
本发明仿真实验的硬件测试平台是:处理器为CPU鲲鹏920通用计算增强型,主频为2.6GHz,内存8GB,ARM架构;
软件平台为:centOS 7.5,64位操作系统。
2.仿真内容及仿真结果分析:
本发明的仿真实验包括两个仿真实验,仿真实验1是本发明方法进行图像直方图统计,仿真实验2是采用基本逻辑进行图像直方图统计。在相同硬件和软件环境下,使用相同输入参数,对四种数据类型(uint8、uint16、int16、float)源图像进行测试基本逻辑程序和本发明方法实现的图像直方图统计程序。如下表1所示,为两个仿真实验的相关参数设置。
表1两个仿真实验相关参数表
Figure BDA0003137018820000061
表2本发明与基本逻辑实现图像直方图统计消耗时间对比表
源图像数据类型 基本逻辑实现(ms) 本发明(ms)
uint8 17944.1491 858.6027
uint16 18018.6597 1616.1688
int16 18075.1003 1612.6369
float 11668.9525 2872.8107
表2给出四种数据类型源图像分别采用基本逻辑和本发明方法进行图像直方图统计的时间消耗情况,均使用表1所示参数进行单独测试,在保证程序功能正确的前提下,计算10次程序运行的平均时间。从表2可见,本发明在ARM架构下对图像像素进行直方图统计运行时间大幅降低,对于uint8数据类型图像,相比基本逻辑实现,速度提高20倍左右,对于float数据类型图像速度提高4倍以上。实验证明,在功能一致的条件下,本发明基于ARM架构实现图像直方图统计且不需要载入其他函数库,运行速度比基本逻辑实现提高4倍以上。
以上是本发明参照当前较佳实施方式进行的描述,显然对于本领域的专业人员来说,在了解了本发明内容和原理后,都可能在不背离本发明原理、结构的情况下,进行形式和细节上的各种修正和改变,但是这些基于本发明思想的修正和改变仍在本发明的权利要求保护范围之内。

Claims (2)

1.一种基于ARM-NEON扩展指令集的图像直方图统计方法,其特征在于,将图像直方图灰度级临界点分配到128位NEON寄存器存储,通过连续矢量操作对图像直方图进行统计;该方法的步骤如下:
(1)按照下式,计算图像直方图中每个灰度级的临界点:
Figure FDA0003883445210000011
Figure FDA0003883445210000012
其中,pi-1表示图像直方图中第i个灰度级的左临界点,i表示图像直方图中灰度级的序号i∈[0,n+1),n表示图像直方图统计范围内灰度级的总数,l表示图像直方图统计范围r的下边界,u表示图像直方图统计范围r的上边界,pi表示图像直方图中第i个灰度级的右临界点;
(2)设置图像直方图中每个灰度级的临界点寄存器:
使用128位NEON寄存器设置m+1个临界点寄存器,每个临界点寄存器与图像直方图灰度级临界点一一对应,用每个临界点的像素值对相应的临界点寄存器中的所有元素进行赋值,其中,m的取值与n相等;
(3)统计源图像所有像素点的图像直方图:
(3a)将焦点区域roi区域中的源图像从首个像素点开始,逐行逐列依次将像素点加载到源图像寄存器src中;
(3b)从图像直方图第一个有效灰度级开始遍历,将源图像寄存器src中的像素点与当前灰度级的左、右临界点寄存器进行连续矢量比较操作,统计在源图像寄存器src中像素点在当前灰度级左、右临界点之间的像素点个数c,用c更新当前灰度级的总像素点数;
所述连续矢量比较操作的步骤如下:
第一步,通过比大于等于矢量操作,判断源图像寄存器src中的每个像素点是否大于或等于当前灰度级左临界点寄存器中对应位置的元素,若是,则设置结果寄存器res0中对应位置的元素值为1,否则,设置为0;
第二步,若当前flag值是为0,则通过比小矢量操作,判断源图像寄存器src中的每个像素点是否小于当前灰度级右临界点寄存器中对应位置的元素,若是,则设置结果寄存器res1中对应位置的元素值为1,否则,设置为0;
第三步,若当前flag值是为1,则通过比小于等于矢量操作,判断源图像寄存器src中的每个像素点是否小于等于当前灰度级右临界点寄存器中对应位置的元素,若是,则设置结果寄存器res1中对应位置的元素值为1,否则,设置为0;
第四步,将res0与res1执行逻辑与操作得到结果寄存器res,将res中所有元素进行求和运算;
(3c)采用与步骤(3b)相同的方式,使用源图像寄存器src更新所有有效灰度级的总像素点数;
(3d)采用与步骤(3a)-(3c)相同的方式,更新源图像中所有像素点在每个图像直方图灰度级的个数;
(4)将统计的源图像在每个图像直方图灰度级的像素点总数赋值到图像直方图数组pHist中。
2.根据权利要求1所述的基于ARM-NEON扩展指令集的图像直方图统计方法,其特征在于,步骤(2)中所述使用128位NEON寄存器设置m+1个临界点寄存器的步骤如下:从第一个图像直方图灰度级临界点开始,依次判断当前临界点pk是否小于源图像所属数据类型最小值MIN,且下一个临界点pk+1是否大于等于0,若是,设置第k个临界点寄存器中的元素均为MIN,记录该临界点索引位置k1作为第一个有效灰度级的左临界点,否则,判断当前临界点pk是否大于源图像所属数据类型最大值MAX,若是,设置第k个临界点寄存器中的元素均为MAX,记录该临界点索引位置k2作为最后一个有效灰度级的右临界点,设置标记flag值为1,否则,使用当前临界点像素值对相应的临界点寄存器中所有元素进行赋值。
CN202110721567.8A 2021-06-28 2021-06-28 基于arm-neon扩展指令集的图像直方图统计方法 Active CN113436121B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110721567.8A CN113436121B (zh) 2021-06-28 2021-06-28 基于arm-neon扩展指令集的图像直方图统计方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110721567.8A CN113436121B (zh) 2021-06-28 2021-06-28 基于arm-neon扩展指令集的图像直方图统计方法

Publications (2)

Publication Number Publication Date
CN113436121A CN113436121A (zh) 2021-09-24
CN113436121B true CN113436121B (zh) 2022-12-02

Family

ID=77755068

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110721567.8A Active CN113436121B (zh) 2021-06-28 2021-06-28 基于arm-neon扩展指令集的图像直方图统计方法

Country Status (1)

Country Link
CN (1) CN113436121B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109993035A (zh) * 2017-12-29 2019-07-09 深圳市优必选科技有限公司 基于嵌入式系统的人体检测的方法以及装置
CN111862160A (zh) * 2020-07-23 2020-10-30 中国兵器装备集团自动化研究所 一种基于arm平台的目标跟踪方法、介质和系统

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101937249B1 (ko) * 2012-10-09 2019-04-11 에스케이 텔레콤주식회사 열상카메라의 영상 잡음 레벨에 기반한 대조비 향상 기법 및 장치
US9875213B2 (en) * 2015-06-26 2018-01-23 Intel Corporation Methods, apparatus, instructions and logic to provide vector packed histogram functionality
CN112257490A (zh) * 2020-07-19 2021-01-22 扬州大学 基于fpga的嵌入式行人密度统计系统及方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109993035A (zh) * 2017-12-29 2019-07-09 深圳市优必选科技有限公司 基于嵌入式系统的人体检测的方法以及装置
CN111862160A (zh) * 2020-07-23 2020-10-30 中国兵器装备集团自动化研究所 一种基于arm平台的目标跟踪方法、介质和系统

Also Published As

Publication number Publication date
CN113436121A (zh) 2021-09-24

Similar Documents

Publication Publication Date Title
Sharma et al. Classification-driven dynamic image enhancement
US8345063B2 (en) Filtering method and apparatus for anti-aliasing
CN109784372B (zh) 一种基于卷积神经网络的目标分类方法
US11080812B2 (en) Image recognition apparatus and image recognition method for sorting candidate regions detected in image
CN110598788A (zh) 目标检测方法、装置、电子设备及存储介质
CN111275660A (zh) 一种平板显示器缺陷检测方法及装置
CN113012068B (zh) 图像去噪方法、装置、电子设备及计算机可读存储介质
CN116894985B (zh) 半监督图像分类方法及半监督图像分类系统
Park et al. Low-cost, high-speed computer vision using NVIDIA's CUDA architecture
CN110648284A (zh) 一种光照不均匀的图像处理方法及装置
CN106780415B (zh) 一种直方图统计电路及多媒体处理系统
CN113436121B (zh) 基于arm-neon扩展指令集的图像直方图统计方法
US10248876B2 (en) Method and apparatus for avoiding non-aligned loads using multiple copies of input data
Chang et al. CUDA‐based acceleration and BPN‐assisted automation of bilateral filtering for brain MR image restoration
CN111833264A (zh) 一种基于cuda的图像快速去噪方法及系统
CN112906728A (zh) 一种特征比对方法、装置及设备
US20230409337A1 (en) Partial sorting for coherency recovery
CN113536943B (zh) 一种基于图像增强的道路交通标志识别方法
CN109948392B (zh) 二维码边界检测方法、分割方法、存储介质和电子设备
CN116563156B (zh) 一种基于非局部均值滤波算法的图像降噪方法及装置
KR20130138435A (ko) 밝기 대비 향상을 통한 영상 화질 개선 방법 및 장치
Ledig et al. Efficient computation of joint histograms and normalized mutual information on CUDA compatible devices
Khalvati et al. Accelerating image processing algorithms based on the reuse of spatial patterns
Xu et al. DEFA: Efficient Deformable Attention Acceleration via Pruning-Assisted Grid-Sampling and Multi-Scale Parallel Processing
CN114792293A (zh) 一种双链路神经网络红外图像对比度增强方法

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