CN103718159B - 图像处理软件开发方法、图像处理软件开发装置 - Google Patents
图像处理软件开发方法、图像处理软件开发装置 Download PDFInfo
- Publication number
- CN103718159B CN103718159B CN201180072643.1A CN201180072643A CN103718159B CN 103718159 B CN103718159 B CN 103718159B CN 201180072643 A CN201180072643 A CN 201180072643A CN 103718159 B CN103718159 B CN 103718159B
- Authority
- CN
- China
- Prior art keywords
- component drawings
- programming language
- image processing
- storehouse
- function
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/35—Creation or generation of source code model driven
Abstract
在本发明的图像处理软件开发中,兼顾通过组件图连接进行的基于模型的开发和能够与嵌入式LSI用编程语言库协作的源代码的自动代码生成。对于编程语言用的图像处理库功能和对上述功能的输入输出数据结构,具有输入输出数据内存管理组件图、输入数据值设定组件图、库执行组件图、输出数据值取得组件图这4种组件图,进而具有将上述4种组件图作为下位组件图预先按使用顺序连接而成的上位组件图,组合下位组件图和上位组件图描述、执行算法。此外,根据描述的算法,生成调用图像处理库的编程语言源代码。
Description
技术领域
本发明涉及图像处理软件开发方法、图像处理软件开发装置和图像处理软件开发程序的技术。
背景技术
因为图像处理系统的处理性能提高,其应用领域从现有的FA(Factory Automation:工厂自动化)领域扩展到了屋内外的人物监视、数码相机等的面部识别、车载相机进行的外部环境识别等广泛的领域。
另一方面,图像处理系统的开发中,作为处理对象的数据非常多,所以用通用CPU(Central Processing Unit:中央处理器)进行的处理不能得到充分的性价比(或者单位电力的性能),所以较多使用内含图像处理用的硬件加速器的嵌入式LSI(Large Scale Integration:大规模集成)。其中,嵌入式LSI是嵌入式设备中装载的电路,嵌入式设备使用嵌入式LSI高速地执行图像处理。
因此,需要使用用于实现通过嵌入式LSI运行的驱动软件的编程语言库开发识别软件。其中,嵌入式设备用软件的开发中,一般使用C语言等编程语言,嵌入式LSI用的驱动软件也同样作为编程语言库提供。因此,识别软件开发者使用的开发方法当然也一般是使用编程语言编程。
但是,使用编程语言编程的情况下,存在实现工作量较多,实现中的人工错误较多等问题。
对这些问题的有效的现有技术,是基于模型的开发技术。
基于模型的开发技术与现有的基于编程语言的开发不同,是通过:
(a)按处理顺序列举预先在软件开发环境上定义的处理区块
(b)在图上将同样在软件开发环境上定义的软件组件图连接
等方法描述软件处理流程(以下称为“模型(model)”),使该模型在计算机上模拟动作进行动作验证,根据情况从模型生成编程语言源代码的技术。基于模型的开发的一例,有如专利文献1所述的技术。其中,专利文献1是属于(a)类的例子。
先行技术文献
专利文献
专利文献1:日本特开2009-087144号公报
发明内容
发明要解决的课题
但是,专利文献1中记载的技术中,存在不能够开发与嵌入式LSI用的编程语言库联动的识别算法(或者即使能够进行PC等开发环境上的模拟,也不能够生成调用嵌入式LSI用的编程语言库的源代码)的问题。
此外,基于模型的开发中,为了与使用编程语言的开发相比提高开发效率,大多将预先定义的软件组件的抽象度设定为比编程语言用函数更高,难以减少软件组件执行所需的嵌入式设备的计算机资源(计算量和内存使用量)。
于是,本发明的主要目的在于提供一种基于模型的开发环境,其能够进行综合了执行图像处理的嵌入式LSI用的编程语言库的基于模型的开发,具体而言为开发环境上的(不使用编程语言的)组件图连接型识别算法开发,和减少嵌入式设备的计算机资源使用量的源代码生成。
用于解决课题的方法
为了解决上述课题,本发明是一种图像处理软件开发方法,对使用图像处理装置用编程语言库的软件开发进行辅助,在图像处理软件开发装置上执行,其特征在于:
上述图像处理软件开发装置包括存储装置和用于构成模型图编辑部的控制装置,
上述存储装置中,作为用于描述软件的模型图的构成元素的4种下位组件图,在组件图定义部中分别存储有输入输出数据内存管理组件图、输入数据值设定组件图、库执行组件图和输出数据值取得组件 图,
上述下位组件图具有上述编程语言库的函数和用于指定执行该函数时的输入输出数据的接口,
将通过上述接口连接的4种上述下位组件图组合而得的上位组件图,也存储在上述存储装置中,
上述模型图编辑部,
在接受了向模型图中追加上述下位组件图或上述上位组件图的追加操作时,将所接受的上述下位组件图或上述上位组件图追加到上述模型图,并且在接受了对于多个上述下位组件图的上述接口的连接操作时,用有向链接将所接受的上述接口之间连接,由此生成模型图。
其他方法在后文中记载。
发明效果
根据本发明,能够提供一种基于模型的开发环境,其能够进行综合了执行图像处理的嵌入式LSI用的编程语言库的基于模型的开发,具体而言为开发环境上的(不使用编程语言的)组件图连接型识别算法开发,和减少嵌入式设备的计算机资源使用量的源代码生成。
附图说明
图1是表示本发明的一个实施方式的图像处理软件开发系统的结构图。
图2是表示本发明的一个实施方式的组件图定义部中定义的组件图的说明图。
图3是表示边缘角度量化函数的例子作为本发明的一个实施方式的组件图定义部中定义的上位组件图和下位组件图的其他例子的说明图。
图4是表示在模型图编辑部的模型图画面上配置和连接本发明的一个实施方式的图2、图3中说明的各上位组件图的例子的说明图。
图5是表示一并使用上位组件图和下位组件图构建与本发明的一个实施方式的图4相同的处理流程的例子的说明图。
图6是表示本发明的一个实施方式的模型执行部的处理的流程图。
图7是表示本发明的一个实施方式的代码生成部的处理的流程图。
图8是表示对图4的处理流程进行代码生成的结果作为本发明的一个实施方式的编程语言源代码的一例的说明图。
具体实施方式
以下参考各附图详细说明本发明的一个实施方式。
图1是表示图像处理软件开发系统的结构图。图像处理软件开发系统包括图像处理软件开发装置1和嵌入式设备70。
图像处理软件开发装置1构成为具有作为控制装置的CPU、内存、硬盘(存储单元)和网络接口的计算机,该计算机中,CPU通过执行内存中读取的程序,使各处理部工作。
嵌入式设备70是装载了执行图像处理等的嵌入式LSI的计算机,与图像处理软件开发装置1相比,计算机资源(CPU的处理能力、内存的存储容量)等大多较少。
图像处理软件开发装置1包括组件图定义部10、模型图编辑部20、模型执行部30、代码生成部40、编程语言库50和编程语言源代码60。
组件图定义部10中,用预先规定的结构定义与编程语言库50的各函数和数据结构对应的组件图。该结构在后文中叙述。以下将编程语言库50的函数简称为“库函数”。
模型图编辑部20使用组件图定义部10中定义的各组件图,描述图像处理流程。该流程在后文中叙述。
模型执行部30基于用模型图编辑部20创建的模型图,执行图像处理流程(详情参考图6)。具体而言,模型执行部30在图像处理软件开发装置1上模拟进行嵌入式设备70的动作(以下也称为模拟)。
模拟动作的一例是将嵌入式设备70构建为图像处理软件开发装置1内的虚拟计算机,对该虚拟计算机的硬件资源和OS上的进程(process)进行模拟,由此模拟图像处理算法的动作的方式。
模拟动作的另外一例是在图像处理软件开发装置1的硬件资源和OS上模拟图像处理算法的动作的方式。
代码生成部40基于用模型图编辑部20创建的模型图,生成编程语言源代码60(详情参考图7)。然后,生成的编程语言源代码60通过用嵌入式设备70用的编译器进行编译(compile)和连接(link),创 建二进制文件。嵌入式设备70接收创建的二进制文件(图1的虚线箭头),用嵌入式LSI使该二进制文件运行。
编程语言库50是用于实现嵌入式设备70上装载的嵌入式LSI上运行的驱动软件的库。本实施方式中,举例表示了用C语言描述的用于执行图像处理(特别是图像处理中的边缘角度提取处理等图像识别处理)的库作为编程语言库50的一例。另一方面,能够应用各种编程语言库。例如,能够应用不是图像而是声音识别的库等,并且使用库的编程语言也不限定于C语言。
编程语言源代码60是用代码生成部40生成的、调用编程语言库50的应用程序源代码。
接着,说明图像处理软件开发装置1的处理概要。
首先,用户110在模型图编辑部20的模型图画面上配置组件图定义部10中预先定义的组件图,使这些组件图之间的输入输出接口连接,由此描述表示图像处理流程的模型图。
接着,用户110对模型执行部30指示执行模型图时,模型执行部30从用模型图编辑部20创建的模型图中描述的图像处理流程的开头起依次执行处理流程。此时,通过依次调用与构成图像处理流程的各组件图关联的编程语言库50内的功能,执行图像处理算法的模拟。
接着,用户110对代码生成部40指示代码生成时,代码生成部40基于用模型图编辑部20创建的模型图中描述的图像处理流程,输出编程语言源代码60。
图2是表示组件图定义部10中定义的组件图的说明图。
图2(a)表示与图2(b)的下位组件图对应的编程语言库50的函数和结构体。首先,库函数“边缘角度提取函数(ExtractEdgeAngle)”对于与用参数指定的图像ID(IMGID)对应的图像内的各像素,输出每个像素(x,y)的边缘强度和角度(rho,theta)。此外,边缘角度提取控制结构体(EDGE_CTL类型),是边缘角度提取处理的控制所需的控制参数,具有边缘强度下限阈值和最大边缘数量。
基于该控制参数,计算比指定的阈值更强的边缘强度的相对于像素的边缘强度和角度,对边缘角度提取结果结构体(EDGE_TBL)数组输出。此时,边缘角度提取结果结构体数组预先分配充分的个数(例 如相当于画面内的所有像素数的量),该个数需要在边缘角度提取控制结构体成员maxEdge中设定。此外,边缘角度提取函数的返回值是实际提取的边缘数量。
图2(b)表示库函数之一“边缘角度提取函数”和与该库函数对应的组件图组。组件图由每个库函数4种的下位组件图和将其整合(也称分组或分层)的上位组件图构成。
关于各下位组件图的外观,组件图内部的标签字符串中上部的字符串(例如“ExtractEdgeAngle”)表示下位组件图的名称,左侧的字符串(例如“IMGID”)表示输入接口,右侧的字符串(例如“edgeCount”)表示输出接口,左右中央的字符串(例如“pEdgeTbl”)表示输入输出共用接口。
由此,图2中,按使用顺序从左向右配置下位组件图,以各输入输出接口的类型一致的方式连接,由此构成上位组件图270内的处理流程。此时,下位组件图内的输入输出接口中,下划线的接口(例如GetEdgeTbl250内的“EDGE_TBL”)是上位组件图的输入输出接口。
下位组件图如下所示,分类为输入输出数据内存管理组件图、输入数据值设定组件图、库执行组件图和输出数据值取得组件图4种。
(a)输入输出数据内存管理组件图是用于对库函数中输入输出的数据结构分别分配、释放数据结构内存的下位组件图,例如进行EDGE_CTL结构体的内存管理(分配、释放)的AllocEdgeCtl220,和进行EDGE_TBL结构体的内存管理的AllocEdgeTbl230。
(b)输入数据值设定组件图是用于对分配的数据结构设定值的下位组件图,例如对边缘角度提取函数的控制结构体即EDGE_CTL结构体设定值的SetEdgeCtl240。
(c)库执行组件图是用于调用库函数的下位组件图,例如与边缘角度提取函数对应的ExtractEdgeAngle210。ExtractEdgeAngle210内的edgeCount对应于边缘角度提取函数的返回值。此外,对每1个库函数定义一个库执行组件图。
(d)输出数据值取得组件图是用于从保存了库函数的执行结果的数据结构取得值的下位组件图,例如从保存了边缘角度提取处理结果的EDGE_TBL结构体取得值的GetEdgeTbl250,和从EDGE_CTL结构 体取得值的GetEdgeCtl260。
与数据内存相关的下位组件图220~260基本上对于1个数据类型定义(a)输入输出数据内存管理组件图、(b)输入数据值设定组件图、(d)输出数据值取得组件图这3种为一组。例如,对于EDGE_CTL结构体,下位组件图220、240、260成一组。
但是,例外是在数据结构是识别结果输出专用而不需要设定值的情况下,也可以不定义输入数据值设定组件图。例如,EDGE_TBL结构仅用于接收边缘角度提取函数的输出的用途(即用户110不设定值),所以也可以不定义输入数据值设定组件图。
上位组件图270按使用顺序预先使下位组件图210~260连接而合并为一组。此外,本实施方式中,上位组件图的命名规则按“(下位组件图的)库执行组件图名+pkg”说明。“pkg”是包(package)的简称。
此外,本实施方式中说明了与库函数及其数据结构相关的组件图,但下位组件图也可以追加条件分支、循环等处理流程控制组件图。由此能够描述更复杂的算法。
接着,用图3~图5说明在模型图编辑部20中配置的处理流程图。
图3是表示边缘角度量化函数的例子作为组件图定义部10内定义的上位组件图和下位组件图的其他例子的说明图。
图3(a)表示与图3(b)的下位组件图对应的库函数即边缘角度量化函数(ResampleEdgeAngle)。其中,边缘角度量化指的是将通过边缘角度提取处理按1度刻度、360度的分辨率对EDGE_TBL结构体输出的边缘角度信息,转换为指定的角度分辨率(例如,如果是8方向符号则将360度转换为45度刻度8方向的分辨率)的处理。该处理在基于边缘角度信息的图像识别特征量的提取等中使用。
边缘角度量化函数(ResampleEdgeAngle)从第一参数pInEdgeTbl输入由上一级处理边缘角度提取函数输出的边缘角度提取结果结构体(EDGE_TBL)数组,进而分别将EDGE_TBL结构体数组的数量输入到第三参数edgeCount、将量化后的分辨率输入到第四参数resolution作为控制用的输入信息,进行边缘角度量化处理,将处理结果输入到作为从第二参数输出用而接受的另一个边缘角度提取结果结构体(EDGE_TBL)数组并输出。此外,函数的返回值是量化后的边缘角 度量化表数量。
图3(b)中,与边缘角度量化函数对应的ResampleEdgeAngle310对应于库执行组件图,其他输入输出数据类型与图2相同,所以下位组件图230、250能够沿用组件图定义部10中已定义的组件图。进而,上位组件图320按使用顺序预先使下位组件图230、310、250连接而合并为一组。
图4是表示在模型图编辑部20的模型图画面上配置和连接图2、图3中说明的各上位组件图的例子的说明图。
本实施方式中,用户110描述算法的方法,是从图4(a)的组件图定义部10中定义的组件图组中选择图像处理算法处理流程中使用的组件图,在图4(b)的模型图编辑部20上配置,使各组件图的接口按使用顺序(相当于后述的图6、图7中的“处理顺序”)且类型匹配地连接的流程。
首先,用户110选择组件图定义部10中已定义的图像内存分配(AssignImg)410(例如鼠标的拖动(drug)操作),在模型图编辑部20上配置为下位组件图440(例如鼠标的放置(drop)操作)。即,组件图定义部10中定义的组件图只是“组件的定义信息”,只有在模型图编辑部20上配置才起到“组件图的实体”的作用。
接着,用户110同样地配置其余的组件图。即,在分配的图像内存中取得图像(从组件图420到组件图445),设定最大取得边缘数量“maxEdge=1024”、边缘强度阈值“minThr=30”的控制参数常数值(从组件图430到组件图450、455),输入这些参数进行边缘角度提取(ExtractEdgeAnglePkg)(从组件图270到组件图460)。
进而,用户110配置设定角度分辨率“resolution=8”的控制参数常数值(从组件图430到组件图465)、对边缘角度提取结果进行量化(ResampleEdgeAngle)(从组件图320到组件图470)的组件图。进而,使各组件图的输入输出接口之间连接,构建图像处理流程。
这样,在组件图定义部10内以预先整理了下位组件图的连接关系的形式定义了上位组件图,所以用户110对于模型图编辑部20上的上位组件图460、470,只要连接由下位组件图组构成的处理流程整体的输入信息和输出信息即可,能够减少要连接的组件图。由此,在试制 算法等时,可以迅速地构建多个算法,在比较评价等时是有效的。
图5是表示一并使用上位组件图和下位组件图构建与图4相同的处理流程的例子的说明图。图5的例子中,首先,用户110用图4和上位组件图描述同样的处理流程。接着,用户110使上位组件图中包括的下位组件图成为显示状态。其中,显示状态的切换方法可以是公知的方法。例如,可以从组件图编辑用的菜单等切换下位组件图的显示/不显示,也可以通过双击上位组件图而弹出其他画面等。
用户110在使下位组件图成为显示状态之后,能够编辑下位组件图之间的连接关系。从而,用户110能够在多个上位组件图中包括的下位组件图之间,删除不需要处理或者重复的组件图(或者修正连接关系而跳过处理),或使其重新连接。
为此,模型图编辑部20接受从模型图内的第一上位组件图内的输入输出数据内存管理组件图的接口、到模型图内的第二上位组件图内的库执行组件图的接口的连接操作时,按照接受的连接操作,在模型图中追加从输入输出数据内存管理组件图的接口到库执行组件图的接口的有向链接。
例如,图2内上位组件图270中包括的下位组件图230(AllocEdgeTbl)与图3内上位组件图320中包括的下位组件图230(AllocEdgeTbl)重复,如图4所示仅使上位组件图460、470之间连接的状态下,会双重地分配EDGE_TBL结构体内存。从而,图5的例子中,用户110以在后一级的上位组件图470内直接使用上位组件图460内的下位组件图230分配的EDGE_TBL结构体内存的方式修改连接关系。
进而,位于上位组件图460内的处理流程的最后一级的EDGE_CTL结构体值取得组件图260(GetEdgeCtl)和EDGE_TBL结构体值取得组件图250(GetEdgeTbl)是不需要的处理,所以用户110修改连接关系以将边缘角度提取函数执行组件图210(ExtractEdgeAngle)的输出结构直接输入到边缘角度量化函数执行组件图310(ResampleEdgeAngle)。
这样,用户110能够通过模型图编辑部20进行对上位组件图的内部定义的下位组件图的显示和编辑,所以能够改善通过模拟确定的算法运行的嵌入式设备70的计算机资源使用效率(具体而言为削减嵌入 式设备70的内存分配量、削减嵌入式设备70的内存分配处理的处理时间)。
图6是表示模型执行部30的处理的流程图。
模型执行部30基本上从开头向末尾顺序处理模型图编辑部20内构建的处理流程内的各组件图(S610、S615、S650、S655)。此时,首先检查连接上位组件图组构成的上层的处理流程(相当于图4的例子),从其开头向末尾决定组件图的处理顺序。接着,检查连接各上位组件图的内部定义的下位组件图组构成的下层的处理流程(相当于图5的例子),从其开头向末尾决定组件图的处理顺序。
以下说明图4的处理流程的例子作为具体例。
首先,决定上位组件图的处理顺序。从开头起顺序追踪处理流程时,在图4的例子中,成为以下顺序:
第一组件图集合<组件图440→组件图445→组件图450→组件图455→组件图460→组件图465→组件图470>。其中,组件图450、455等处于并列关系的组件图的处理顺序,在其后一级的处理即组件图465之前,但组件图450和组件图455之间的顺序关系是任意的。例如,可以用在模型图编辑部20中配置组件图的顺序决定。
接着,决定下位组件图的处理顺序。首先,上位组件图465根据图2的处理流程,成为以下顺序(处于并列关系的组件图的处理顺序同样):
第二组件图集合<组件图220→组件图230→组件图240→组件图210→组件图250→组件图260>。
接着,上位组件图470根据图3的处理流程,成为以下顺序(处于并列关系的组件图的处理顺序同样):
第三组件图集合<组件图230→组件图310→组件图250>。
对以上进行整理,则各组件图的处理顺序成为以下所述。此处,“整理”指的是将第一组件图集合内的上位组件图465、470分别置换为上述下位组件图的集合(第二组件图集合、第三组件图集合):
<组件图440→组件图445→组件图450→组件图455→组件图460→组件图220→组件图230→组件图240→组件图210→组件图250→组件图260→组件图230→组件图310→组件图250>。
接着,按照处理顺序处理各组件图。各组件图的处理中,首先检查组件图的种类(S620),按组件图种类使处理分支。
组件图种类是“输入输出数据内存管理组件图”的情况下,根据执行时刻是处理流程的开始时刻还是结束时刻使处理分支。在是开始时刻的情况下分配数据结构的内存(S625),在是结束时刻的情况下释放数据结构的内存(S630)。
在组件图种类是“输入数据值设定组件图”的情况下,对相应的数据结构设定指定的值(S635)。其中,数据结构和设定值使用从组件图的输入接口指定的值。
组件图种类是“库执行组件图”的情况下,调用相应的库函数,接受执行结果(S640)。其中,对库函数传递的参数(输入用参数和输出用参数)使用从组件图的输入接口指定的值,从输出接口输出保持库函数的执行结果的数据结构和返回值。
在组件图种类是“输出数据值取得组件图”的情况下,从相应的数据结构取得值(S645)。其中,取得来源数据结构、取得的数据元素、取得结果的保存目标数据结构,使用从组件图的输入接口指定的值,从输出接口输出保存目标数据结构。
此外,本实施方式中输入输出数据内存管理组件图对垃圾回收(Garbage collector)(已使用内存的回收)功能进行模拟。但是,这不是本实施方式的必需要素。例如,没有垃圾回收功能的情况下,将输入输出数据内存管理组件图分为“输入输出数据内存分配组件图”、“输入输出数据内存释放组件图”这2种,在模型图编辑部20内构建的处理流程的适当场所(一般而言为处理流程末端)连接输入输出数据内存释放组件图即可。
此外,本实施方式中说明了与库函数及其数据结构相关的组件图,但追加了条件分支、循环等处理流程控制组件图作为下位组件图的情况下,S620的处理分支目标按每个组件图种类增加。分支目标中的组件图执行可以是公知的方法。例如,如果组件图种类是处理分支组件图则进行条件判定和与判定结果相应的处理。
图7是表示代码生成部40的处理的流程图。
代码生成部40基本上从开头向末尾依次处理模型图编辑部20内 构建的处理流程内的各组件图(S710、S715、S750、S755)。此时,首先检查连接上位组件图组构成的上层的处理流程(相当于图4的例子),从其开头向末尾决定组件图的处理顺序。接着,检查连接各上位组件图的内部定义的下位组件图组构成的下层的处理流程(相当于图5的例子),从其开头向末尾决定组件图的处理顺序。之后,按照处理顺序处理各组件图。
各组件图的处理中,首先检查组件图的种类(S720),按组件图种类使处理分支。
组件图种类是“输入输出数据内存管理组件图”的情况下,根据执行时刻是处理流程的开始时刻还是结束时刻使处理分支。在是开始时刻的情况下生成分配数据结构的内存的源代码(例如,如果是C语言则为malloc语句)(S725),在是结束时刻的情况下生成释放数据结构的内存的源代码(例如,如果是C语言则为free语句)(S730)。
在组件图种类是“输入数据值设定组件图”的情况下,生成对相应的数据结构设定指定的值的源代码(例如,如果是C语言则为对结构体成员变量的代入语句)(S735)。其中,数据结构和设定值使用从组件图的输入接口指定的值。
在组件图种类是“库执行组件图”的情况下,生成调用相应的库函数、接收执行结果的源代码(S740)。其中,对库函数传递的参数(输入用参数和输出用参数)使用从组件图的输入接口指定的值,从输出接口输出保持库函数的执行结果的数据结构和返回值。
在组件图种类是“输出数据值取得组件图”的情况下,生成从相应的数据结构取得值的源代码(例如,对与取得来源数据结构体不同的其他变量的代入)(S745)。但是,在输出数据值取得组件图的输出接口未连接的情况下,视为没有保存取得的值的目标,不生成与该接口相关的源代码。其中,取得来源数据结构、取得的数据元素、取得结果的保存目标数据结构,使用从组件图的输入接口指定的值,从输出接口输出保存目标数据结构。
图8是表示对于图4的处理流程进行代码生成的结果作为编程语言源代码60的一例的说明图。“sizeX=640,sizeY=480”作为从模型的外部给出的参数的例子记载。
此外,本实施方式中,变量名的确定方法使用以各组件图的输入输出接口名为基准设定的方法,但也可以是其他方法。例如,也可以对组件图之间的连接线命名,用该名称作为变量名。
此外,本实施方式中说明了与库函数及其数据结构相关的组件图,但在追加条件分支、循环等处理流程控制组件图作为下位组件图的情况下,S720的处理分支目标按每种组件图增加。分支目标中的代码生成处理可以是公知的方法。例如,如果组件图种类是处理分支组件图,则进行条件判定语句和与判定结果相应的处理的代码生成(如果是C语言则生成if~else语句)。
以上说明的本实施方式涉及不是用编程语言、而是通过组件图连接描述软件处理的基于模型的开发技术,特别涉及通过图像传感器进行的识别软件的基于模型的开发技术。
本实施方式的图像处理软件开发装置1,特征在于对于编程语言用的图像处理库功能和对上述库功能的输入输出数据结构,具有输入输出数据内存管理组件图、输入数据值设定组件图、库执行组件图、输出数据值取得组件图这4中组件图,进而,具有将上述4中组件图作为下位组件图合并为一组的上位组件图,组合下位组件图和上位组件图描述软件。
本实施方式的图像处理软件开发装置1中,上述组件图具有与图像处理库功能的输入输出参数对应的组件图接口,上述接口用图像处理库功能的输入输出变量名或数据类型名作为接口名。进而,具有根据用图像处理软件开发装置1描述的软件处理流程图用编程语言输出调用与构成上述处理流程图的组件图对应的图像处理库功能的源代码的功能。
本实施方式的图像处理软件开发装置1,具有能够使通过某个上述上位组件图的下层中包括的输入输出数据内存管理组件图分配的内存区域与其他上位组件图的下层中包括的库执行组件图连接的结构。
本实施方式的图像处理软件开发装置1,在上述输入输出数据结构是图像数据的情况下,将图像数据的管理信息输入到上述组件图接口和从上述组件图接口输出,图像数据内包含的像素数据在编程语言库50的内部进行管理。
即,在输入到库函数和从库函数输出的数据结构是图像数据的情况下,在其接口上连接用于输入输出图像数据的管理信息的下位组件图的接口,并且图像数据内包含的像素数据在图像处理库内部进行管理。
本实施方式中,通过对计算机的存储装置的空间分配处理和释放处理实现数据的内存管理方法,通过对计算机的存储装置的输入输出处理实现数据的输入输出方法,通过计算机的运算处理实现数据的处理,由这样的图像处理软件开发程序和使该计算机程序在计算机上执行的软件开发装置构成。
根据本实施方式,图像处理软件开发者不进行使用编程语言的编程,而是能够通过组件图连接设计、实现图像处理算法。进而,能够根据设计、实现的模型图使用自动代码生成功能生成调用嵌入式LSI用的编程语言库50的代码。此时,通过组合使用上位组件图和下位组件图,能够生成减少计算机资源使用量的源代码。
在算法试制时通过用上位组件图连接进行基于模型的开发,能够通过比编程语言抽象度更高(即要实现的内容更少)的组件图连接进行算法开发。此外,在算法确定后通过改善下位组件图的连接关系,能够进行嵌入式设备70的处理效率和内存使用效率较高的实现。
进而,在自动生成代码时,在进行对各数据结构的内存分配(和释放)、值的代入、值的取得的代码之外,还能够生成嵌入式LSI用的预先规定的库函数的调用代码,能够不使用编程语言进行编程地进行图像处理软件的开发。即,能够实现综合了编程语言库50的基于模型的开发。
此外,本实施方式中,在执行本实施方式的处理的计算机环境中,可以将本实施方式中的任意一个处理单元分割为两个以上的处理单元实现,也可以将两个以上的任意的处理单元合并为一个处理单元实现,只要不损害本实施方式提供的功能,对其实现方式就没有制约。
附图符号说明
1 图像处理软件开发装置
10 组件图定义部
20 模型图编辑部
30 模型执行部
40 代码生成部
50 编程语言库
60 编程语言源代码
70 嵌入式设备
Claims (8)
1.一种图像处理软件开发方法,对使用图像处理装置用编程语言库的软件开发进行辅助,在图像处理软件开发装置上执行,其特征在于:
所述图像处理软件开发装置包括存储装置和用于构成模型图编辑部的控制装置,
所述存储装置中,作为用于描述软件的模型图的构成元素的4种下位组件图,在组件图定义部中分别存储有输入输出数据内存管理组件图、输入数据值设定组件图、库执行组件图和输出数据值取得组件图,
所述下位组件图具有所述编程语言库的函数和用于指定执行该函数时的输入输出数据的接口,
将通过所述接口连接的4种所述下位组件图组合而得的上位组件图,也存储在所述存储装置中,
所述模型图编辑部,
在接受了向模型图中追加所述下位组件图或所述上位组件图的追加操作时,将所接受的所述下位组件图或所述上位组件图追加到所述模型图,并且在接受了对于多个所述下位组件图的所述接口的连接操作时,用有向链接将所接受的所述接口之间连接,由此生成模型图。
2.如权利要求1所述的图像处理软件开发方法,其特征在于:
所述图像处理软件开发装置的控制装置还构成模型执行部,
所述模型执行部,
根据所述生成的模型图内的组件图连接关系确定各组件图的处理顺序,按照处理顺序逐个选择所生成的模型图内的所述下位组件图,
在选择的所述下位组件图为所述输入输出数据内存管理组件图时,分配和释放输入到所述编程语言库的库函数和从所述编程语言库的库函数输出的数据结构用的内存,
在选择的所述下位组件图为所述输入数据值设定组件图时,对所述分配的内存设定输入到所述库函数和从所述库函数输出的数据结构的值,
在选择的所述下位组件图为所述库执行组件图时,参照输入到所述库函数和从所述库函数输出的数据结构的值,调用所述编程语言库,
在选择的所述下位组件图为所述输出数据值取得组件图时,从保存有调用所述编程语言库的执行结果的数据结构读取执行结果。
3.如权利要求1所述的图像处理软件开发方法,其特征在于:
所述图像处理软件开发装置的控制装置还构成代码生成部,
所述代码生成部,
根据所述生成的模型图内的组件图连接关系确定各组件图的处理顺序,按照处理顺序逐个选择所生成的模型图内的所述下位组件图,
在选择的所述下位组件图为所述输入输出数据内存管理组件图时,输出用于从所述图像处理装置内的内存中分配和释放输入到所述编程语言库的库函数和从所述编程语言库的库函数输出的数据结构用的内存的所述编程语言源代码,
在选择的所述下位组件图为所述输入数据值设定组件图时,输出用于对所述图像处理装置内分配的内存、设定输入到所述库函数和从所述库函数输出的数据结构的值的所述编程语言源代码,
在选择的所述下位组件图为所述库执行组件图时,输出用于参照输入到所述库函数和从所述库函数输出的数据结构的值、在所述图像处理装置内调用所述编程语言库的所述编程语言源代码,
在选择的所述下位组件图为所述输出数据值取得组件图时,输出用于从保存有在所述图像处理装置内调用所述编程语言库的执行结果的数据结构读取执行结果的所述编程语言源代码。
4.如权利要求1~3中任一项所述的图像处理软件开发方法,其特征在于:
所述模型图编辑部,在接受了从模型图内的第一所述上位组件图内的所述输入输出数据内存管理组件图的所述接口到模型图内的第二所述上位组件图内的所述库执行组件图的所述接口的连接操作时,按照所接受的连接操作,在模型图中追加从所述输入输出数据内存管理组件图的所述接口到所述库执行组件图的所述接口的有向链接。
5.如权利要求1~3中任一项所述的图像处理软件开发方法,其特征在于:
在输入到所述库函数和从所述库函数输出的数据结构为图像数据的情况下,在其接口上连接用于输入输出图像数据的管理信息的所述下位组件图的所述接口,并且图像数据内包含的像素数据在图像处理库内部进行管理。
6.一种图像处理软件开发装置,辅助使用图像处理装置用编程语言库的软件开发,其特征在于:
所述图像处理软件开发装置包括存储装置和用于构成模型图编辑部的控制装置,
所述存储装置中,作为用于描述软件的模型图的构成元素的4种下位组件图,在组件图定义部中分别存储有输入输出数据内存管理组件图、输入数据值设定组件图、库执行组件图和输出数据值取得组件图,
所述下位组件图具有所述编程语言库的函数和用于指定执行该函数时的输入输出数据的接口,
将通过所述接口连接的4种所述下位组件图组合而得的上位组件图,也存储在所述存储装置中,
所述模型图编辑部,
在接受了向模型图追加所述下位组件图或所述上位组件图的追加操作时,将所接受的所述下位组件图或所述上位组件图追加到所述模型图,并且在接受了对于多个所述下位组件图的所述接口的连接操作时,用有向链接将所接受的所述接口之间连接,由此生成模型图。
7.如权利要求6所述的图像处理软件开发装置,其特征在于:
所述图像处理软件开发装置的控制装置还构成模型执行部,
所述模型执行部,
根据所述生成的模型图内的组件图连接关系确定各组件图的处理顺序,按照处理顺序逐个选择所生成的模型图内的所述下位组件图,
在选择的所述下位组件图为所述输入输出数据内存管理组件图时,分配和释放输入到所述编程语言库的库函数和从所述编程语言库的库函数输出的数据结构用的内存,
在选择的所述下位组件图为所述输入数据值设定组件图时,对所述分配的内存设定输入到所述库函数和从所述库函数输出的数据结构的值,
在选择的所述下位组件图为所述库执行组件图时,参照输入到所述库函数和从所述库函数输出的数据结构的值,调用所述编程语言库,
在选择的所述下位组件图为所述输出数据值取得组件图时,从保存有调用所述编程语言库的执行结果的数据结构读取执行结果。
8.如权利要求6所述的图像处理软件开发装置,其特征在于:
所述图像处理软件开发装置的控制装置还构成代码生成部,
所述代码生成部,
根据所述生成的模型图内的组件图连接关系确定各组件图的处理顺序,按照处理顺序逐个选择所生成的模型图内的所述下位组件图,
在选择的所述下位组件图为所述输入输出数据内存管理组件图时,输出用于从所述图像处理装置内的内存中分配和释放输入到所述编程语言库的库函数和从所述编程语言库的库函数输出的数据结构用的内存的所述编程语言源代码,
在选择的所述下位组件图为所述输入数据值设定组件图时,输出用于对所述图像处理装置内分配的内存、设定输入到所述库函数和从所述库函数输出的数据结构的值的所述编程语言源代码,
在选择的所述下位组件图为所述库执行组件图时,输出用于参照输入到所述库函数和从所述库函数输出的数据结构的值、在所述图像处理装置内调用所述编程语言库的所述编程语言源代码,
在选择的所述下位组件图为所述输出数据值取得组件图时,输出用于从保存有在所述图像处理装置内调用所述编程语言库的执行结果的数据结构读取执行结果的所述编程语言源代码。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2011/067734 WO2013018204A1 (ja) | 2011-08-03 | 2011-08-03 | 画像処理ソフトウェア開発方法、画像処理ソフトウェア開発装置、および、画像処理ソフトウェア開発プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103718159A CN103718159A (zh) | 2014-04-09 |
CN103718159B true CN103718159B (zh) | 2016-08-31 |
Family
ID=47628767
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180072643.1A Active CN103718159B (zh) | 2011-08-03 | 2011-08-03 | 图像处理软件开发方法、图像处理软件开发装置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9195435B2 (zh) |
JP (1) | JP5722448B2 (zh) |
CN (1) | CN103718159B (zh) |
DE (1) | DE112011105489T5 (zh) |
WO (1) | WO2013018204A1 (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5666758B1 (ja) * | 2014-06-25 | 2015-02-12 | 楽天株式会社 | 情報処理装置、情報処理方法、プログラム、記憶媒体 |
US10248409B1 (en) * | 2014-12-03 | 2019-04-02 | Amazon Technologies, Inc. | Limiting the effects of source code patches on corresponding native-code patches |
CN105988794B (zh) * | 2015-02-11 | 2019-04-30 | 成都理想境界科技有限公司 | 滤镜代码生成器、生成方法及图像编辑器 |
JP6722528B2 (ja) * | 2016-06-30 | 2020-07-15 | クラリオン株式会社 | ソフトウェア開発支援方法及びシステム |
CN109324789A (zh) * | 2018-11-01 | 2019-02-12 | 广州南洋理工职业学院 | 一种软件开发方法 |
US20210055915A1 (en) | 2019-08-23 | 2021-02-25 | Google Llc | No-coding machine learning pipeline |
CN110673844A (zh) * | 2019-09-26 | 2020-01-10 | 苏州中科全象智能科技有限公司 | 一种图像处理软件开发方法及系统 |
US11733976B2 (en) * | 2019-11-08 | 2023-08-22 | Dai Nippon Printing Co., Ltd. | Software creation based on settable programming language |
CN112559074A (zh) * | 2020-12-18 | 2021-03-26 | 昂纳工业技术(深圳)有限公司 | 一种机器视觉软件的动态配置方法及计算机 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007079779A (ja) * | 2005-09-13 | 2007-03-29 | Ricoh Co Ltd | 画像処理装置、画像処理方法、プログラム、記録媒体 |
CN1959631A (zh) * | 2005-11-04 | 2007-05-09 | 上海启明软件股份有限公司 | 一种基于itron的应用软件自主装配技术 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07160843A (ja) * | 1993-12-02 | 1995-06-23 | Toyota Motor Corp | 画像認識プログラム構築装置及び方法 |
JPH09288568A (ja) * | 1996-04-23 | 1997-11-04 | Matsushita Electric Works Ltd | 画像処理装置およびその実行フロー作成方法 |
DE19832974A1 (de) * | 1998-07-22 | 2000-01-27 | Siemens Ag | Vorrichtung und Verfahren zur Erstellung eines virtuellen Anlagenmodells |
EP1385089A3 (en) * | 2002-07-26 | 2007-01-24 | Ricoh Company, Ltd. | Image forming apparatus, information processing apparatus, program execution method and program producing method |
US8001183B2 (en) * | 2004-10-08 | 2011-08-16 | Sharp Laboratories Of America, Inc. | Methods and systems for imaging device related event notification |
US7966396B2 (en) * | 2004-10-08 | 2011-06-21 | Sharp Laboratories Of America, Inc. | Methods and systems for administrating imaging device event notification |
US7523450B2 (en) * | 2004-11-15 | 2009-04-21 | International Business Machines Corporation | Apparatus, system, and method for identifying fixed memory address errors in source code at build time |
JP2007034489A (ja) * | 2005-07-25 | 2007-02-08 | Ricoh Co Ltd | 画像処理装置、画像処理方法、プログラム、記録媒体 |
JP4560493B2 (ja) * | 2006-05-12 | 2010-10-13 | 京セラミタ株式会社 | 画像形成装置 |
JP4983519B2 (ja) * | 2007-10-01 | 2012-07-25 | オムロン株式会社 | 開発支援装置および開発支援プログラム |
WO2009110725A2 (ko) * | 2008-03-04 | 2009-09-11 | 주식회사 코드에스이 | 3차원 응용프로그램 프레임워크 구조 및 이를 기반으로 하는 응용프로그램 구현 방법과, 3차원 응용소프트웨어 프레임워크 기반의 자동 테스트 시스템 및 그 방법 |
US20100122233A1 (en) * | 2008-11-13 | 2010-05-13 | Honeywell International Inc. | Software license independent model image generation system and method |
-
2011
- 2011-08-03 WO PCT/JP2011/067734 patent/WO2013018204A1/ja active Application Filing
- 2011-08-03 DE DE112011105489.0T patent/DE112011105489T5/de not_active Withdrawn
- 2011-08-03 US US14/232,046 patent/US9195435B2/en active Active
- 2011-08-03 CN CN201180072643.1A patent/CN103718159B/zh active Active
- 2011-08-03 JP JP2013526685A patent/JP5722448B2/ja active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007079779A (ja) * | 2005-09-13 | 2007-03-29 | Ricoh Co Ltd | 画像処理装置、画像処理方法、プログラム、記録媒体 |
CN1959631A (zh) * | 2005-11-04 | 2007-05-09 | 上海启明软件股份有限公司 | 一种基于itron的应用软件自主装配技术 |
Also Published As
Publication number | Publication date |
---|---|
JP5722448B2 (ja) | 2015-05-20 |
US9195435B2 (en) | 2015-11-24 |
CN103718159A (zh) | 2014-04-09 |
US20140196003A1 (en) | 2014-07-10 |
WO2013018204A1 (ja) | 2013-02-07 |
JPWO2013018204A1 (ja) | 2015-03-02 |
DE112011105489T5 (de) | 2014-04-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103718159B (zh) | 图像处理软件开发方法、图像处理软件开发装置 | |
CN1324467C (zh) | 基于标记的链接 | |
CN105022630B (zh) | 一种组件管理系统及组件管理方法 | |
EP3971706A2 (en) | Method, apparatus and electronic device for deploying operator in deep learning frame work | |
CN1447224A (zh) | 计算机应用程序中优化存储器使用的方法 | |
CN1271892A (zh) | 自动的承接软件/适配器生成器 | |
CN109086215B (zh) | 一种嵌入式软件单元测试用例生成方法及系统 | |
CN109447256A (zh) | 基于FPGA的Tensorflow系统加速的设计方法 | |
CN112328229A (zh) | 一种快速创建Jenkins流水线的方法 | |
CN104765939A (zh) | 拾取转化dwg格式电气图方法及装置 | |
US6959430B2 (en) | Specialized heaps for creation of objects in object-oriented environments | |
CN110187967B (zh) | 一种适用于依赖分析工具的内存预测方法及装置 | |
CN115269040B (zh) | 一种租户业务应用的拓展方法、装置及系统 | |
CN101739404B (zh) | 字节码优化数据库及其建立方法以及字节码优化方法 | |
US8954307B1 (en) | Chained programming language preprocessors for circuit simulation | |
CN104572482A (zh) | 一种过程变量的存储方法及装置 | |
CN109947476B (zh) | 一种运行时栈空间的统计方法及系统 | |
CN112650512A (zh) | 硬件驱动方法及装置、终端、存储介质 | |
CN115292169A (zh) | 一种ui自动化测试方法及系统 | |
CN108089871A (zh) | 软件自动更新方法、装置、设备及存储介质 | |
CN111061538A (zh) | 一种多Lua虚拟机内存优化方法及其系统 | |
US20050060707A1 (en) | Method for iterating through elements of a collection | |
DE112020003634T5 (de) | Automatische verifizierung der optimierung von konstrukten auf hoher ebene unter verwendung von prüfvektoren | |
US7580962B1 (en) | Automatic code generation for co-simulation interfaces | |
CN113590166B (zh) | 应用程序的更新方法、装置以及计算机可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |