CN114511477A - 一种适用于高斯平滑的neon优化方法 - Google Patents
一种适用于高斯平滑的neon优化方法 Download PDFInfo
- Publication number
- CN114511477A CN114511477A CN202210067301.0A CN202210067301A CN114511477A CN 114511477 A CN114511477 A CN 114511477A CN 202210067301 A CN202210067301 A CN 202210067301A CN 114511477 A CN114511477 A CN 114511477A
- Authority
- CN
- China
- Prior art keywords
- calculated
- neon
- gaussian smoothing
- data
- point
- 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.)
- Pending
Links
- 229910052754 neon Inorganic materials 0.000 title claims abstract description 42
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 title claims abstract description 42
- 238000000034 method Methods 0.000 title claims abstract description 40
- 238000009499 grossing Methods 0.000 title claims abstract description 37
- 238000005457 optimization Methods 0.000 title claims abstract description 16
- 238000004364 calculation method Methods 0.000 claims description 9
- 238000005096 rolling process Methods 0.000 claims description 4
- 238000012935 Averaging Methods 0.000 claims description 2
- 238000001914 filtration Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 238000009826 distribution Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000011946 reduction process Methods 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T5/00—Image enhancement or restoration
- G06T5/20—Image enhancement or restoration using local operators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8007—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Image Processing (AREA)
Abstract
本发明公开了一种适用于高斯平滑的NEON优化方法,所述方法包括以下步骤:执行高斯平滑算法;将每个点的权值系数读取到neon寄存器中;将一预设的待乘值读取到neon寄存器中并向量化;按行读取待计算点及其邻近域数据;对待计算点及邻近域数据进行计算时,先乘以待乘值再进行移位操作;高效利用了neon寄存器(32个D寄存器全部都有使用到);相比于传统的C方式,效率提升100%+。
Description
技术领域
本发明涉及图像处理技术领域,尤其涉及一种适用于高斯平滑的NEON优化方法。
背景技术
1、高斯平滑:
平滑是低频增强的空间域滤波技术,是一项简单且使用频率很高的图像处理方法。它的目的有两类:一类是模糊;另一类是消除噪音。高斯平滑是一种线性平滑滤波技术,使用于消除噪声,广泛应用于图像处理的减噪过程。通俗的讲,高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到。高斯滤波的具体操作是:用一个模板(或称卷积、掩模)扫描图像中的每一个像素,用模板确定的邻域内像素的加权平均灰度值去替代模板中心像素点的值。
2、neon:
SIMD(single instruction multiple data):一种并行处理技术,一条指令可以并行处理多个数据,相比于一条指令处理一个数据,运算速度大大提高。许多程序需要处理大量的数据集,而且很多都是由少于32bits的位数来存储的。比如在视频、图形、图像处理中的8-bit像素数据等。在诸如上述情形中,很可能充斥着大量简单而重复的运算,且少有控制代码的出现,SIMD就擅长为这类程序提供更高的性能。neon:NEON就是一种基于SIMD思想的ARM技术,相比于ARMv6或之前的架构,NEON结合了64-bit和128-bit的SIMD指令集,提供128-bit宽的向量运算(vector operations)。NEON技术从ARMv7开始被采用,目前可以在ARM Cortex-A和Cortex-R系列处理器中采用。现有的高斯平滑算法没有有效利用neon寄存器,还是传统的C方式进行处理,效率低。
发明内容
鉴于目前图像处理技术领域存在的高斯平滑处理时效率低的问题,本发明提供一种适用于高斯平滑的NEON优化方法,能够高效利用neon寄存器,效率提升。
为达到上述目的,本发明的实施例采用如下技术方案:
一种适用于高斯平滑的NEON优化方法,所述方法包括以下步骤:
执行高斯平滑算法;
将每个点的权值系数读取到neon寄存器中;
将一预设的待乘值读取到neon寄存器中并向量化;
按行读取待计算点及其邻近域数据;
对待计算点及邻近域数据进行计算时,先乘以待乘值再进行移位操作。
依照本发明的一个方面,所述高斯平滑算法为5×5高斯平滑算法,是以待计算点及其邻近域共计25个点的Y分量值分别乘上相应的权值后相加,再平均后得出待计算点最终结果。
依照本发明的一个方面,所述5×5高斯平滑算法的待乘值设为78,需要先将78读取到寄存器中并做向量化。
依照本发明的一个方面,所述向量化为16位向量化。
依照本发明的一个方面,所述对待计算点及邻近域数据进行计算时,先乘以待乘值再进行移位操作包括:将sum=sum/52转换为sum=sum*78>>12。
依照本发明的一个方面,所述按行读取待计算点及其邻近域数据包括:至少需要读取5次数据,考虑到neon的寄存器个数,选择每行每次读取24字节。
依照本发明的一个方面,每次读取数据可以计算出20个点。
依照本发明的一个方面,所述方法包括以下步骤:进行寄存器拼接处理,并将结果存放至内存中。
依照本发明的一个方面,所述将结果存放至内存中包括:基于neon寄存器,需将结果分多次存储。
依照本发明的一个方面,所述方法包括以下步骤:将不需要参与计算的数据权值设成0,计算同行的下一个数据,只需将权值数据滚动一下即可。
本发明实施的优点:
1、高效利用了neon寄存器(32个D寄存器全部都有使用到);
2、相比于传统的C方式,效率提升100%+。
在neon有限的寄存器下(32个64bit寄存器),在计算5X5高斯平滑时每计算20个点值只需要需要取5次数据,存3次数据。
预先读取每个点的权值系数进neon寄存器,避免反复读取同样的数据,每张图只需要读取一次。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明所述的一种适用于高斯平滑的NEON优化方法示意图;
图2为本发明所述的5×5高斯平滑算法权重示意图;
图3至图7为本发明实施例所述的计算过程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1、图2、图3、图4、图5、图6和图7所示,一种适用于高斯平滑的NEON优化方法,所述方法包括以下步骤:
步骤S1:执行高斯平滑算法;
在本实施例中,所述高斯平滑算法为5×5高斯平滑算法,如图2所示,是以待计算点及其邻近域共计25个点的Y分量值分别乘上相应的权值后相加,再平均后得出待计算点最终结果。
步骤S2:将每个点的权值系数读取到neon寄存器中;
如图2所示,5×5高斯平滑算法对应的权重分布,可以看出5行对应三种系数,需要将这三种系数先读取到neon寄存器中,避免重复读取。
步骤S3:将一预设的待乘值读取到neon寄存器中并向量化;
如图3所示,对除运算也做个优化,变成先乘再移位操作(sum=sum/52-->sum=sum*78>>12),所以也需要将78这个值也先读取到neon寄存器中并做向量化,考虑到8bit数据乘以系数之后可能溢出,这里需要做16bit向量化。注:/52是因为5x5矩阵的权重和为52,具体通过如下代码实现:
步骤S4:按行读取待计算点及其邻近域数据;
步骤S5:对待计算点及邻近域数据进行计算时,先乘以待乘值再进行移位操作。
在本实施例中,由于每个点计算所要用到的5X5的数据分别来自不连续的5行,所以至少需要读取5次数据,这里考虑到neon的寄存器个数,选择每行每次读取24byte。具体通过如下代码实现:
如图4所示,每次读取都可以计算出20个点;
使用的d8,d11,d14,d17,d20可以计算出图4中标注1的四个点,计算结果如图5存放再d24中,计算过程如下:
经过简单的寄存器拼接处理,可以将d8,d11,d14,d17,d20中的数据变成如图6所示,计算过程如下:
通过同样的处理,可以将图6中的4个数据放在d25,再将d24,d25(q12)一起存入内存,具体如下:
"vmovn.u16 d24,q12 \n\t"
"vst1.u8 {d24},[%0]! \n\t"
d9,d10,d12,d13,d15,d16,d18,d19,d21,d22,可以经过上述同样的步骤,最终将结果存放至内存中。这里因为neon寄存器紧张,故将20个结果分三次store,分别为:1,2存一次;3,4存一次;4,5存一次。
如图7所示,每次读取5行各24个数据可以算出20个点,即每次算20个点需要取5次数据,存3次数据。
在实际应用中,所述方法还包括以下步骤:将不需要参与计算的数据权值设成0,计算同行的下一个数据,只需将权值数据滚动一下即可。具体如下实现:
每个neon 64bit寄存器可以存储8个8bit数据,但是5x5 neon优化每行只需要5个8bit数据进行计算,由于源数据有5行,所以这里避免操作源数据,采取在权值数据上做手脚,也即不需要参与计算的数据权值设成0,如下:
unsigned char shift_5x5[32]={1,1,2,
1,2,4,
2,4,8,
1,2,4,
1,1,2,
0,0,0,
0,0,0,
0,0,0};
计算同行的下一个数据,只需将权值数据滚动一下,如下:
{0,0,0,
1,1,2,
1,2,4,
2,4,8,
1,2,4,
1,1,2,
0,0,0,
0,0,0}。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本领域技术的技术人员在本发明公开的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种适用于高斯平滑的NEON优化方法,其特征在于,所述方法包括以下步骤:
执行高斯平滑算法;
将每个点的权值系数读取到neon寄存器中;
将一预设的待乘值读取到neon寄存器中并向量化;
按行读取待计算点及其邻近域数据;
对待计算点及邻近域数据进行计算时,先乘以待乘值再进行移位操作。
2.根据权利要求1所述的适用于高斯平滑的NEON优化方法,其特征在于,所述高斯平滑算法为5×5高斯平滑算法,是以待计算点及其邻近域共计25个点的Y分量值分别乘上相应的权值后相加,再平均后得出待计算点最终结果。
3.根据权利要求2所述的适用于高斯平滑的NEON优化方法,其特征在于,所述5×5高斯平滑算法的待乘值设为78,需要先将78读取到寄存器中并做向量化。
4.根据权利要求3所述的适用于高斯平滑的NEON优化方法,其特征在于,所述向量化为16位向量化。
5.根据权利要求3所述的适用于高斯平滑的NEON优化方法,其特征在于,所述对待计算点及邻近域数据进行计算时,先乘以待乘值再进行移位操作包括:将sum=sum/52转换为sum=sum*78>>12。
6.根据权利要求2所述的适用于高斯平滑的NEON优化方法,其特征在于,所述按行读取待计算点及其邻近域数据包括:至少需要读取5次数据,考虑到neon的寄存器个数,选择每行每次读取24字节。
7.根据权利要求6所述的适用于高斯平滑的NEON优化方法,其特征在于,每次读取数据可以计算出20个点。
8.根据权利要求1至7中任一所述的适用于高斯平滑的NEON优化方法,其特征在于,所述方法包括以下步骤:进行寄存器拼接处理,并将结果存放至内存中。
9.根据权利要求8所述的适用于高斯平滑的NEON优化方法,其特征在于,所述将结果存放至内存中包括:基于neon寄存器,需将结果分多次存储。
10.根据权利要求1所述的适用于高斯平滑的NEON优化方法,其特征在于,所述方法包括以下步骤:将不需要参与计算的数据权值设成0,计算同行的下一个数据,只需将权值数据滚动一下即可。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210067301.0A CN114511477A (zh) | 2022-01-20 | 2022-01-20 | 一种适用于高斯平滑的neon优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210067301.0A CN114511477A (zh) | 2022-01-20 | 2022-01-20 | 一种适用于高斯平滑的neon优化方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114511477A true CN114511477A (zh) | 2022-05-17 |
Family
ID=81550326
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210067301.0A Pending CN114511477A (zh) | 2022-01-20 | 2022-01-20 | 一种适用于高斯平滑的neon优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114511477A (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105046637A (zh) * | 2015-07-31 | 2015-11-11 | 深圳市哈工大交通电子技术有限公司 | 基于 OmapL138芯片的光流跟踪实现方法 |
WO2017202244A1 (zh) * | 2016-05-26 | 2017-11-30 | 深圳市中兴微电子技术有限公司 | 一种图像增强方法和装置、计算机存储介质 |
CN108663707A (zh) * | 2018-04-02 | 2018-10-16 | 成都理工大学 | 一种多次双向s-k平滑处理系统及方法 |
CN109919962A (zh) * | 2019-02-27 | 2019-06-21 | 山东超越数控电子股份有限公司 | 一种基于Zynq实现边缘检测算法加速的方法 |
CN113282947A (zh) * | 2021-07-21 | 2021-08-20 | 杭州安恒信息技术股份有限公司 | 一种基于sm4算法的数据加密方法、装置及计算机平台 |
-
2022
- 2022-01-20 CN CN202210067301.0A patent/CN114511477A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105046637A (zh) * | 2015-07-31 | 2015-11-11 | 深圳市哈工大交通电子技术有限公司 | 基于 OmapL138芯片的光流跟踪实现方法 |
WO2017202244A1 (zh) * | 2016-05-26 | 2017-11-30 | 深圳市中兴微电子技术有限公司 | 一种图像增强方法和装置、计算机存储介质 |
CN108663707A (zh) * | 2018-04-02 | 2018-10-16 | 成都理工大学 | 一种多次双向s-k平滑处理系统及方法 |
CN109919962A (zh) * | 2019-02-27 | 2019-06-21 | 山东超越数控电子股份有限公司 | 一种基于Zynq实现边缘检测算法加速的方法 |
CN113282947A (zh) * | 2021-07-21 | 2021-08-20 | 杭州安恒信息技术股份有限公司 | 一种基于sm4算法的数据加密方法、装置及计算机平台 |
Non-Patent Citations (3)
Title |
---|
吴进等: "机器视觉中边缘检测算法的SDSoC加速实现", 《计算机工程与应用》 * |
张赫龙: "基于ARM NEON与RenderScript 的图像处理算法研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
汤达等: "光学图像高斯平滑滤波的DSP优化", 《激光与红外》 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11531540B2 (en) | Processing apparatus and processing method with dynamically configurable operation bit width | |
US11507350B2 (en) | Processing apparatus and processing method | |
CN109032669B (zh) | 神经网络处理装置及其执行向量最小值指令的方法 | |
CN101253493B (zh) | 在图形处理单元上训练卷积神经网络 | |
Asano et al. | Performance comparison of FPGA, GPU and CPU in image processing | |
TWI690896B (zh) | 影像處理器、由其執行之方法、及非暫態機器可讀儲存媒體 | |
CN107633297B (zh) | 一种基于并行快速fir滤波器算法的卷积神经网络硬件加速器 | |
EP0518462B1 (en) | Filtering system and operation method for very high-speed image processing | |
CN113012068B (zh) | 图像去噪方法、装置、电子设备及计算机可读存储介质 | |
CN118742918A (zh) | 用于高效单图像超分辨率的高频注意力网络的方法和系统 | |
CN115578258A (zh) | 图像处理方法、装置、设备及存储介质 | |
US11915338B2 (en) | Loading apparatus and method for convolution with stride or dilation of 2 | |
CN114511477A (zh) | 一种适用于高斯平滑的neon优化方法 | |
CN111797985B (zh) | 一种基于gpu的卷积运算内存访问优化方法 | |
Ibrahim et al. | Gaussian Blur through Parallel Computing. | |
US9898805B2 (en) | Method for efficient median filtering | |
US10460189B2 (en) | Method and apparatus for determining summation of pixel characteristics for rectangular region of digital image avoiding non-aligned loads using multiple copies of input data | |
CN108198128B (zh) | 一种alpha通道边界腐蚀的方法及装置 | |
JP2814860B2 (ja) | 画像拡大縮小装置 | |
CN116740399A (zh) | 异源图像匹配模型的训练方法、匹配方法及介质 | |
CN113344768A (zh) | 一种图像矩阵卷积的实现方法、计算设备及储存介质 | |
CN112418417A (zh) | 基于simd技术的卷积神经网络加速装置及方法 | |
CN110807479A (zh) | 一种基于Kmeans算法的神经网络卷积计算加速方法 | |
CN110134813A (zh) | 图像检索方法、图像检索装置及终端设备 | |
CN114692847B (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20220517 |
|
RJ01 | Rejection of invention patent application after publication |