摘要:科学技术和社会经济的快速发展使嵌入式软件更加复杂,软件规模不断扩大,伴随而来的是软件的安全性和可靠性问题。在进行SCADE模型仿真过程中,发现迭代器耗用时间长,运行效率较低。为了提高模型执行率和节省迭代时间,笔者提出模型驱动下图像处理算法优化。
关键词:模型驱动; SCADE; 图像处理; 算法;
Abstract:With the development of science and technology information, the complexity and scale of embedded software are increasing, and its requirements on reliability and security are increasing. By studying the performance of SCADE model tool, it is found that the model has low execution efficiency and long iterator time. In order to improve the model execution rate and save iteration time, the model-driven image processing algorithm optimization is proposed.
Keyword:model driven; SCADE; image processing; algorithm;
0 引言
模型驱动下的软件开发比传统软件开发更具有成本低和效率高等特点,模型验证技术和形式化建模能满足嵌入式软件开发要求,也能提升软件的可靠性和安全性。模型驱动下的软件开发关键因素是代码自动生成技术。图像处理技术广泛应用于多个领域,如人脸识别、智慧交通、移动智能终端等。我国在图像处理方面并没形成规模化、系统化的科学研究,模型驱动下图像处理研究相对于传统的图像处理具有更高的安全性、可靠性。建模工具Simulink、UML和SCADE等都具有代码自动生成技术。多种建模工具中,法国Esterel Teclmologies公司研发的SCADE建模工具有高安全性的嵌入式软件应用开发环境,同时,其自带的系列开发工具套件能帮助图像处理实现直观图形化需求建模。SCADE还具有开发文档和标准C代码自动生成等多种功能,是高标准、高安全性的鉴定代码生成器,具有严谨的模型仿真理论,实现了软件需求与产品代码高度同步,能与项目各部分代码集成。由于SCADE能实现和设计较为完善的控制系统这一类逻辑控制软件,因此,笔者在研究模型驱动下图像处理算法优化中选取SCADE作为建模工具。
1 SCADE建模工具
对于安全性要求较高的系统和软件,SCADE建模工具为其提供完善的解决方案。相对于其他建模工具,SCADE的开发环境能更有效地节约测试和开发时间,提高软件的安全性。Lustre同步形式化语言是SCADE建模工具Suite的核心,用户的图形化模型通过系统转化成形式化语言。C代码由KCG代码生成器按照标准自动生成,该代码需实现与SCADE建模仿真高度同步。采用SCADE建模工具建立模型进行仿真测试结果与实验预期假设结果相一致。根据仿真测试结果,程序中的代码可集成应用到该项目的每个版块。
图像处理边缘检测的关键是检测其边缘信息,主要是检测目标图像局部变化最为突出的部分。目前图像处理等软件中,Sobel算法是许多边缘检测算法中高效且较为简单的算法,在多个图像信息处理领域中起着重要的作用,是图像边缘检测最重要的算子之一,本研究选取Sobel算法作为图像处理算法。建模中选取Sobel两个核心梯度算子,分别标记为x和y.x梯度算子检测目标图像水平边缘,进行卷积计算,即式(1),记作Sx;Sy梯度算子检测图像垂直边缘,进行卷积计算,即式(2),记作Sy.最终得到边缘信息图像,同时将该图像的边界行列点赋零值,其他点将用式(3)和式(4)表示。
式中,S(x,y)设为图像中的灰度值,x为横坐标,y为纵坐标,(x,y)为图像中的灰度值点坐标,S(x,y)、S(x,y)为算子卷积结果。
2 模型驱动下图像处理算法现状
使用SCADE建模工具进行建模的Sobel算法思路中,模型的实现分为顶层、中层和底层3层。顶层模型对FOLD中累加器进行初始化设置,并设置全0数组,迭代器将原始图像srcImage输入,经过Height-1次迭代后输出迭代图像。仿真模型的中层由FOLD迭代器内部实现。仿真模型的底层实现则使用if-else.在底层操作中,模型开始迭代时执行if,图像处理的初始化由累加器的全0数组设置,在首次迭代后的所有迭代操作都由else进行,第二层FOLD迭代器由累加器全0数组设置输入,迭代器的输入由srcImage和当前迭代次数充当,Width-1次迭代后将获得结果。底层模型的迭代目标点索引是由计算迭代次数确定的,由if-else确定第一次迭代时模型执行if节点操作,并且把索引存储变为icur,把结果图像都赋值为0,且模型第二次迭代和后面的迭代中执行else节点操作,计算目标点采用水平边缘检测,图像处理数组与索引元素相匹配,若模型仿真测试结果与仿真预期目标结果相一致,则该仿真模型建立准确。进行SCADE模型仿真,发现迭代器耗用时间长,运行效率较低,为了提高模型执行率和节省迭代时间,需要对模型进行优化完善。
3 模型驱动下图像处理算法优化
SCADE模型工具提供了MAP和FOLD两类迭代器来对数组进行迭代处理和计算。首先分析FOLD迭代器,仿真建模中选取FOLD迭代器,经过N次的迭代,迭代器设置参数a是输入,同时,相对应设置Output为输出,数组长度设置为X(1,2,3……X)次,迭代计算函数设置为Operator,从而可得出FOLD生成码如下:
对MAP迭代器进行分析,仿真建模中选取MAP迭代器,经过N次的迭代,数组长度设置为X(1,2,3……X)次,迭代计算函数设置为Operator,从而可得出FOLD生成码如下:
迭代器FOLD的运作需要在每次的循环开始拷贝数据进累加器,一旦出现迭代次数多、计算数据量庞大的情况,数据拷贝耗时增加,从而导致程序执行时间加长。在迭代次数较多且数据量大的模型设计中,除了MAP无法建立满足需求模型的情况,尽可能采用MAP迭代器取代FOLD迭代器,同时对算法流程重新设计,缩减迭代时间,提高运行效率。
模型驱动下图像处理算法的优化除了模型设计的优化,还能使用KCG自带程序对模型执行优化处理,提高模型的运作效率。模型驱动下图像处理算法中,KCG中加设"Expand"内联模块优化图像处理算法,可以以内联函数形式生产代码,在执行代码过程中可以有效缩减调节函数产生的额外时间开销。同时,尽量选用调用次数频繁且操作实现简易的选用内联模块。可用KCG将模型局部变量约束为静态存储,设置为static.模型驱动下图像处理算法的优化过程中,对程序初始化设置时所有局部变量将会直接被分别配置定义,可缩减分配变量的额外时间,提高运行效率。
利用MAP迭代器执行Sobel算子,优化后的顶层模型如图1所示。由于MAP迭代器特性,模型驱动下图像处理算法拆分为两部分:首先迭代处理每个元素,实现初始矩阵每列之间的计算,再对处理后的矩阵转置,对每列元素迭代处理,实现初始矩阵每行之间的计算,最后转置得出最终输出图像矩阵[1].
图1 模型驱动下图像处理算法优化后顶层模型
图2为模型驱动下图像处理算法优化后中层模型MAP迭代器内部模型。将中层模型输入原始图像矩阵的行当作是MAP迭代器输入进行迭代计算[2].
图2 模型驱动下图像处理算法优化后中层模型
模型驱动下图像处理算法优化后底层模型迭代器计算方法和逻辑如图3所示。底层模型主要通过if-else板块实现行内首尾元素输出为0,否则算法计算当前索引匹配元素相邻两位元素之差,差值将赋值给结果数组中的该索引元素[3].通过模型仿真检测模型计算的结果与预期结果相符,模型建立准确。
图3 模型驱动下图像处理算法优化后底层模型
4 结语
模型驱动下图像处理算法优化在进行SCADE模型仿真过程中发现迭代器耗用时间长、运行效率较低的问题。为了提高模型执行率和节省迭代时间,通过SCADE建模工具的Sobel算子实现了对模型的优化完善,提高了模型运行效率,使得图像处理算法具有更高的安全性和可靠性。
参考文献
[1]周彰毅,黄浩,方伟,等。基于SCADE的航空发动机FADEC软件开发[J].测控技术,2018,37(1):110-115.
[2]王永国,呼明亮,王凌伟,等。基于模型驱动的四余度信号表决系统设计[J].航空计算技术,2016,46(6):117-121.
[3]徐启航,游安清,马社,等。基本图像处理算法的优化过程研究[J].计算机科学,2017,44(6):169-172.