本发明涉及图像处理技术,尤其涉及一种图像处理方法及装置。
背景技术
android(一种基于linux的自由及开放源代码的操作系统)应用程序需要执行的图像处理任务是一种典型的计算密集型任务,需要耗费较长的时间,是android应用程序性能的瓶颈问题。
现有的android图像处理加速方案主要是采用gpu技术,但是gpu在制造完成后仅支持一些原生的指令,如果计算任务出现gpu指令不支持的操作就不得不使用cpu计算,造成计算效率的下降。
随着fpga技术的发展,已经出现了很多将fpga与cpu集成的硬件产品。fpga(field-programmablegatearray,现场可编程门阵列)是一种可重构器件,可以根据实际应用需要改变内部电路逻辑,同时作为一种硬件计算方式,fpga可以进行并行计算,因此,fpga可以达到计算速度很高。同时,图像处理任务往往适合于进行并行计算,因此,如何针对现场可编程门阵列fpga与中央处理器cpu集成架构的系统提高图像处理任务的速度是亟待解决的问题。
技术实现要素:
本发明的主要目的在于提供一种图像处理方法和装置,针对现场可编程门阵列fpga与中央处理器cpu集成架构的系统,提高了图像处理速度。
为了解决上述技术问题,本发明提供了一种图像处理方法,应用于基于现场可编程门阵列fpga与中央处理器cpu集成架构的系统,所述方法包括:
将待处理的图像源数据发送至fpga图像处理知识产权核ip核;
所述fpga图像处理ip核对所接收到的图像源数据执行图像处理操作,并将获得的图像处理结果数据返回至应用单元。
进一步地,在所述将待处理的图像源数据发送至fpga图像处理知识产权核ip核之前,上述方法还包括:
根据所述待处理的图像源数据生成比特流文件,利用所述比特流文件对所述fpga图像处理ip核进行配置;
对所述fpga图像处理ip核配置完成后,根据相关参数创建所述fpga图像处理ip核的驱动单元。
进一步地,所述将待处理的图像源数据发送至fpga图像处理知识产权核ip核,包括:
将所述待处理的图像源数据通过中间层单元发送至所述fpga图像处理ip核的驱动单元;
所述fpga图像处理ip核的驱动单元将所述图像源数据发送至所述fpga图像处理ip核。
进一步地,所述将获得的图像处理结果数据返回至应用单元,包括:
所述fpga图像处理ip核通过所述fpga图像处理ip核的驱动单元将所述图像处理结果数据返回至所述中间层单元;
所述中间层单元将获得的图像处理结果数据返回至所述应用单元。
进一步地,所述将所述待处理的图像源数据通过中间层单元发送至所述fpga图像处理ip核的驱动单元,包括:
所述中间层单元通过jni方式将所述图像源数据发送至所述fpga图像处理ip核的驱动单元。
为了解决上述问题,本发明还提供了一种图像处理装置,应用于基于fpga与cpu集成架构的系统,所述装置包括:
发送模块,用于将待处理的图像源数据发送至fpga图像处理知识产权核ip核;
fpga图像处理ip核,用于对所接收到的图像源数据执行图像处理操作,并将获得的图像处理结果数据返回至应用单元。
进一步,所述装置还包括:
配置模块,用于根据所述待处理的图像源数据生成比特流文件,利用所述比特流文件对所述fpga图像处理ip核进行配置;
创建模块,用于fpga图像处理ip核对所述fpga图像处理ip核配置完成后,根据相关参数创建所述fpga图像处理ip核的驱动单元。
进一步地,所述将待处理的图像源数据发送至fpga图像处理知识产权核ip核,包括:
将所述待处理的图像源数据通过中间层单元发送至所述fpga图像处理ip核的驱动单元;
所述fpga图像处理ip核的驱动单元将所述图像源数据发送至所述fpga图像处理ip核。
进一步地,所述将获得的图像处理结果数据返回至应用单元,包括:
所述fpga图像处理ip核通过所述fpga图像处理ip核的驱动单元将所述图像处理结果数据返回至所述中间层单元;
所述中间层单元将获得的图像处理结果数据返回至所述应用单元。
进一步地,所述将所述待处理的图像源数据通过中间层单元发送至所述fpga图像处理ip核的驱动单元,包括:
所述中间层单元通过jni方式将所述图像源数据发送至所述fpga图像处理ip核的驱动单元。
本发明提出了一种图像处理方法,应用于基于现场可编程门阵列fpga与中央处理器cpu集成架构的系统,方法包括:将待处理的图像源数据发送至fpga图像处理知识产权核ip核;所述fpga图像处理ip核对所接收到的图像源数据执行图像处理操作,并将获得的图像处理结果数据返回至应用单元。通过本发明的技术方案,实现了针对现场可编程门阵列fpga与中央处理器cpu集成架构的系统提高图像处理任务的速度。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。
图1为本发明实施例基于fpga与cpu集成架构的系统示意图;
图2为本发明实施例图像处理方法的流程图;
图3为本发明实施例图像处理装置的示意图。
图4为本发明实施例ip核接口电路的逻辑设计示意图;
图5为本发明实施例fpga图像处理ip核的驱动单元的处理流程图;
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
在本发明的技术方案中,关键的术语定义如下:
fpga(fieldprogrammablegatearray):现场可编程门阵列
gpu(graphicsprocessingunit):图形处理器
ipcore(intellectualpropertycore):知识产权核
dma(directmemoryaccess):直接内存存取
jni:javanativeinterface的缩写
mm2s(memorytoperipheral):存储到外部设备
s2mm(peripheraltomemory):外部设备到存储
本发明的技术方案是针对现场可编程门阵列fpga与中央处理器cpu集成架构的系统,图1为本发明实施例的fpga与cpu集成架构的系统示意图;
fpga与cpu集成架构的系统中分为硬件部分和软件部分:
硬件部分具体包括:
1)fpga图像处理ip核。使用传统的硬件语言开发fpga图像处理ip核,对于软件开发人员提出了较高的要求;fpga图像处理ip核的开发还可以使用较新的高级综合工具,例如xilinx公司的hls工具,可以将c语言等高级语言描述的算法转为fpga图像处理ip核。其中,hls是xilinx公司推出的最新一代fpga设计工具。高级综合工具的核心是调度(schedule)和绑定(binding)或分配(allocation)。调度用来确定操作将发生在哪个时钟周期。一方面,调度考虑控制、数据流和用户指令;另一方面,分配所约束的资源。绑定用于确定每个操作所使用的库单元。绑定考虑了元件的延迟和用户的命令。hls主要有以下功能:
(1)从c语言到rtl级实现,关键在于综合约束。
(2)从c语言中提取出控制和数据流。
(3)从默认和用户定义的命令,实现设计。
2)ip核硬件接口电路。ip核硬件接口电路的设计开发是使fpga图像处理ip核能和任意图像处理ip核适配的通用接口电路,也就是表明在本系统中,通过ip核硬件接口电路可以实现fpga图像处理ip核与传统的基于cpu的处理系统之间交互数据。为了使fpga图像处理ip核能与外部交互数据,需要引入第三方的用于数据传输的ip核,例如:dma(directmemoryaccess,直接内存存取),从而可以实现内存和ip核之间进行数据传输。
软件部分具体包括:
1)fpga图像处理ip核的驱动单元
2)中间层单元
3)应用单元,android系统中的应用程序app(application,应用程序)包含图像处理任务,android应用程序对中间层单元进行调用,也就是说将图像处理的源数据发送至中间层单元,再从中间层单元获取图像处理的结果数据,最后利用结果数据得到最终图像处理结果。
图2是本发明实施例的图像处理方法的流程图,根据该流程图,本实施例的图像处理方法,应用于基于现场可编程门阵列fpga与中央处理器cpu集成架构的系统,所述方法包括:
步骤200:将待处理的图像源数据发送至fpga图像处理ip核;
在本实施例中,基于fpga与cpu集成架构的系统,采用应用单元将待处理的图像源数据发送至fpga图像处理ip核,fpga图像处理ip核执行图像处理操作。
其中,fpga(fieldprogrammablegatearray,现场可编程门阵列)是一种典型的可重构器件,这种器件能够根据实际应用的需要改变内部电路逻辑,是一种自适应的逻辑器件,具有类似软件的高灵活性,开发周期短的优点。同时作为一种硬件计算方式,使用fpga在运行时实质上进行了并行计算,相比传统的cpu的计算方式有更快速的优势。
基于fpga与cpu集成架构的系统,可选地,可采用xilinx公司中的zynq系列,zynq就是把armcpu和fpga在同一个芯片上进行了集成。
在本实施例的一些可选的实现方式中,在所述将待处理的图像源数据发送至fpga图像处理ip核之前,根据待处理的图像源数据生成比特流文件,利用该比特流文件对所述fpga图像处理ip核进行配置;对fpga图像处理ip核配置完成后,根据相关参数创建fpga图像处理ip核的驱动单元。
其中,根据所述将待处理的生成比特流文件中,比特流(bittorrent)是一种内容分发协议。
在生成比特流文件后,利用该比特流文件对所述fpga图像处理ip核单元进行配置;在可实现方式中,该配置文件的生成可以通过软件实现,可选地,可应用的软件,例如:xilinxvivado。
对所述fpga图像处理ip核单元配置完成后,根据相关参数创建所述fpga图像处理ip核的驱动单元。该驱动单元是通过驱动程序实现的,也就是通过该驱动单元实现了对硬件部分的访问。驱动单元介于硬件和应用程序之间,承上启下。向下通过寄存器读写控制硬件,向上为用户态程序提供服务。
在本实施例的一些可选的实现方式中,所述将待处理的图像源数据发送至fpga图像处理知识产权核ip核,所述方法包括:
将所述待处理的图像源数据通过中间层单元发送至所述fpga图像处理ip核的驱动单元;
所述fpga图像处理ip核的驱动单元将所述图像源数据发送至所述fpga图像处理ip核。
其中,中间层单元是通过中间层程序实现的。中间层单元位于应用单元和ip核驱动单元之间。具体实现方式是中间层程序是应用程序和驱动程序之间的部分。中间层程序向下将fpgaip核驱动程序提供的功能进行封装,向上为应用程序提供使用fpgaip核的接口。
在本实施例的一些可选的实现方式中,所述将所述待处理的图像源数据通过中间层单元发送至所述fpga图像处理ip核的驱动单元,包括:
所述中间层单元通过jni方式将所述图像源数据发送至所述fpga图像处理ip核的驱动单元。
中间层程序既可以使用简单的jni方式,也可以实现驱动程序对应的完整的android硬件抽象层、系统库、应用程序框架。其中,jni是javanativeinterface的缩写,它提供了若干的api实现了java和其他语言的通信(主要是c&c++)对,在本发明中,linux驱动程序是采用c语言实现的,而android应用程序是采用java语言实现的,所以应用单元和ip核驱动单元之间的调用可以使用jni完成。
本实施例的一个具体示例如下,使用图像处理ip核进行一次图像处理在fpga图像处理ip核的驱动单元内的具体实现的处理流程如下所示:
在fpga图像处理ip核的驱动单元接收到中间层传输的图像源数据后,向驱动程序写数据,分配发送数据缓冲区,写入数据缓冲区地址,写入数据缓冲区长度,轮询直到写入完成;通过轮询当写入数据完成后,分配接收数据缓冲区,写入数据缓冲区地址,写入数据缓冲区长度,轮询直到接收完成,从驱动程序读数据,结束,实现了将数据发送给fpga图像处理ip核。
步骤201:所述fpga图像处理ip核对所接收到的图像源数据执行图像处理操作,并将获得的图像处理结果数据返回至应用单元。
在本实施例中,fpga图像处理ip核对所接收到的图像源数据执行图像处理操作,通过一系列的处理过程,获得最终的图像处理结果,并将该图像处理结果数据返回至应用单元。通过利用fpga,以及fpga并行计算的特性提高图像处理的速度。
在本实施例的一些可选的实现方式中,所述将获得的图像处理结果数据返回至应用单元,包括:
fpga图像处理ip核单元通过该fpga图像处理ip核的驱动单元将所述图像处理结果数据返回至所述中间层单元;
所述中间层单元将获得的图像处理结果数据返回至所述应用单元。
可选地,该中间层单元将获得的图像处理结果数据返回至所述应用单元,包括:所述中间层单元通过jni方式将获得的图像处理结果数据返回至所述应用单元。
需要说明的是,上述内容仅是本发明的具体实施例,与上述实施例相同或相似的实施例,以及上述实施例的变体都在本发明的保护范围之内。
另外,本申请提供了一种图像处理装置的一个实施例,该装置实施例与图2所示的方法实施例对应,该装置具体可以应用于各种电子设备中。
如图3所示,本实施例的图像处理装置,应用于基于现场可编程门阵列fpga与中央处理器cpu集成架构的系统,所述装置包括发送模块和fpga图像处理ip核(发送模块和fpga图像处理ip核在附图3中未示出):
发送模块用于将待处理的图像源数据发送至fpga图像处理知识产权核ip核;
fpga图像处理ip核用于对所接收到的图像源数据执行图像处理操作,并将获得的图像处理结果数据返回至应用单元。。
进一步,所述装置还包括配置模块和创建模块(配置模块和创建模块在附图3中未示出):
配置模块,用于根据所述图像源数据生成比特流文件,利用所述比特流文件对所述fpga图像处理ip核进行配置;
创建模块,用于fpga图像处理ip核对所述fpga图像处理ip核配置完成后,根据相关参数创建所述fpga图像处理ip核的驱动单元。
进一步地,发送模块将待处理的图像源数据发送至fpga图像处理ip核,包括:
发送模块将待处理的图像源数据发送至fpga图像处理知识产权核ip核,包括:
发送模块将待处理的图像源数据通过中间层单元发送至fpga图像处理ip核的驱动单元;
fpga图像处理ip核的驱动单元将图像源数据发送至所述fpga图像处理ip核。
进一步地,fpga图像处理ip核将获得的图像处理结果数据返回至应用单元,包括:
fpga图像处理ip核单元通过fpga图像处理ip核的驱动单元将该图像处理结果数据返回至中间层单元;
中间层单元将获得的图像处理结果数据返回至应用单元。
进一步地,将该图像源数据通过中间层单元发送至fpga图像处理ip核的驱动单元,包括:
该中间层单元通过jni方式将该图像源数据发送至所述fpga图像处理ip核的驱动单元。
进一步地,所述中间层单元将获得的图像处理结果数据返回至所述应用单元,包括:所述中间层单元通过jni方式将获得的图像处理结果数据返回至所述应用单元。
本实施例的一个具体示例如下:
本申请的具体实施例是基于fpga与cpu集成架构的系统,该系统中分为硬件部分和软件部分:
硬件部分具体包括如下:
1)fpga图像处理ip核。使用传统的硬件语言开发fpga图像处理ip核,但是对于软件开发人员提出了较高的要求;fpga图像处理ip核的开发还可使用高级综合工具,例如xilinx公司的hls工具,可以将c语言等高级语言描述的算法转为fpga图像处理ip核。其中,hls是xilinx公司推出的最新一代fpga设计工具。高级综合工具的核心是调度(schedule)和绑定(binding)或分配(allocation)。调度用来确定操作将发生在哪个时钟周期。一方面,调度考虑控制、数据流和用户指令;另一方面,分配所约束的资源。绑定用于确定每个操作所使用的库单元。绑定考虑了元件的延迟和用户的命令。hls主要有以下功能:
(1)从c语言到rtl级实现。关键在于综合约束。
(2)从c语言中提取出控制和数据流。
(3)从默认和用户定义的命令,实现设计。
2)ip核硬件接口电路。ip核硬件接口电路的设计开发是使fpga图像处理ip核可以与任意图像处理ip核适配的通用接口电路。为了使fpga图像处理ip核实现与外部交互数据,需要引入第三方的用于数据传输的ip核,例如:dma(directmemoryaccess,直接内存存取),从而可以实现内存和ip核之间进行数据传输。从而在内存和fpga图像处理ip核之间进行数据传输。还需要引入与内存互联的第三方ip核mem_intercon,以及用于对外部设备发送控制信号的ip核的第三方ip核如periph。
ip核硬件接口电路的逻辑设计如附图4所示,在附图4中,mm2s表示从内存到fpga图像处理ip核的数据传输方向,s2mm表示从fpga图像处理ip核到内存的数据传输方向。
硬件部分具体执行图像数据处理的流程如下:
1)待处理的图像源数据通过mem_intercon转发至dma的mm2s通道;
2)dma通过mm2s通道将待处理的图像源数据转发至fpga图像处理ip核的输入数据端口;
3)fpga图像处理ip核在接收到待处理的图像源数据后,开始执行图像处理;
4)fpga图像处理ip核在处理完图像源数据后,获得处理结果数据并将处理结果数据转发至dma的s2mm通道;
5)dma将处理结果数据通过mem_intercon发送至处理系统。
此外,处理系统通过periship核将控制信号发送至图像处理ip核和dmaip核。
软件部分具体包括如下:
软件部分的android应用程序app(application,应用程序)包含图像处理任务,android应用单元对中间层单元进行调用,也就是将待处理的图像源数据发送至中间层单元,再从中间层单元获取图像处理的结果数据,最后利用结果数据得到最终图像处理结果。具体的应用单元能够将图像处理任务传输到fpga图像处理ip核上执行图像处理,从而实现对android图像处理任务的加速,软件部分对硬件部分的fpga的配置和对fpga中图像处理ip核的调用是通过ip核的驱动单元来完成。
fpga图像处理ip核的驱动单元的具体功能包括两个方面:对fpga图像处理的配置和对fpga图像处理ip核的调用。对fpga图像处理的配置需要fpga自身的驱动单元,驱动单元的具体实现方式可以是通过由硬件生产厂商提供驱动程序实现;例如:如果采用xilinx公司的zynq芯片,该驱动程序由xilinx公司提供。对fpga图像处理ip核的调用需要使用ip核对应的驱动单元,可实现的方式可以选择采用研发人员设计的驱动程序。具体的驱动程序的实现原理是利用fpga厂商提供的一系列对于fpgaip核控制寄存器的读写来实现。
对所述fpga图像处理ip核单元配置完成后,根据相关参数创建所述fpga图像处理ip核的驱动单元。该驱动单元是通过驱动程序实现的,也就是通过该驱动单元实现了对硬件部分的访问。驱动单元介于硬件和应用程序之间,承上启下。向下通过寄存器读写控制硬件,向上为用户态程序提供服务。
在本示例中,驱动单元的工作主要包括:对fpgaip核的配置,从用户态程序获取图像源数据,向fpgaip核发送图像源数据,从fpgaip核获取图像处理结果数据,向用户态程序发送图像处理结果数据。linux为了把内核程序和用户程序隔离,分成了两个层次,也就是用户态和内核态,用户态和内核态使用不同的内存空间。应用程序app就属于用户态程序,驱动程序就属于内核态程序。由于驱动程序和用户程序属于使用不同的内存空间,因此,需要一个单独的步骤实现在二者之间进行传递数据。
由于android使用linux内核,因此,本技术方案采用的驱动单元为linux驱动程序进行实现,驱动单元的主要模块包括如下:
初始化模块:
初始化模块中利用驱动程序的初始化工作,包括ip核对应的io内存空间的分配,dma的io内存空间分配,设备号分配,class结构体创建,设备节点的创建。除了对ip核驱动程序本身的初始化,还需要对dma初始化,包括创建dma的发送通道和接收通道,通道缓存空间的建立。
卸载模块:
对驱动初始化过程中分配的资源进行释放,包括删除设备节点,回收class结构体,回收设备号,分别回收图像处理ip核和dma使用的io内存空间。
读写模块:
linux的内存空间分为内核区和用户区,驱动程序是运行在内核区的程序,而应用程序是运行在用户区的程序,它们有各自独立的内存空间。读写模块完成内核区和用户区之间的数据交互。
io控制模块:
io控制模块实现驱动程序工作时具体的业务逻辑。该模块包括两个部分,初始化部分和业务逻辑部分。初始化部分使能图像处理ip核的全局中断。业务逻辑部分实现使用ip核进行图像处理时的业务逻辑,具体过程包括:分配发送数据缓冲区,向寄存器写入发送数据缓冲区地址,向寄存器写入发送数据的长度,此时开始数据传输。通过对ip核状态寄存器的空闲位和中断检测位轮询,直到发送数据完成。使能图像处理ip核相应的寄存器位,开始图像处理。分配接收数据缓冲区,向ip核控制寄存器写入接收数据缓冲区地址,向ip核控制写入接收数据长度,此时开始接收处理结果数据。轮询状态寄存器的空闲位和中断检测位,直到接收数据完成。
基于上述驱动单元的结构设计,使用图像处理ip核进行一次图像处理在fpga图像处理ip核的驱动单元内的具体实现的处理流程如附图5所示:
在fpga图像处理ip核的驱动单元接收到中间层传输的图像源数据后,向驱动程序写数据,分配发送数据缓冲区,写入数据缓冲区地址,写入数据缓冲区长度,轮询直到写入完成;通过轮询当写入数据完成后,分配接收数据缓冲区,写入数据缓冲区地址,写入数据缓冲区长度,轮询直到接收完成,从驱动程序读数据,结束,实现了将数据发送给fpga图像处理ip核。
利用本发明的技术方案实现图像数据的处理流程的具体示例如下:
图像数据的处理基于fpga与cpu集成架构的系统,该系统包含软件部分和硬件部分;其中,软件部分包括:fpga的ip核驱动单元、中间层单元、android应用单元;硬件部分包括:fpga图像处理ip核,图像处理ip核的接口电路。
本示例的图像处理的具体执行步骤如下:
步骤1android应用单元app根据所述图像源数据生成比特流文件,通过fpga驱动单元配置fpga;
步骤2android应用程序将待处理的图像源数据发送至中间层单元;
步骤3中间层单元将图像源数据发送至图像处理ip核驱动单元;
步骤4ip核驱动单元将图像源数据发送至fpga图像处理ip核;
步骤5fpga图像处理ip核执行图像处理任务,将图像处理的结果数据发送至ip核驱动单元;
步骤6ip核驱动单元将图像处理的结果数据发送至中间层单元;
步骤7中间层单元将图像处理的结果数据发送至android应用单元;
步骤8android应用单元接收到图像处理的结果数据并生成图像处理的结果。
本示例提出了一种合理的使用fpga对android图像处理任务进行加速的技术方案,提高android图像处理的效率。
本示例是一种基于fpga的android图像处理优化方案,基于fpga与cpu集成架构的系统中,通过fpga图像处理ip核来处理android应用app中的图像处理任务,有效的提高了android图像处理的效率。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例先后顺序仅仅为了描述,不代表实施例的优劣。任何与本发明设计思路相同或相似的方案,以及与本发明实施例相同或相似的方案和本发明实施例的变体都在本发明的保护范围之内。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。