CN108399595A - 一种图像处理算法的实现装置及方法 - Google Patents
一种图像处理算法的实现装置及方法 Download PDFInfo
- Publication number
- CN108399595A CN108399595A CN201710067540.5A CN201710067540A CN108399595A CN 108399595 A CN108399595 A CN 108399595A CN 201710067540 A CN201710067540 A CN 201710067540A CN 108399595 A CN108399595 A CN 108399595A
- Authority
- CN
- China
- Prior art keywords
- module
- memory
- algorithm
- operator
- pixel data
- 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
Classifications
-
- 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/15—Correlation function computation including computation of convolution operations
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Image Processing (AREA)
Abstract
本发明公开了一种图像处理算法的实现装置及方法,其中,所述装置包括:第一算子模块,用于对读取的第一像素数据按照第一算法进行运算,得到并输出第一运算结果至存储模块;第二算子模块,用于对读取的第二像素数据按照第二算法进行运算,得到并输出第二运算结果至存储模块;第三算子模块,用于对读取的第三像素数据按照第三算法进行运算,得到并输出第三运算结果至存储模块;接口模块,用于获取与图像处理指令相匹配的控制参数;处理模块,用于基于所述控制参数使能相应的算子模块;存储模块,用于存储不同算子模块运算出的运算结果。
Description
技术领域
本发明涉及嵌入式设备的实时智能视觉图像处理的计算机视觉领域,尤其涉及一种图像处理算法的实现装置及方法。
背景技术
随着计算机视觉领域的飞速发展,计算机视觉的图像处理已经不仅仅用于基本的图像显示系统中,已经广泛应用于智能系统的各个方面。对于新一代的智能系统特别是监控系统,要求能够做到对视频图像的特定智能处理。
OpenVX是计算机视觉应用和程序库的硬件加速API(Appilication ProgramingInterface,应用程序编程接口),用于加速图形及图像处理。同时,OpenVX是一种硬件加速层,通过高级库文件加速图形级视觉处理。
目前,传统的视频图像处理多采用处理器实现,然而,用软件处理的方式实现过程复杂,需要消耗带宽较多,处理效率远不能达到实时处理的要求。
发明内容
为解决上述技术问题,本发明实施例期望提供了一种图像处理算法的实现装置及方法,采用硬件实现基于OpenVX的图像处理算法,极大的降低CPU的压力,减少系统带宽,很大程度上提高处理的效率。
第一方面,本发明实施例提供了一种图像处理算法的实现装置,所述装置包括:
第一算子模块,用于对读取的第一像素数据按照第一算法进行运算,得到并输出第一运算结果至存储模块;
第二算子模块,用于对读取的第二像素数据按照第二算法进行运算,得到并输出第二运算结果至存储模块;
第三算子模块,用于对读取的第三像素数据按照第三算法进行运算,得到并输出第三运算结果至存储模块;
接口模块,用于获取与图像处理指令相匹配的控制参数;
处理模块,用于基于所述控制参数使能相应的算子模块;
存储模块,用于存储不同算子模块运算出的运算结果。
本发明实施例中,可选地,所述第一算子模块,具体用于根据第一配置信息读取第一像素数据;所述第二算子模块,具体用于根据第二配置信息读取第二像素数据;所述第三算子模块,具体用于根据第三配置信息读取第三像素数据。
本发明实施例中,可选地,所述处理模块,还用于:
检测所述存储模块的存储状态;
若所述存储状态表征所述存储模块的使用空间大于或等于预设阈值,通知当前工作的算子模块暂停读取像素数据。
本发明实施例中,可选地,所述处理模块还用于:
配置不同算子模块所需的参数寄存器;
将控制参数分发至对应的参数寄存器。
本发明实施例中,可选地,所述第一算子模块,包括:
第一配置单元,用于配置所述第一运算单元运算所需的第一配置参数;
第一控制单元,用于根据所述第一配置参数读取第一存储器中的第一像素数据;将第一像素根据从所述第一算法中选定的输入算法以及选定的与所述输入算法匹配的输出格式送入第一运算单元;
第一运算单元,用于根据选定的输入算法对所述第一像素数据进行图像处理运算,得到与所述选定的输入算法对应的第一运算结果,向所述第一控制单元返回所述第一运算结果;
所述第一控制单元,还用于将所述第一运算结果,按照与所述输入算法对应的输出方式输出至所述存储模块。
本发明实施例中,可选地,所述第二算子模块,包括:
第二控制单元,用于根据从所述第二算法中选定的输入算法,读取第一存储器中的第二像素数据,并将第二像素数据送入第二运算单元;
第二运算单元,用于根据所述输入算法对所述第二像素数据进行图像处理,得到与所述输入算法对应的第二运算结果,并向所述第二控制单元返回所述第二运算结果;
所述第二控制单元,还用于将所述第二运算结果按照与所述输入算法对应的输出方式输出至所述存储模块。
本发明实施例中,可选地,所述第二算子模块还包括:
第二存储器,用于存储映射(map)函数的映射方式、直方图(histogram)函数的计算中间结果;
所述第二控制单元,还用于:当确定执行map函数算法时,将从第一存储器读取的第二像素数据作为地址,读取第二存储器的LUT(显示查找表,Look-Up-Table)映射表,获得LUT数据;并将所述LUT数据输出至存储模块;
所述第二控制单元,还用于:当确定执行histogram函数算法时,将从第一存储器读取的第二像素数据作为地址,读取第二存储器的histogram数据;并将所述histogram数据发送至所述第二运算单元;
所述第二运算单元,还用于根据所述第二控制单元发送的histogram数据进行运算,输出histogram结果至第二存储器;
所述第二控制单元,还用于:将从第二存储器读取的histogram结果组成第二运算结果,输出至存储模块。
本发明实施例中,可选地,所述第二算子模块还包括:
与所述第二算子模块对应的寄存器,
所述第二运算单元,还用于:当确定执行求和(sum)函数算法时,分别从与所述第二算子模块对应的寄存器以及第一存储器中获取计算所需的数据;将通过sum函数算法计算得到的第二运算结果返回至所述第二控制单元;
所述第二控制单元,还用于:将所述第二运算结果写入与所述第二算子模块对应的寄存器。
本发明实施例中,可选地,所述第三算子模块,包括:
第三控制单元,用于根据从所述第三算法中选定的输入算法,读取第一存储器中的第三像素数据,并将第三像素数据送入第三运算单元;
第三运算单元,用于根据所述输入算法对所述第三像素数据进行图像处理,得到与所述输入算法对应的第三运算结果,并向所述第三控制单元返回所述第三运算结果;
所述第三控制单元,还用于将所述第三运算结果按照与所述输入算法对应的输出方式输出至所述存储模块。
本发明实施例中,可选地,所述第三算子模块还包括:
第三存储器,用于存储sad(Sum of Absolute Differences)函数的计算中间结果;
所述第三控制单元,还用于:当确定执行sad函数算法时,分别从第一存储器读取第三像素数据以及从第三存储器读取sad数据;并将所述第三像素数据以及所述sad数据发送至所述第三运算单元;
所述第三运算单元,还用于根据所述第三控制单元发送的所述第三像素数据以及所述sad数据进行运算,输出sad结果至第三存储器;
所述第三控制单元,还用于:将所述第三运算单元通过sad函数得到的最终运算结果作为第三运算结果,输出至存储模块。
本发明实施例中,可选地,所述第三算子模块还包括:
与所述第三算子模块对应的寄存器,
所述第三运算单元,还用于:当确定执行方差(varience)函数算法时,分别从与所述第三算子模块对应的寄存器及第一存储器中获取计算所需的数据;将通过varience函数算法计算得到的第三运算结果返回至所述第三控制单元;
所述第三控制单元,还用于:将所述第三运算结果写入与所述第三算子模块对应的寄存器。
第二方面,本发明实施例提供了一种图像处理算法的实现方法,所述方法包括:
获取与图像处理指令相匹配的控制参数;
基于所述控制参数使能相应的算子模块,由相应的算子模块按照相应的图像处理算法进行运算;
存储不同算子模块运算出的运算结果,并输出最终的图像处理结果;
其中,所述算子模块至少分为:
第一算子模块,用于对读取的第一像素数据按照第一算法进行运算,得到并输出第一运算结果至存储模块;
第二算子模块,用于对读取的第二像素数据按照第二算法进行运算,得到并输出第二运算结果至存储模块;
第三算子模块,用于对读取的第三像素数据按照第三算法进行运算,得到并输出第三运算结果至存储模块。
本发明实施例中,可选地,所述由相应的算子模块按照相应的图像处理算法进行运算,包括:
由所述第一算子模块根据第一配置信息读取第一像素数据;和/或
由所述第二算子模块根据第二配置信息读取第二像素数据;和/或
由所述第三算子模块根据第三配置信息读取第三像素数据。
本发明实施例中,可选地,所述基于所述控制参数使能相应的算子模块,还包括:
检测所述存储模块的存储状态;
若所述存储状态表征所述存储模块的使用空间大于或等于预设阈值,通知当前工作的算子模块暂停读取像素数据。
本发明实施例中,可选地,所述基于所述控制参数使能相应的算子模块之前,还包括:
配置不同算子模块所需的参数寄存器;
将控制参数分发至对应的参数寄存器。
本发明实施例中,可选地,当所述算子模块为第一算子模块时,所述由相应的算子模块按照相应的图像处理算法进行运算,包括:
配置运算所需的第一配置参数;
根据所述第一配置参数读取第一存储器中的第一像素数据;
根据从第一算法中选定的输入算法对所述第一像素数据进行图像处理运算,得到与所述选定的输入算法对应的第一运算结果;
将所述第一运算结果,按照与所述输入算法对应的输出方式输出至所述存储模块。
本发明实施例中,可选地,当所述算子模块为第二算子模块时,所述由相应的算子模块按照相应的图像处理算法进行运算,包括:
根据从第二算法中选定的输入算法,读取第一存储器中的第二像素数据;
根据所述输入算法对所述第二像素数据进行图像处理,得到与所述输入算法对应的第二运算结果;
将所述第二运算结果按照与所述输入算法对应的输出方式输出至所述存储模块。
本发明实施例中,可选地,所述方法还包括:
当确定执行map函数算法时,将从第一存储器读取的第二像素数据作为地址,读取第二存储器的LUT映射表,获得LUT数据;并将所述LUT数据输出至存储模块;
当确定执行histogram函数算法时,将从第一存储器读取的第二像素数据作为地址,读取第二存储器的histogram数据;根据所述histogram数据进行运算,输出histogram结果至第二存储器;将从第二存储器读取的histogram结果组成第二运算结果,输出至存储模块;
其中,第二存储器,用于存储map函数的映射方式以及histogram函数的计算中间结果。
本发明实施例中,可选地,所述方法还包括:
当确定执行sum函数算法时,分别从与所述第二算子模块对应的寄存器以及第一存储器中获取计算所需的数据;将通过sum函数算法计算得到的第二运算结果写入与所述第二算子模块对应的寄存器。
本发明实施例中,可选地,当所述算子模块为第三算子模块时,所述由相应的算子模块按照相应的图像处理算法进行运算,包括:
根据从第三算法中选定的输入算法,读取第一存储器中的第三像素数据;
根据所述输入算法对所述第三像素数据进行图像处理,得到与所述输入算法对应的第三运算结果;
将所述第三运算结果按照与所述输入算法对应的输出方式输出至所述存储模块。
本发明实施例中,可选地,所述方法还包括:
当确定执行sad函数算法时,根据从第一存储器读取的第三像素数据以及从第三存储器读取的sad数据进行运算,输出sad函数的计算中间结果至第三存储器;将通过sad函数得到的最终运算结果作为第三运算结果,输出至存储模块;
其中,第三存储器,用于存储sad函数的计算中间结果。
本发明实施例中,可选地所述方法还包括:
当确定执行varience函数算法时,分别从与所述第三算子模块对应的寄存器及第一存储器中获取计算所需的数据;将通过varience函数算法计算得到的第三运算结果写入与所述第三算子模块对应的寄存器。
本发明实施例的技术方案中,获取与图像处理指令相匹配的控制参数;基于所述控制参数使能相应的算子模块,由相应的算子模块按照相应的图像处理算法进行运算;存储不同算子模块运算出的运算结果,并输出最终的图像处理结果;其中,所述算子模块至少分为:第一算子模块,用于对读取的第一像素数据按照第一算法进行运算,得到并输出第一运算结果至存储模块;第二算子模块,用于对读取的第二像素数据按照第二算法进行运算,得到并输出第二运算结果至存储模块;第三算子模块,用于对读取的第三像素数据按照第三算法进行运算,得到并输出第三运算结果至存储模块。通过本发明实施例提出的技术方案,采用硬件实现基于OpenVX的图像处理算法,极大的降低CPU的压力,减少系统带宽,很大程度上提高处理的效率,从而解决图像处理算法由软件程序实现时编写复杂,带宽消耗高以及效率低等问题。
附图说明
图1为本发明实施例的一种图像处理算法的实现装置的组成结构示意图;
图2为本发明实施例的第一算子模块的一种组成结构示意图;
图3为本发明实施例的第二算子模块的一种组成结构示意图;
图4为本发明实施例的第三算子模块的一种组成结构示意图;
图5为本发明实施例的图像处理算法的实现装置的一种框架示意图;
图6为本发明实施例的一种图像处理算法的实现方法的流程示意图。
具体实施方式
为了能够更加详尽地了解本发明实施例的特点与技术内容,下面结合附图对本发明实施例的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本发明实施例。
实施例一
图1为本发明实施例的一种图像处理算法的实现装置的组成结构示意图,如图1所示,所述实现装置主要包括:第一算子模块10、第二算子模块20、第三算子模块30、存储模块40、接口模块50、处理模块60;其中,
所述第一算子模块10,用于对读取的第一像素数据按照第一算法进行运算,得到并输出第一运算结果至存储模块40;
所述第二算子模块20,用于对读取的第二像素数据按照第二算法进行运算,得到并输出第二运算结果至存储模块40;
所述第三算子模块30,用于对读取的第三像素数据按照第三算法进行运算,得到并输出第三运算结果至存储模块40;
所述存储模块40,用于存储不同算子模块运算出的运算结果;
所述接口模块50,用于获取与图像处理指令相匹配的控制参数;
所述处理模块60,用于基于所述控制参数使能相应的算子模块。
这里,所述图像处理指令是所述实现装置通过接口模块40接收的由用户输入的图像处理需求而生成的。
可选地,所述图像处理指令通过系统总线传输至所述接口模块40。
本实施例中,并不对如何生成所述图像处理指令进行限定,本发明实施例更关心的是接收到所述图像处理指令后,如何执行所述图像处理指令。
其中,所述控制参数包括但不限于下述参数信息:
分辨率、OpenVX的基本函数、是否要求错误反馈。
这里,所述错误反馈包括:核(kernel)运算错误、算法配置错误等。
在一具体实施方式中,所述第一算子模块10,具体用于根据第一配置信息读取第一像素数据;所述第二算子模块20,具体用于根据第二配置信息读取第二像素数据;所述第三算子模块30,具体用于根据第三配置信息读取第三像素数据。
这里,所述第一配置信息是与所述第一算子模块10相关的配置信息,所述第二配置信息是与所述第二算子模块20相关的配置信息,所述第三配置信息是与所述第三算子模块30相关的配置信息。
其中,第一算子模块10(简称算法核1),负责实现第一算法至少包括:
一次读取5×5、3×3个像素计算。
例如,按5×5、3×3卷积核实现的图像算法,包括:Filter、Sobel、Erode、Diade、Max、Min、Median函数运算。
其中,第二算子模块20(简称算法核2),负责实现第二算法至少包括:
一次读取8个16bit或者8bit像素计算;
例如,按行/像素运算的图像算法,包括:bk16to8、threshold、map、sum、histogram函数运算。
其中,第三算子模块30(简称算法核3),负责实现第三算法至少包括:
一次分别读取两帧图像的四个像素。
例如,按两帧运算的图像算法,包括:and、or、not、add、sub、sad、varience函数运算。
作为一种可选实施方式,所述处理模块60,还用于:
配置不同算子模块所需的参数寄存器;将控制参数分发至对应的参数寄存器。
其中,每一类算法的分类以及算法中需要的参数通过寄存器配置,可分类整理实现所需要的寄存器分配。
作为一种可选实施方式,所述处理模块60,还用于:
检测所述存储模块40的存储状态;
若所述存储状态表征所述存储模块40的使用空间大于或等于预设阈值,通知当前工作的算子模块暂停读取像素数据。
这里,所述预设阈值可根据实际情况进行选择设定。
如此,的那个所述存储模块40的存储空间的占用比例大于一定设定值时,由处理模块60通知各个算子模块暂停读取像素数据,能够防止因存储模块40的存储空间不足而导致的部分运算结果丢失的问题。
图2示出了所述第一算子模块10的一种组成结构示意图,如图2所示,所述第一算子模块10,包括:
第一配置单元11,用于配置所述第一运算单元13运算所需的第一配置参数;
第一控制单元12,用于根据所述第一配置参数读取第一存储器70中的第一像素数据;将第一像素根据从所述第一算法中选定的输入算法以及选定的与所述输入算法匹配的输出格式送入第一运算单元13;
第一运算单元13,用于根据选定的输入算法对所述第一像素数据进行图像处理运算,得到与所述选定的输入算法对应的第一运算结果,向所述第一控制单元12返回所述第一运算结果;
所述第一控制单元12,还用于将所述第一运算结果,按照与所述输入算法对应的输出方式输出至所述存储模块40。
其中,所述第一存储器70,用于存储原始像素数据。
这里,由第一算子模块10至少支持一次读取3×3或5×5个像素计算,因此,对于所述第一算子模块10所支持的第一算法所涉及的各个函数中,若选定的输入算法为:一次读取3×3个像素计算,那么,与所述选定的输入算法匹配的输出格式为按3×3个像素输出至第一运算单元13。若选定的输入算法为:一次读取5×5个像素计算,那么,与所述选定的输入算法匹配的输出格式为按5×5个像素输出至第一运算单元13。
例如,从第一算法中可供选定的输入算法,至少包括:filter_5x5,sobel_5x5,erode_3x3,erode_5x5,dilate_3x3,dilate_5x5,max_3x3,min_3x3,median_3x3。
这里,与所述输入算法对应的输出方式,需要按照所述存储模块40接受的位宽来确定。
例如,对于erode_3x3,erode_5x5来说,同样以输出的位宽为64bit来说,那么,它们的输出方式是不一样的。
图3示出了所述第二算子模块20的一种组成结构示意图,如图3所示,所述第二算子模块20,包括:
第二控制单元21,用于根据从所述第二算法中选定的输入算法,读取第一存储器70中的第二像素数据,并将第二像素数据送入第二运算单元22;
第二运算单元22,用于根据所述输入算法对所述第二像素数据进行图像处理,得到与所述输入算法对应的第二运算结果,并向所述第二控制单元21返回所述第二运算结果;
所述第二控制单元21,还用于将所述第二运算结果按照与所述输入算法对应的输出方式输出至所述存储模块40。
对于第二算子模块20来说,一旦输入算法选定,那么,与该输入算法对应的输出方式也固定。因此,输入算法与输出方式是一一对应的。
例如,从第二算法中可供选定的输入算法,至少包括:map8,map16,sum8,sum16,threshold8,threshold16,bk16to8,histogram。
进一步地,所述第二算子模块20还包括:
第二存储器23,用于存储map函数的映射方式、histogram函数的计算中间结果;
所述第二控制单元21,还用于:当确定执行map函数算法时,将从第一存储器读取的第二像素数据作为地址,读取第二存储器的LUT映射表,获得LUT数据;并将所述LUT数据输出至存储模块40;
所述第二控制单元21,还用于:当确定执行histogram函数算法时,将从第一存储器读取的第二像素数据作为地址,读取第二存储器的histogram数据;并将所述histogram数据发送至所述第二运算单元22;
所述第二运算单元22,还用于根据所述第二控制单元21发送的histogram数据进行运算,输出histogram结果至第二存储器23;
所述第二控制单元21,还用于:将从第二存储器23读取的histogram结果组成第二运算结果,输出至存储模块40。
进一步地,所述第二算子模块20还包括:
与所述第二算子模块20对应的寄存器24,
所述第二运算单元21,还用于:当确定执行sum函数算法时,分别从与所述第二算子模块20对应的寄存器24以及第一存储器70中获取计算所需的数据;将通过sum函数算法计算得到的第二运算结果返回至所述第二控制单元21;
所述第二控制单元21,还用于:将所述第二运算结果写入与所述第二算子模块对应的寄存器40。
图4示出了所述第三算子模块30的一种组成结构示意图,如图4所示,所述第三算子模块30,包括:
第三控制单元31,用于根据从所述第三算法中选定的输入算法,读取第一存储器中的第三像素数据,并将第三像素数据送入第三运算单元32;
第三运算单元32,用于根据所述输入算法对所述第三像素数据进行图像处理,得到与所述输入算法对应的第三运算结果,并向所述第三控制单元31返回所述第三运算结果;
所述第三控制单元31,还用于将所述第三运算结果按照与所述输入算法对应的输出方式输出至所述存储模块40。
对于第三算子模块30来说,一旦输入算法选定,那么,与该输入算法对应的输出方式也固定。因此,输入算法与输出方式是一一对应的。
例如,从第三算法中可供选定的输入算法,至少包括:and,or,xor,sub,add,sad,varience。
进一步地,所述第三算子模块30还包括:
第三存储器33,用于存储校正sad函数的计算中间结果;
所述第三控制单元31,还用于:当确定执行sad函数算法时,分别从第一存储器70读取第三像素数据作为地址,以及从第三存储器33读取sad数据;并将所述第三像素数据以及所述sad数据发送至所述第三运算单元32;
所述第三运算单元32,还用于根据所述第三控制单元31发送的所述第三像素数据以及所述sad数据进行运算,输出sad结果至第三存储器33;
所述第三控制单元31,还用于:将所述第三运算单元32通过sad函数得到的最终运算结果作为第三运算结果,输出至存储模块40。
进一步地,所述第三算子模块30还包括:
与所述第三算子模块对应的寄存器34,
所述第三运算单元31,还用于:当确定执行varience函数算法时,分别从与所述第三算子模块30对应的寄存器34以及第一存储器70中获取计算所需的数据;将通过varience函数算法计算得到的第三运算结果返回至所述第三控制单元31;
所述第三控制单元31,还用于:将所述第三运算结果写入与所述第三算子模块30对应的寄存器34。
本发明实施例的图像处理算法的实现装置至少具有以下特点:
1)能够分析OpenVX的基本函数库;
2)只保留整数运算,暂不实现浮点运算;或保留浮点运算;
3)将基本要实现的算法分为三大类,按图像算法访问像素的方式进行分类,其中,第一算子模块10一次读取5x5、3x3个像素计算;第二算子模块20一次读取8个16bit或者8bit像素计算;第三算子模块30一次分别读取两帧图像的四个像素;
4)每一类算法的分类以及算法中需要的参数通过寄存器配置,分类整理实现所需要的寄存器分配;
5)至少支持4种分辨率(720x576、640x480、352x288、176x144)的运算,对于sum和varience支持8*8~8m*8n任意block的运算,8像素对齐;这里,m、n均为大于1的正整数;
6)三类算法独立划分可并行实现;
7)支持错误反馈:kernel运算错误、算法配置错误等;
8)根据图像边缘检测的OpenVX图执行模型中的各个节点的相互依赖关系,将各处理节点一一执行,实现图像算法的流水线处理。
图5为本发明实施例的图像处理算法的实现装置的一种框架示意图,如图5所示,第一算子模块10、第二算子模块20、第三算子模块30均可从RAM1中读取像素数据,还可从并行的寄存器中读取各自对应的输入算法以及相应输入算法需要的参数;然后按照各自对应的输入算法对所读取的像素数据进行图像处理算法运算,并将各自的运算结果均存储到RAM2中,以供输出最终的运算结果。其中,第二算子模块20、第三算子模块30均配置有缓存器,如,与第二算子模块20对应的缓存器为RAM3,与第三算子模块30对应的缓存器为RAM4。
本发明实施例的技术方案中,提供了一种基于OpenVX的图像处理算法硬件实现装置,采用硬件加速器实现基本的图像处理算法,不仅可以加速基本函数实现,而且可以在架构上并行处理不同的图像处理,更高效的实现图像处理在各领域应用,特别是用于实时要求较高的监控系统。能够克服现有技术中存在的由软件程序实现OpenVX的图像处理算法时编写复杂、带宽高以及效率低的缺陷。
实施例二
基于上述实施例所述图像处理算法的实现装置,本发明实施例还提供了一种图像处理算法的实现方法的流程示意图,如图6所示,所述实现方法包括以下步骤:
步骤601:获取与图像处理指令相匹配的控制参数。
这里,所述图像处理指令是通过接口模块40接收的由用户输入的图像处理需求而生成的。
可选地,所述图像处理指令通过系统总线传输至所述接口模块40。
本实施例中,并不对如何生成所述图像处理指令进行限定,本发明实施例更关心的是接收到所述图像处理指令后,如何执行所述图像处理指令。
其中,所述控制参数包括但不限于下述参数信息:
分辨率、OpenVX的基本函数、是否要求错误反馈。
这里,所述错误反馈包括:核(kernel)运算错误、算法配置错误等。
步骤602:基于所述控制参数使能相应的算子模块,由相应的算子模块按照相应的图像处理算法进行运算。
作为一种实施方式,所述由相应的算子模块按照相应的图像处理算法进行运算,包括:
由所述第一算子模块10根据第一配置信息读取第一像素数据;和/或
由所述第二算子模块20根据第二配置信息读取第二像素数据;和/或
由所述第三算子模块30根据第三配置信息读取第三像素数据。
可选地,所述基于所述控制参数使能相应的算子模块,还包括:
检测所述存储模块40的存储状态;
若所述存储状态表征所述存储模块40的使用空间大于或等于预设阈值,通知当前工作的算子模块暂停读取像素数据。
进一步地,所述基于所述控制参数使能相应的算子模块之前,还包括:
配置不同算子模块所需的参数寄存器;
将控制参数分发至对应的参数寄存器。
作为一种可选实施方式,当所述算子模块为第一算子模块时,所述由相应的算子模块按照相应的图像处理算法进行运算,包括:
配置运算所需的第一配置参数;
根据所述第一配置参数读取第一存储器中的第一像素数据;
根据从第一算法中选定的输入算法对所述第一像素数据进行图像处理运算,得到与所述选定的输入算法对应的第一运算结果;
将所述第一运算结果,按照与所述输入算法对应的输出方式输出至所述存储模块。
作为一种可选实施方式,当所述算子模块为第二算子模块时,所述由相应的算子模块按照相应的图像处理算法进行运算,包括:
根据从第二算法中选定的输入算法,读取第一存储器中的第二像素数据;
根据所述输入算法对所述第二像素数据进行图像处理,得到与所述输入算法对应的第二运算结果;
将所述第二运算结果按照与所述输入算法对应的输出方式输出至所述存储模块。
进一步可选地,所述方法还包括:
当确定执行map函数算法时,将从第一存储器读取的第二像素数据作为地址,读取第二存储器的LUT映射表,获得LUT数据;并将所述LUT数据输出至存储模块;
当确定执行histogram函数算法时,将从第一存储器读取的第二像素数据作为地址,读取第二存储器的histogram数据;根据所述histogram数据进行运算,输出histogram结果至第二存储器;将从第二存储器读取的histogram结果组成第二运算结果,输出至存储模块;
其中,第二存储器,用于存储map函数的映射方式以及histogram函数的计算中间结果。
进一步可选地,所述方法还包括:
当确定执行sum函数算法时,分别从与所述第二算子模块对应的寄存器以及第一存储器中获取计算所需的数据;将通过sum函数算法计算得到的第二运算结果写入与所述第二算子模块对应的寄存器。
作为一种可选实施方式,当所述算子模块为第三算子模块时,所述由相应的算子模块按照相应的图像处理算法进行运算,包括:
根据从第三算法中选定的输入算法,读取第一存储器中的第三像素数据;
根据所述输入算法对所述第三像素数据进行图像处理,得到与所述输入算法对应的第三运算结果;
将所述第三运算结果按照与所述输入算法对应的输出方式输出至所述存储模块。
进一步可选地,所述方法还包括:
当确定执行sad函数算法时,根据从第一存储器读取的第三像素数据以及从第三存储器读取的sad数据进行运算,输出sad函数的计算中间结果至第三存储器;将通过sad函数得到的最终运算结果作为第三运算结果,输出至存储模块;
其中,第三存储器,用于存储sad函数的计算中间结果。
进一步可选地,所述方法还包括:
当确定执行varience函数算法时,分别从与所述第三算子模块对应的寄存器及第一存储器中获取计算所需的数据;将通过varience函数算法计算得到的第三运算结果写入与所述第三算子模块对应的寄存器。
步骤603:存储不同算子模块运算出的运算结果,并输出最终的图像处理结果。
需要说明的是,本发明实施例所述的分辨率可实现两种方式:
方式A:按固定要求实现固定的有限个分辨率。
方式B:可使用参数化实现任意分辨率,可通过输入参数的移位实现数据量的统计。
因此,方式B的好处是实现的电路面积不影响的情况下,支持更多的分辨率以便支持更多的算法及应用。
需要说明的是,本发明实施例所述的算法可实现两种方式:
方式C:实现如上所述的kernel算法,即第一算法模块10支持的第一算法、第二算法模块20支持的第二算法、第三算法模块30支持的第三算法;
方式D:可实现OpenVX的所有算法,即所有的图像基本函数。
因此,方式C的好处适应于特定的应用,去掉不使用的算法,可节省面积开销;方式D的好处是适用于所有的图像处理应用,可用于不同的图像处理及机器视觉领域的应用。
以上方案可灵活选择实现,选用哪种方案取决于实际应用。
采用本发明实施例所述方法,与现有技术相比,至少可并行实现3类图像处理算法,在图像处理整体并行度上取得了进步,同时可读取16个8bit像素,达到了加速图像处理核函数的效果,硬件实现加速了图像处理能力,相比软件降低了实现算法的复杂程度,能高效实现图像处理算法,从而更好地支持高效的图像处理需求。
本发明实施例所记载的技术方案之间,在不冲突的情况下,可以任意组合。
在本发明所提供的几个实施例中,应该理解到,所揭露的方法和智能设备,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本发明各实施例中的各功能单元可以全部集成在一个第二处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。
Claims (22)
1.一种图像处理算法的实现装置,其特征在于,所述装置包括:
第一算子模块,用于对读取的第一像素数据按照第一算法进行运算,得到并输出第一运算结果至存储模块;
第二算子模块,用于对读取的第二像素数据按照第二算法进行运算,得到并输出第二运算结果至存储模块;
第三算子模块,用于对读取的第三像素数据按照第三算法进行运算,得到并输出第三运算结果至存储模块;
接口模块,用于获取与图像处理指令相匹配的控制参数;
处理模块,用于基于所述控制参数使能相应的算子模块;
存储模块,用于存储不同算子模块运算出的运算结果。
2.根据权利要求1所述的装置,其特征在于,
所述第一算子模块,具体用于根据第一配置信息读取第一像素数据;
所述第二算子模块,具体用于根据第二配置信息读取第二像素数据;
所述第三算子模块,具体用于根据第三配置信息读取第三像素数据。
3.根据权利要求1所述的装置,其特征在于,所述处理模块,还用于:
检测所述存储模块的存储状态;
若所述存储状态表征所述存储模块的使用空间大于或等于预设阈值,通知当前工作的算子模块暂停读取像素数据。
4.根据权利要求1所述的装置,其特征在于,所述处理模块还用于:
配置不同算子模块所需的参数寄存器;
将控制参数分发至对应的参数寄存器。
5.根据权利要求1至4任一项所述的装置,其特征在于,所述第一算子模块,包括:
第一配置单元,用于配置所述第一运算单元运算所需的第一配置参数;
第一控制单元,用于根据所述第一配置参数读取第一存储器中的第一像素数据;将第一像素根据从所述第一算法中选定的输入算法以及选定的与所述输入算法匹配的输出格式送入第一运算单元;
第一运算单元,用于根据选定的输入算法对所述第一像素数据进行图像处理运算,得到与所述选定的输入算法对应的第一运算结果,向所述第一控制单元返回所述第一运算结果;
所述第一控制单元,还用于将所述第一运算结果,按照与所述输入算法对应的输出方式输出至所述存储模块。
6.根据权利要求1至4任一项所述的装置,其特征在于,所述第二算子模块,包括:
第二控制单元,用于根据从所述第二算法中选定的输入算法,读取第一存储器中的第二像素数据,并将第二像素数据送入第二运算单元;
第二运算单元,用于根据所述输入算法对所述第二像素数据进行图像处理,得到与所述输入算法对应的第二运算结果,并向所述第二控制单元返回所述第二运算结果;
所述第二控制单元,还用于将所述第二运算结果按照与所述输入算法对应的输出方式输出至所述存储模块。
7.根据权利要求6所述的装置,其特征在于,所述第二算子模块还包括:
第二存储器,用于存储映射map函数的映射方式、直方图histogram函数的计算中间结果;
所述第二控制单元,还用于:当确定执行map函数算法时,将从第一存储器读取的第二像素数据作为地址,读取第二存储器的LUT映射表,获得LUT数据;并将所述LUT数据输出至存储模块;
所述第二控制单元,还用于:当确定执行histogram函数算法时,将从第一存储器读取的第二像素数据作为地址,读取第二存储器的histogram数据;并将所述histogram数据发送至所述第二运算单元;
所述第二运算单元,还用于根据所述第二控制单元发送的histogram数据进行运算,输出histogram结果至第二存储器;
所述第二控制单元,还用于:将从第二存储器读取的histogram结果组成第二运算结果,输出至存储模块。
8.根据权利要求6或7所述的装置,其特征在于,所述第二算子模块还包括:
与所述第二算子模块对应的寄存器,
所述第二运算单元,还用于:当确定执行求和sum函数算法时,分别从与所述第二算子模块对应的寄存器以及第一存储器中获取计算所需的数据;将通过sum函数算法计算得到的第二运算结果返回至所述第二控制单元;
所述第二控制单元,还用于:将所述第二运算结果写入与所述第二算子模块对应的寄存器。
9.根据权利要求1至4任一项所述的装置,其特征在于,所述第三算子模块,包括:
第三控制单元,用于根据从所述第三算法中选定的输入算法,读取第一存储器中的第三像素数据,并将第三像素数据送入第三运算单元;
第三运算单元,用于根据所述输入算法对所述第三像素数据进行图像处理,得到与所述输入算法对应的第三运算结果,并向所述第三控制单元返回所述第三运算结果;
所述第三控制单元,还用于将所述第三运算结果按照与所述输入算法对应的输出方式输出至所述存储模块。
10.根据权利要求9所述的装置,其特征在于,所述第三算子模块还包括:
第三存储器,用于存储sad函数的计算中间结果;
所述第三控制单元,还用于:当确定执行sad函数算法时,分别从第一存储器读取第三像素数据以及从第三存储器读取sad数据;并将所述第三像素数据以及所述sad数据发送至所述第三运算单元;
所述第三运算单元,还用于根据所述第三控制单元发送的所述第三像素数据以及所述sad数据进行运算,输出sad结果至第三存储器;
所述第三控制单元,还用于:将所述第三运算单元通过sad函数得到的最终运算结果作为第三运算结果,输出至存储模块。
11.根据权利要求9或10所述的装置,其特征在于,所述第三算子模块还包括:
与所述第三算子模块对应的寄存器,
所述第三运算单元,还用于:当确定执行方差varience函数算法时,分别从与所述第三算子模块对应的寄存器及第一存储器中获取计算所需的数据;将通过varience函数算法计算得到的第三运算结果返回至所述第三控制单元;
所述第三控制单元,还用于:将所述第三运算结果写入与所述第三算子模块对应的寄存器。
12.一种图像处理算法的实现方法,其特征在于,所述方法包括:
获取与图像处理指令相匹配的控制参数;
基于所述控制参数使能相应的算子模块,由相应的算子模块按照相应的图像处理算法进行运算;
存储不同算子模块运算出的运算结果,并输出最终的图像处理结果;
其中,所述算子模块至少分为:
第一算子模块,用于对读取的第一像素数据按照第一算法进行运算,得到并输出第一运算结果至存储模块;
第二算子模块,用于对读取的第二像素数据按照第二算法进行运算,得到并输出第二运算结果至存储模块;
第三算子模块,用于对读取的第三像素数据按照第三算法进行运算,得到并输出第三运算结果至存储模块。
13.根据权利要求12所述的方法,其特征在于,所述由相应的算子模块按照相应的图像处理算法进行运算,包括:
由所述第一算子模块根据第一配置信息读取第一像素数据;和/或
由所述第二算子模块根据第二配置信息读取第二像素数据;和/或
由所述第三算子模块根据第三配置信息读取第三像素数据。
14.根据权利要求12所述的方法,其特征在于,所述基于所述控制参数使能相应的算子模块,还包括:
检测所述存储模块的存储状态;
若所述存储状态表征所述存储模块的使用空间大于或等于预设阈值,通知当前工作的算子模块暂停读取像素数据。
15.根据权利要求12所述的方法,其特征在于,所述基于所述控制参数使能相应的算子模块之前,还包括:
配置不同算子模块所需的参数寄存器;
将控制参数分发至对应的参数寄存器。
16.根据权利要求12至15任一项所述的方法,其特征在于,当所述算子模块为第一算子模块时,所述由相应的算子模块按照相应的图像处理算法进行运算,包括:
配置运算所需的第一配置参数;
根据所述第一配置参数读取第一存储器中的第一像素数据;
根据从第一算法中选定的输入算法对所述第一像素数据进行图像处理运算,得到与所述选定的输入算法对应的第一运算结果;
将所述第一运算结果,按照与所述输入算法对应的输出方式输出至所述存储模块。
17.根据权利要求12至15任一项所述的方法,其特征在于,当所述算子模块为第二算子模块时,所述由相应的算子模块按照相应的图像处理算法进行运算,包括:
根据从第二算法中选定的输入算法,读取第一存储器中的第二像素数据;
根据所述输入算法对所述第二像素数据进行图像处理,得到与所述输入算法对应的第二运算结果;
将所述第二运算结果按照与所述输入算法对应的输出方式输出至所述存储模块。
18.根据权利要求17所述的方法,其特征在于,所述方法还包括:
当确定执行map函数算法时,将从第一存储器读取的第二像素数据作为地址,读取第二存储器的LUT映射表,获得LUT数据;并将所述LUT数据输出至存储模块;
当确定执行histogram函数算法时,将从第一存储器读取的第二像素数据作为地址,读取第二存储器的histogram数据;根据所述histogram数据进行运算,输出histogram结果至第二存储器;将从第二存储器读取的histogram结果组成第二运算结果,输出至存储模块;
其中,第二存储器,用于存储map函数的映射方式以及histogram函数的计算中间结果。
19.根据权利要求17或18所述的方法,其特征在于,所述方法还包括:
当确定执行sum函数算法时,分别从与所述第二算子模块对应的寄存器以及第一存储器中获取计算所需的数据;将通过sum函数算法计算得到的第二运算结果写入与所述第二算子模块对应的寄存器。
20.根据权利要求12至15任一项所述的方法,其特征在于,当所述算子模块为第三算子模块时,所述由相应的算子模块按照相应的图像处理算法进行运算,包括:
根据从第三算法中选定的输入算法,读取第一存储器中的第三像素数据;
根据所述输入算法对所述第三像素数据进行图像处理,得到与所述输入算法对应的第三运算结果;
将所述第三运算结果按照与所述输入算法对应的输出方式输出至所述存储模块。
21.根据权利要求20所述的方法,其特征在于,所述方法还包括:
当确定执行sad函数算法时,根据从第一存储器读取的第三像素数据以及从第三存储器读取的sad数据进行运算,输出sad函数的计算中间结果至第三存储器;将通过sad函数得到的最终运算结果作为第三运算结果,输出至存储模块;
其中,第三存储器,用于存储sad函数的计算中间结果。
22.根据权利要求20或21所述的方法,其特征在于,所述方法还包括:
当确定执行varience函数算法时,分别从与所述第三算子模块对应的寄存器及第一存储器中获取计算所需的数据;将通过varience函数算法计算得到的第三运算结果写入与所述第三算子模块对应的寄存器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710067540.5A CN108399595A (zh) | 2017-02-07 | 2017-02-07 | 一种图像处理算法的实现装置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710067540.5A CN108399595A (zh) | 2017-02-07 | 2017-02-07 | 一种图像处理算法的实现装置及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108399595A true CN108399595A (zh) | 2018-08-14 |
Family
ID=63093627
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710067540.5A Pending CN108399595A (zh) | 2017-02-07 | 2017-02-07 | 一种图像处理算法的实现装置及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108399595A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116957908A (zh) * | 2023-09-20 | 2023-10-27 | 上海登临科技有限公司 | 一种硬件处理架构、处理器以及电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1443460A1 (en) * | 2003-02-03 | 2004-08-04 | C.F.D. Elettronica S.P.A. | A process for digital image processing, in particular in the video monitoring field |
CN101159061A (zh) * | 2007-11-16 | 2008-04-09 | 清华大学 | 一种大邻域图像并行处理方法 |
CN102609937A (zh) * | 2012-01-12 | 2012-07-25 | 中国人民解放军国防科学技术大学 | 一种面向硬件加速器的图像匹配方法 |
CN103020890A (zh) * | 2012-12-17 | 2013-04-03 | 中国科学院半导体研究所 | 基于多层次并行处理的视觉处理装置 |
-
2017
- 2017-02-07 CN CN201710067540.5A patent/CN108399595A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1443460A1 (en) * | 2003-02-03 | 2004-08-04 | C.F.D. Elettronica S.P.A. | A process for digital image processing, in particular in the video monitoring field |
CN101159061A (zh) * | 2007-11-16 | 2008-04-09 | 清华大学 | 一种大邻域图像并行处理方法 |
CN102609937A (zh) * | 2012-01-12 | 2012-07-25 | 中国人民解放军国防科学技术大学 | 一种面向硬件加速器的图像匹配方法 |
CN103020890A (zh) * | 2012-12-17 | 2013-04-03 | 中国科学院半导体研究所 | 基于多层次并行处理的视觉处理装置 |
Non-Patent Citations (2)
Title |
---|
孙建等: "基于PAAG的图形图像算法的并行实现", 《计算机技术与发展》 * |
延酉玫等: "OpenVX与三维渲染在多态GPU上的并行实现", 《计算机应用》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116957908A (zh) * | 2023-09-20 | 2023-10-27 | 上海登临科技有限公司 | 一种硬件处理架构、处理器以及电子设备 |
CN116957908B (zh) * | 2023-09-20 | 2023-12-15 | 上海登临科技有限公司 | 一种硬件处理架构、处理器以及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11762631B2 (en) | Information processing method and terminal device | |
CN108416422B (zh) | 一种基于fpga的卷积神经网络实现方法及装置 | |
EP3660628A1 (en) | Dynamic voltage frequency scaling device and method | |
CN108961303A (zh) | 一种图像处理方法、装置、电子设备和计算机可读介质 | |
CN108563517A (zh) | 系统接口的调用方法及装置 | |
CN108280455A (zh) | 人体关键点检测方法和装置、电子设备、程序和介质 | |
CN105096235B (zh) | 图形处理方法及图形处理装置 | |
US9122632B2 (en) | Programmable power performance optimization for graphics cores | |
CN103999121A (zh) | 用于将图像基元部署至计算构造的图像流管线控制器 | |
CN102122502A (zh) | 一种三维字体显示方法以及相关装置 | |
US10768685B2 (en) | Convolutional operation device and method | |
CN112799599B (zh) | 一种数据存储方法、计算核、芯片和电子设备 | |
US20210097326A1 (en) | Information processing method and terminal device | |
CN109697468A (zh) | 样本图像的标注方法、装置及存储介质 | |
AU2019477545A1 (en) | Methods for handling occlusion in augmented reality applications using memory and device tracking and related apparatus | |
CN111782133A (zh) | 数据处理方法及装置以及相关产品 | |
CN108765454A (zh) | 一种基于视频的烟雾检测方法、装置及设备终端 | |
CN107808394A (zh) | 一种基于卷积神经网络的图像处理方法及移动终端 | |
CN111193916B (zh) | 运算方法 | |
CN108124157A (zh) | 信息交互方法、装置及系统 | |
CN108961268B (zh) | 一种显著图计算方法及相关装置 | |
CN107613046A (zh) | 滤镜管道系统、图像数据处理方法、装置以及电子设备 | |
CN110503180A (zh) | 模型处理方法、装置以及电子设备 | |
CN108399595A (zh) | 一种图像处理算法的实现装置及方法 | |
CN106796504A (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180814 |