CN112308759A - 一种均值滤波方法及装置 - Google Patents
一种均值滤波方法及装置 Download PDFInfo
- Publication number
- CN112308759A CN112308759A CN202011225864.5A CN202011225864A CN112308759A CN 112308759 A CN112308759 A CN 112308759A CN 202011225864 A CN202011225864 A CN 202011225864A CN 112308759 A CN112308759 A CN 112308759A
- Authority
- CN
- China
- Prior art keywords
- value
- data
- filtered
- target register
- mean
- 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
- 238000001914 filtration Methods 0.000 title claims abstract description 81
- 238000000034 method Methods 0.000 title claims abstract description 45
- 230000008569 process Effects 0.000 description 13
- 238000012935 Averaging Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000007123 defense Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 239000011435 rock Substances 0.000 description 1
Images
Classifications
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T5/00—Image enhancement or restoration
- G06T5/90—Dynamic range modification of images or parts thereof
- G06T5/92—Dynamic range modification of images or parts thereof based on global image properties
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20024—Filtering details
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Image Processing (AREA)
Abstract
本申请公开了一种均值滤波方法及装置,该方法包括:基于SETUP指令从存储单元中读取待滤波数据,其中,所述SETUP指令为预设编译器生成的指令;确定所述待滤波数据的均值,将所述均值写入第一目标寄存器中,并将第二目标寄存器的值置为第一预设值;判断所述第二目标寄存器的值是否为所述第一预设值;如果所述第二目标寄存器的值为所述第一预设值,则读取所述第一目标寄存器中的值作为所述待滤波数据的均值并将所述待滤波数据的均值写入到内存中,以实现对所述待滤波数据的均值滤波,且将所述第一目标寄存器的值置为第二预设值。这样能够提高均值滤波的性能。
Description
技术领域
本申请涉及图像处理技术领域,特别涉及一种均值滤波方法以及装置。
背景技术
传统的处理器主要指Intel与ARM两大阵营,在PC(Personal Computer,个人计算机)、服务器等传统领域,Intel处理器处于绝对垄断地位,在移动平台和嵌入式领域,ARM处于核心定位,市场占用率非常高。随着国际竞争越来越激烈,各行业对于国产处理器的要求越来越紧迫,RISC-V也即RISC Five,意思是第五代精简指令处理器,是一种全新的指令集架构,并且开源可以被任何学术机构或商业组织自由使用。
现在RISC-V处理器在图像处理领域的应用也越来越广泛,均值滤波也称为线性滤波,其采用的主要方法为邻域平均法,线性滤波的基本原理是用均值代替原图像中的各个像素值。
目前,主要是采用在CPU(central processing unit,中央处理器)上运行软件的方式进行均值滤波的,这样滤波性能完全取决于CPU的性能和软件的算法优化,然而随着CPU性能逼近极限,算法也没法再继续优化的情况下,均值滤波的效率被极大限制。因此如何提升均值滤波的性能是本领域技术人员要解决的问题。
发明内容
有鉴于此,本申请的目的在于提供一种均值滤波方法及装置,能够提高均值滤波的性能。其具体方案如下:
第一方面,本申请公开了一种均值滤波方法,应用于预设的RISC-V协处理器中,包括:
基于SETUP指令从存储单元中读取待滤波数据,其中,所述SETUP指令为预设编译器生成的指令;
确定所述待滤波数据的均值,将所述均值写入第一目标寄存器中,并将第二目标寄存器的值置为第一预设值;
判断所述第二目标寄存器的值是否为所述第一预设值;
如果所述第二目标寄存器的值为所述第一预设值,则读取所述第一目标寄存器中的值作为所述待滤波数据的均值并将所述待滤波数据的均值写入到内存中,以实现对所述待滤波数据的均值滤波,且将所述第一目标寄存器的值置为第二预设值。
可选地,所述基于SETUP指令从存储单元中读取待滤波数据,包括:
基于SETUP指令中的滤波尺寸和待滤波数据在存储单元中的首地址从所述存储单元中读取所述待滤波数据,其中,所述滤波尺寸为正整数且为奇数。
可选地,所述基于SETUP指令从存储单元中读取待滤波数据之后,还包括:
将所述第二目标寄存器的值置为所述第二预设值。
可选地,所述确定所述待滤波数据的均值,将所述均值写入第一目标寄存器中,并将第二目标寄存器的值置为第一预设值,包括:
确定所述待滤波数据中各个数据的累加值,其中,所述待滤波数据中的数据个数为所述滤波尺寸的平方;
将所述累加值和所述待滤波数据中的数据个数之间的比值确定为所述待滤波数据的均值;
将所述均值写入第一目标寄存器中,将第二目标寄存器的值置为1;
相应地,将所述第一目标寄存器的值置为第二预设值,包括:
将所述第一目标寄存器的值置为0。
可选地,所述将所述累加值和所述待滤波数据中的数据个数之间的比值确定为所述待滤波数据的均值的过程中,还包括:
如果所述累加值和所述待滤波数据中的数据个数之间的比值不为整数,则将所述累加值和所述待滤波数据中的数据个数之间的比值取整作为所述待滤波数据的均值。
第二方面,本申请公开了一种均值滤波装置,应用于RISC-V协处理器,包括:
SETUP指令执行模块,用于基于SETUP指令从存储单元中读取待滤波数据,其中,所述SETUP指令为预设编译器生成的指令;
AVGCUL指令执行模块,用于确定所述待滤波数据的均值,将所述均值写入第一目标寄存器中,并将第二目标寄存器的值置为第一预设值;
AVGFLAG指令执行模块,用于判断所述第二目标寄存器的值是否为所述第一预设值;
AVGRD指令执行模块,用于在所述第二目标寄存器的值为所述第一预设值,则读取所述第一目标寄存器中的值作为所述待滤波数据的均值并将所述待滤波数据的均值写入到内存中,以实现对所述待滤波数据的均值滤波;
AVGCLR指令执行模块,用于在所述待滤波数据的均值写入到内存中之后,将所述第一目标寄存器的值置为第二预设值。
可选地,所述SETUP指令执行模块,用于:
基于SETUP指令中的滤波尺寸和待滤波数据在存储单元中的首地址从所述存储单元中读取所述待滤波数据,其中,所述滤波尺寸为正整数且为奇数。
可选地,所述SETUP指令执行模块,还用于:
将所述第二目标寄存器的值置为所述第二预设值。
可选地,所述AVGCUL指令执行模块,用于:
确定所述待滤波数据中各个数据的累加值,其中,所述待滤波数据中的数据个数为所述滤波尺寸的平方;
将所述累加值和所述待滤波数据中的数据个数之间的比值确定为所述待滤波数据的均值;
将所述均值写入第一目标寄存器中,将第二目标寄存器的值置为1;
相应地,AVGCLR指令执行模块,用于:
将所述第一目标寄存器的值置为0。
可选地,所述述AVGCUL指令执行模块,用于:
如果所述累加值和所述待滤波数据中的数据个数之间的比值不为整数,则将所述累加值和所述待滤波数据中的数据个数之间的比值取整作为所述待滤波数据的均值。
可见,本申请应用于RISC-V协处理器中,先基于SETUP指令从存储单元中读取待滤波数据,其中,所述SETUP指令为预设编译器生成的指令,然后再确定所述待滤波数据的均值,将所述均值写入第一目标寄存器中,并将第二目标寄存器的值置为第一预设值,并将判断所述第二目标寄存器的值是否为所述第一预设值,如果所述第二目标寄存器的值为所述第一预设值,则读取所述第一目标寄存器中的值作为所述待滤波数据的均值并将所述待滤波数据的均值写入到内存中,以实现对所述待滤波数据的均值滤波,且将所述第一目标寄存器的值置为第二预设值。这样由于RISC-V具有容易扩展指令的特性,使用RISC-V协处理器来实现均值滤波,有利于提升均值滤波的性能,提高数据处理效率。且实现均值滤波是采用指令在CPU层面实现的,极大的加快了均值滤波的处理速度,满足实时滤波的要求。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请公开的一种均值滤波方法流程图;
图2为本申请公开的一种均值滤波装置结构示意图;
图3为本申请公开的一种RISC-V协处理器设备结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
目前,主要是采用在CPU(central processing unit,中央处理器)上运行软件的方式进行均值滤波的,这样滤波性能完全取决于CPU的性能和软件的算法优化,然而随着CPU性能逼近极限,算法也没法再继续优化的情况下,均值滤波的效率被极大限制。有鉴于此,本申请提出了一种均值滤波方法,能够提升均值滤波的性能。
参见图1所示,本申请实施例公开了一种均值滤波方法,应用于预设的RISC-V协处理器中,该方法包括:
步骤S11:基于SETUP指令从存储单元中读取待滤波数据,其中,所述SETUP指令为预设编译器生成的指令。
在具体的实施过程中,所述RISC-V协处理器与RISC-V主处理器中的EXU(executeunit,执行单元),LSU(Load/Store unit,存储单元)以及WB(write back,写回)之间可以通过为ROCC(Rocket Custom Coprocesser)接口进行交互。RISC-V协处理器通过WB可以对第一目标寄存器以及第二目标寄存器进行写回操作,其中,所述第一目标寄存器和所述第二目标寄存器可以选取RISC-V主处理器中的通用寄存器。
在实际应用中,均值滤波对应的软件程序被编译器编译之后生成SETUP指令,所述SETUP指令可以携带均值滤波处理的相关参数信息,其中,所述SETUP指令中携带的信息包括滤波尺寸以及待滤波数据在所述存储单元中的首地址,所述滤波尺寸可以用N表示,N为正整数且为奇数。由于所述SETUP指令为自主设计的指令,所以需要相应对所述编译器进行修改,以便所述编译器可以编译出所述RISC-V协处理器对应的指令。
其中,所述基于SETUP指令从存储单元中读取待滤波数据,包括:基于SETUP指令中的滤波尺寸和待滤波数据在存储单元中的首地址从所述存储单元中读取所述待滤波数据,其中,所述滤波尺寸为正整数且为奇数。也即,从所述SETUP指令中可以获取到待滤波数据在存储单元中的首地址,然后根据所述SETUP指令中的滤波尺寸便可以确定出需要读取的待滤波数据个数,所以便可以从所述首地址开始读取出对应数量个数据便是待滤波数据。其中,所述待滤波数据的数据个数为N*N个。
在基于SETUP指令从存储单元中读取待滤波数据之后,还包括:将第二目标寄存器的值置为所述第二预设值。其中,所述第二预设值可以为0,也即,将所述第二目标寄存器的值置为0。需要先将所述第二目标寄存器中的值置为0是为了保证后面通过判断所述第二目标寄存器中的数据是否为第一预设值,来判断待滤波数据的均值是否确定完毕的正确性。
步骤S12:确定所述待滤波数据的均值,将所述均值写入第一目标寄存器中,并将第二目标寄存器的值置为第一预设值。
在读取到所述待滤波数据之后,还需要确定所述待滤波数据的均值,以及将所述均值写入第一目标寄存器中,并将第二目标寄存器的值置为第一预设值。
具体的,可以确定所述待滤波数据中各个数据的累加值,其中,所述待滤波数据中的数据个数为所述滤波尺寸的平方;然后将所述累加值和所述待滤波数据中的数据个数之间的比值确定为所述待滤波数据的均值,并将所述均值写入第一目标寄存器中,将第二目标寄存器的值置为1。当所述第一预设值为1时,所述第二预设值可以为前述的0。也即,相应地,将所述第一目标寄存器的值置为第二预设值,包括:将所述第一目标寄存器的值置为0。
在将所述累加值和所述待滤波数据中的数据个数之间的比值确定为所述待滤波数据的均值的过程中,还包括:如果所述累加值和所述待滤波数据中的数据个数之间的比值不为整数,则将所述累加值和所述待滤波数据中的数据个数之间的比值取整作为所述待滤波数据的均值。
也即,在将所述累加值和所述待滤波数据中的数据个数之间的比值确定为所述待滤波数据的均值的过程中,通常会遇到比值不为整数的情况,这时可以将所述比值取最接近的整数作为待滤波数据的均值。
在实际应用中,可以通过执行预设的AVGCUL指令来实现前述的确定所述待滤波数据的均值,将所述均值写入第一目标寄存器中,并将第二目标寄存器的值置为第一预设值的步骤。
步骤S13:判断所述第二目标寄存器的值是否为所述第一预设值。
由于在确定出所述待滤波数据对应的均值并将所述均值写回到所述第一目标寄存器中之后,还需要将所述第二目标寄存器的值置为第一预设值,所以需要读取所述第二目标寄存器中的值,以判断所述第二目标寄存器中的值是否为第一预设值。当所述第一预设值为1时,判断所述第二目标寄存器中的值是否为第一预设值便是判断所述第二目标寄存器中的值是否为1。
在实际应用中,可以通过执行预设的AVGFLAG指令,以完成判断所述第二目标寄存器的值是否为所述第一预设值为1的步骤。
步骤S14:如果所述第二目标寄存器的值为所述第一预设值,则读取所述第一目标寄存器中的值作为所述待滤波数据的均值并将所述待滤波数据的均值写入到内存中,以实现对所述待滤波数据的均值滤波,且将所述第一目标寄存器的值置为第二预设值。
当所述第二目标寄存器的值为所述第一预设值时,表示计算得到所述待滤波数据对应的均值,并将所述均值写回到了第一目标寄存器中,所以便可以读取所述第一目标寄存器中的值作为所述待滤波数据的均值并将所述待滤波数据的均值写入到内存中,以实现对所述待滤波数据的均值滤波,且将所述第一目标寄存器的值置为第二预设值,以便准备下一次均值滤波操作。如果所述第二目标寄存器的值不为所述第一预设值,则可以返回执行所述判断所述第二目标寄存器的值是否为所述第一预设值的步骤。
在实际应用中,可以执行预设的AVGRD指令,以完成读取所述第一目标寄存器中的值作为所述待滤波数据的均值并将所述待滤波数据的均值写入到内存中,以实现对所述待滤波数据的均值滤波的步骤,并执行预设的AVGCLR指令,以完成前述的将所述第一目标寄存器的值置为第二预设值的步骤。
在本申请中,可以预先设置SETUP、AVGCUL、ACGFLAG、AVGRD、AVGCLR5条指令以完成前述的各个步骤。
参见表一所示,为一种指令格式的具体实施方式,为32位的RISC-V指令编码格式。
表一
funct7 | rs2 | rs1 | xd | xs1 | xs2 | rd | opcode |
其中,opcode[6:0],根据opcode编码表,可以决定是custom0-3中的哪一组指令类型,在本申请中,opcode可以指明使用custom0指令组,其他实施方式中,也可以根据需要进行设定和调整。
rd[4:0],表示目标寄存器。
xs1,xs2,xd均是1bit,分别表示该指令是否需要读取第一源寄存器rs1和第二源寄存器rs2及写回数据到寄存器中。其值为1,表示需要。其值为0,表示不需要。
rs1[4:0],表示第一源寄存器1的操作数。
rs2[4:0],表示第二源寄存器2的操作数。其中,所述第一源寄存器和所述第二源寄存器可以选取RISC-V主处理器中的通用寄存器。
funct7[6:0],表示额外的编码空间,因为一个custom指令组(0-3)对应最多128条扩展指令,所以可以将funct7[6:0]作为扩展字段使用,支持更多的指令。
除上表一中所示的指令格式为,指令的具体格式也可以根据实际需要进行设定,能够实现本申请的目的即可,在此不做具体限定。
SETUP:用于指定均值滤波的尺寸N,并传递均值滤波数据的首地址,同时置位第二目标寄存器2的值为0。其中,opcode指明使用Custom0指令组。xd位的值为1,表示此指令需要写0至目标寄存器2。xs1位的值为1,表示此指令需要读取操作数rs1。操作数rs1的值为N*N个均值滤波数据的首地址。xs2位的值为1,表示此指令需要读取操作数rs2,操作数rs2的值表示均值滤波尺寸N。funct7的值为0,该值编码SETUP指令。
AVGCUL:用于对滤波数据进行取均值操作,并第一目标寄存器1返回计算的均值,以及将第二目标寄存器置为1。其中,opcode指明使用Custom0指令组。xd位的值为1,表示此指令需要写回结果至第一目标寄存器1。xs1位的值1,表示此指令需要读取操作数rs1,操作数rs1的值为N^2个均值滤波数据的首地址。xs2位的值为0,表示此指令不需要读取操作数rs2。funct7的值为1,该值编码AVGCUL指令。
AVGFLAG:用于读取第二目标寄存器2的值,确定是否完成滤波。其中,opcode指明使用Custom0指令组。xd位的值为0,表示此指令不需要写回结果。xs1位的值为1,表示此指令需要读取操作数rs1。操作数rs1的值为目标寄存器2的地址。xs2位的值为0,表示此指令不需要读取操作数rs2。funct7的值为2,该值编码AVGRD指令。
AVGRD:用于读取第一目标寄存器1的值,确定是否完成滤波,并将滤波结果会写到内存。其中,opcode指明使用Custom0指令组。xd位的值为0,表示此指令不需要写回结果。xs1位的值为1,表示此指令需要读取操作数rs1。操作数rs1的值为目标寄存器1的地址。xs2位的值为0,表示此指令不需要读取操作数rs2。funct7的值为3,该值编码AVGRD指令。此时,rs1[4:0](代表的一个CPU通用寄存器)的值作为是内存中存储均值滤波结果的内存地址。
AVGCLR:用于将第一目标寄存器1的值写为0。opcode指明使用Custom0指令组。xd位的值为1,表示此指令需要写回结果。xs1位的值为1,表示此指令需要读取操作数rs1。操作数rs1的值为目标寄存器1的地址。xs2位的值为0,表示此指令不需要读取操作数rs2。funct7的值为4,该值编码AVGCLR指令。
可见,本申请应用于RISC-V协处理器中,先基于SETUP指令从存储单元中读取待滤波数据,其中,所述SETUP指令为预设编译器生成的指令,然后再确定所述待滤波数据的均值,将所述均值写入第一目标寄存器中,并将第二目标寄存器的值置为第一预设值,并将判断所述第二目标寄存器的值是否为所述第一预设值,如果所述第二目标寄存器的值为所述第一预设值,则读取所述第一目标寄存器中的值作为所述待滤波数据的均值并将所述待滤波数据的均值写入到内存中,以实现对所述待滤波数据的均值滤波,且将所述第一目标寄存器的值置为第二预设值。这样由于RISC-V具有容易扩展指令的特性,使用RISC-V协处理器来实现均值滤波,有利于提升均值滤波的性能,提高数据处理效率。且实现均值滤波是采用指令在CPU层面实现的,极大的加快了均值滤波的处理速度,满足实时滤波的要求。此外RISC-V具有开源特性,所以带有均值滤波功能的RISC-V协处理器的RISC-V主处理器具有自主安全可控的优势,随着RISC-V在图像处理领域的应用越来越广泛,且对图像处理速度的要求越来越高,本申请中的均值滤波方法在涉密领域,如安防,国防,或者是智慧城市、边缘计算等领域,均具有广泛的应用前景。
参见图2所示,本申请实施例公开了一种均值滤波装置,应用于RISC-V协处理器,包括:
SETUP指令执行模块11,用于基于SETUP指令从存储单元中读取待滤波数据,其中,所述SETUP指令为预设编译器生成的指令;
AVGCUL指令执行模块12,用于确定所述待滤波数据的均值,将所述均值写入第一目标寄存器中,并将第二目标寄存器的值置为第一预设值;
AVGFLAG指令执行模块13,用于判断所述第二目标寄存器的值是否为所述第一预设值;
AVGRD指令执行模块14,用于在所述第二目标寄存器的值为所述第一预设值,则读取所述第一目标寄存器中的值作为所述待滤波数据的均值并将所述待滤波数据的均值写入到内存中,以实现对所述待滤波数据的均值滤波;
AVGCLR指令执行模块15,用于在所述待滤波数据的均值写入到内存中之后,将所述第一目标寄存器的值置为第二预设值。
可见,本申请应用于RISC-V协处理器中,先基于SETUP指令从存储单元中读取待滤波数据,其中,所述SETUP指令为预设编译器生成的指令,然后再确定所述待滤波数据的均值,将所述均值写入第一目标寄存器中,并将第二目标寄存器的值置为第一预设值,并将判断所述第二目标寄存器的值是否为所述第一预设值,如果所述第二目标寄存器的值为所述第一预设值,则读取所述第一目标寄存器中的值作为所述待滤波数据的均值并将所述待滤波数据的均值写入到内存中,以实现对所述待滤波数据的均值滤波,且将所述第一目标寄存器的值置为第二预设值。这样由于RISC-V具有容易扩展指令的特性,使用RISC-V协处理器来实现均值滤波,有利于提升均值滤波的性能,提高数据处理效率。且实现均值滤波是采用指令在CPU层面实现的,极大的加快了均值滤波的处理速度,满足实时滤波的要求。此外RISC-V具有开源特性,所以带有均值滤波功能的RISC-V协处理器的RISC-V主处理器具有自主安全可控的优势,随着RISC-V在图像处理领域的应用越来越广泛,且对图像处理速度的要求越来越高,本申请中的均值滤波方法在涉密领域,如安防,国防,或者是智慧城市、边缘计算等领域,均具有广泛的应用前景。
在一些具体的实施例中,所述SETUP指令执行模块11,用于:
基于SETUP指令中的滤波尺寸和待滤波数据在存储单元中的首地址从所述存储单元中读取所述待滤波数据,其中,所述滤波尺寸为正整数且为奇数。
在一些具体的实施例中,SETUP指令执行模块11,还用于:
将所述第二目标寄存器的值置为所述第二预设值。
在一些具体的实施例中,所述AVGCUL指令执行模块12,用于:
确定所述待滤波数据中各个数据的累加值,其中,所述待滤波数据中的数据个数为所述滤波尺寸的平方;
将所述累加值和所述待滤波数据中的数据个数之间的比值确定为所述待滤波数据的均值;
将所述均值写入第一目标寄存器中,将第二目标寄存器的值置为1;
相应地,AVGCLR指令执行模块15,用于:
将所述第一目标寄存器的值置为0。
在一些具体的实施例中,所述述AVGCUL指令执行模块,用于:
如果所述累加值和所述待滤波数据中的数据个数之间的比值不为整数,则将所述累加值和所述待滤波数据中的数据个数之间的比值取整作为所述待滤波数据的均值。
在具体的实施过程中,所述SETUP指令执行模块11,还用于:将所述第二目标寄存器的值置为所述第二预设值的过程中,具体可以为SETUP指令执行模块11调用WB写回子模块将所述第二目标寄存器的值置为所述第二预设值。
在具体的实施过程中,所述AVGCUL指令执行模块12,用于将第二目标寄存器的值置为第一预设值的过程中,具体可以为AVGCUL指令执行模块12调用WB写回子模块将第二目标寄存器的值置为第一预设值。
在具体的实施过程中,所述AVGCLR指令执行模块15,用于将所述第一目标寄存器的值置为第二预设值的过程中,具体可以为AVGCLR指令执行模块15调用WB写回子模块将第一目标寄存器的值置为第二预设值。
且所述AVGCUL指令执行模块12可以具体包括累加器和取整子模块,其中,累加器用于确定所述待滤波数据中各个数据的累加值。取整子模块用于将所述累加值和所述待滤波数据中的数据个数之间的比值确定为所述待滤波数据的均值。
上述各个指令执行模块具体可以通过所述RISC-V协处理器中的控制子模块进行相应的操作。所以所述RISC-V协处理器的结构可以参见图3所示,包括控制子模块、累加器以及取整子模块。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
最后,还需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或者操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得一系列包含其他要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本申请所提供的一种均值滤波方法以及装置进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种均值滤波方法,其特征在于,应用于预设的RISC-V协处理器中,包括:
基于SETUP指令从存储单元中读取待滤波数据,其中,所述SETUP指令为预设编译器生成的指令;
确定所述待滤波数据的均值,将所述均值写入第一目标寄存器中,并将第二目标寄存器的值置为第一预设值;
判断所述第二目标寄存器的值是否为所述第一预设值;
如果所述第二目标寄存器的值为所述第一预设值,则读取所述第一目标寄存器中的值作为所述待滤波数据的均值并将所述待滤波数据的均值写入到内存中,以实现对所述待滤波数据的均值滤波,且将所述第一目标寄存器的值置为第二预设值。
2.根据权利要求1所述的均值滤波方法,其特征在于,所述基于SETUP指令从存储单元中读取待滤波数据,包括:
基于SETUP指令中的滤波尺寸和待滤波数据在存储单元中的首地址从所述存储单元中读取所述待滤波数据,其中,所述滤波尺寸为正整数且为奇数。
3.根据权利要求1所述的均值滤波方法,其特征在于,所述基于SETUP指令从存储单元中读取待滤波数据之后,还包括:
将所述第二目标寄存器的值置为所述第二预设值。
4.根据权利要求2所述的均值滤波方法,其特征在于,所述确定所述待滤波数据的均值,将所述均值写入第一目标寄存器中,并将第二目标寄存器的值置为第一预设值,包括:
确定所述待滤波数据中各个数据的累加值,其中,所述待滤波数据中的数据个数为所述滤波尺寸的平方;
将所述累加值和所述待滤波数据中的数据个数之间的比值确定为所述待滤波数据的均值;
将所述均值写入第一目标寄存器中,将第二目标寄存器的值置为1;
相应地,将所述第一目标寄存器的值置为第二预设值,包括:
将所述第一目标寄存器的值置为0。
5.根据权利要求4所述的均值滤波方法,其特征在于,所述将所述累加值和所述待滤波数据中的数据个数之间的比值确定为所述待滤波数据的均值的过程中,还包括:
如果所述累加值和所述待滤波数据中的数据个数之间的比值不为整数,则将所述累加值和所述待滤波数据中的数据个数之间的比值取整作为所述待滤波数据的均值。
6.一种均值滤波装置,其特征在于,应用于RISC-V协处理器,包括:
SETUP指令执行模块,用于基于SETUP指令从存储单元中读取待滤波数据,其中,所述SETUP指令为预设编译器生成的指令;
AVGCUL指令执行模块,用于确定所述待滤波数据的均值,将所述均值写入第一目标寄存器中,并将第二目标寄存器的值置为第一预设值;
AVGFLAG指令执行模块,用于判断所述第二目标寄存器的值是否为所述第一预设值;
AVGRD指令执行模块,用于在所述第二目标寄存器的值为所述第一预设值,则读取所述第一目标寄存器中的值作为所述待滤波数据的均值并将所述待滤波数据的均值写入到内存中,以实现对所述待滤波数据的均值滤波;
AVGCLR指令执行模块,用于在所述待滤波数据的均值写入到内存中之后,将所述第一目标寄存器的值置为第二预设值。
7.根据权利要求6所述的均值滤波装置,其特征在于,所述SETUP指令执行模块,用于:
基于SETUP指令中的滤波尺寸和待滤波数据在存储单元中的首地址从所述存储单元中读取所述待滤波数据,其中,所述滤波尺寸为正整数且为奇数。
8.根据权利要求6所述的均值滤波装置,其特征在于,所述SETUP指令执行模块,还用于:
将所述第二目标寄存器的值置为所述第二预设值。
9.根据权利要求7所述的均值滤波装置,其特征在于,所述AVGCUL指令执行模块,用于:
确定所述待滤波数据中各个数据的累加值,其中,所述待滤波数据中的数据个数为所述滤波尺寸的平方;
将所述累加值和所述待滤波数据中的数据个数之间的比值确定为所述待滤波数据的均值;
将所述均值写入第一目标寄存器中,将第二目标寄存器的值置为1;
相应地,AVGCLR指令执行模块,用于:
将所述第一目标寄存器的值置为0。
10.根据权利要求9所述的均值滤波装置,其特征在于,所述述AVGCUL指令执行模块,用于:
如果所述累加值和所述待滤波数据中的数据个数之间的比值不为整数,则将所述累加值和所述待滤波数据中的数据个数之间的比值取整作为所述待滤波数据的均值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011225864.5A CN112308759A (zh) | 2020-11-05 | 2020-11-05 | 一种均值滤波方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011225864.5A CN112308759A (zh) | 2020-11-05 | 2020-11-05 | 一种均值滤波方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112308759A true CN112308759A (zh) | 2021-02-02 |
Family
ID=74326186
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011225864.5A Pending CN112308759A (zh) | 2020-11-05 | 2020-11-05 | 一种均值滤波方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112308759A (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109918130A (zh) * | 2019-01-24 | 2019-06-21 | 中山大学 | 一种具有快速数据旁路结构的四级流水线risc-v处理器 |
CN111861920A (zh) * | 2020-07-16 | 2020-10-30 | 浪潮(北京)电子信息产业有限公司 | 一种中值滤波方法以及系统 |
-
2020
- 2020-11-05 CN CN202011225864.5A patent/CN112308759A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109918130A (zh) * | 2019-01-24 | 2019-06-21 | 中山大学 | 一种具有快速数据旁路结构的四级流水线risc-v处理器 |
CN111861920A (zh) * | 2020-07-16 | 2020-10-30 | 浪潮(北京)电子信息产业有限公司 | 一种中值滤波方法以及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109857460B (zh) | 基于risc-v架构的矩阵卷积计算方法、接口、协处理器及系统 | |
US9003381B2 (en) | Context-specific optimized code | |
CN102483703B (zh) | 计算机线程至异构资源的映射 | |
Tullsen et al. | Storageless value prediction using prior register values | |
US10261796B2 (en) | Processor and method for executing in-memory copy instructions indicating on-chip or off-chip memory | |
CN102662690A (zh) | 应用程序启动方法和装置 | |
US7324113B1 (en) | Perspective correction computation optimization | |
CN111581570B (zh) | 一种页面布局方法及计算设备 | |
CN109597647B (zh) | 数据处理方法及设备 | |
CN115129265B (zh) | 独立冗余磁盘阵列分块缓存方法、装置、设备及可读介质 | |
WO2013096629A1 (en) | Providing hint register storage for a processor | |
CN111208933A (zh) | 数据访问的方法、装置、设备和存储介质 | |
CN102662799B (zh) | 数据备份的方法、服务器及热备份系统 | |
CN114461404B (zh) | 一种进程迁移方法、计算设备及可读存储介质 | |
CN112308759A (zh) | 一种均值滤波方法及装置 | |
CN110515656B (zh) | 一种casp指令的执行方法、微处理器及计算机设备 | |
CN111861920B (zh) | 一种中值滤波方法以及系统 | |
JP3863544B1 (ja) | 演算処理装置及び演算処理方法 | |
CN113792237B (zh) | 卡片式布局的优化方法、装置、存储介质及处理器 | |
CN103176813A (zh) | 于休眠机制的方法及其计算机系统 | |
US9395962B2 (en) | Apparatus and method for executing external operations in prologue or epilogue of a software-pipelined loop | |
CN115576606A (zh) | 实现矩阵转置乘的方法、协处理器、服务器及存储介质 | |
CN112912743A (zh) | 算力的控制方法、装置、设备及存储介质 | |
CN102193776B (zh) | 跳转指令的处理方法及微控制器 | |
CN101216755A (zh) | Risc处理器及其浮点寄存器的非对齐访存方法 |
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: 20210202 |