C#和MATLAB混合编程在连铸坯裂纹检测中的应用

2017-06-28 15:12孙洁欧阳亚丽薛亮
关键词:铸坯连铸边缘

孙洁,欧阳亚丽,薛亮

(1.华北理工大学 电气工程学院,河北 唐山 063210;2.河钢集团唐山钢铁公司,河北 唐山 063000)



C#和MATLAB混合编程在连铸坯裂纹检测中的应用

孙洁1,欧阳亚丽1,薛亮2

(1.华北理工大学 电气工程学院,河北 唐山 063210;2.河钢集团唐山钢铁公司,河北 唐山 063000)

混合编程;铸坯裂纹;图像处理;红外热像图;特征提取

介绍了一种通过C#调用MATLAB生成的.NET组件实现二者混合编程的方法,以及利用混合编程的图像处理算法实现连铸坯裂纹的检测。通过红外热像仪在线实时采集连铸过程中铸坯红外热像图,C#调用MATLAB的图像处理函数对热像图进行处理及特征提取,从而识别目标。实验结果表明,通过C#和MATLAB混合编程的方法,可以充分结合两者各自优点,较好地实现连铸坯表面裂纹的检测。

随着中国钢铁规模的扩大和工业技术的发展,钢铁连铸在生产中所占的比例也随之增高。在钢坯连铸过程中,由于种种原因,铸坯表面会产生裂纹及其他的缺陷,给铸坯质量造成极大影响甚至影响生产。因此,提高铸坯质量、控制产品废品率的首要任务就是实时发现裂纹并采取措施予以清除[1]。基于红外热像技术的图像检测方法是一种新型的无损检测方法,而如何快速准确地从一幅红外热像图中识别出表面裂纹是目前研究的重要课题。

目前,基于红外图像处理技术的铸坯表面裂纹检测主要通过功能强大的图像处理软件完成,所以需要使用一种集强大数值运算功能、图像处理功能和强大界面实现功能为一体的开发软件。针对于目前通用软件开发效率低、功能单一、检测精度低和实时性不足问题,提出一种使用混合编程方式实现对图像的处理和界面设计以及数值的计算。

MATLAB是数据计算、系统控制与仿真、图像和信号处理、矩阵计算和建模等强大功能集合在一起的高性能软件,在很多领域得到了很好的应用,尤其是在对图像的处理过程中非常有优势[2]。但是其系统的可移植性不是很好,在可视化界面的设计上也表现平平,所以单凭MATLAB想要设计出功能完善、人机交互较为友好的界面是非常困难的。

C#是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言。它综合了Visual Baisc简单的可视化操作和C++的强大功能,具有强大的界面实现功能、快捷的执行速度、较好的算法和数据保密性,而且WIN7及后续微软系统分别内置了C#运行所需的.NET运行库,在.NET运行库的支持下,.NET框架的各种优点在C#中表现得淋漓尽致。但是它的数值计算能力比较差,一旦涉及大量的运算,其速度会大大降低。导致在处理的过程中会出现耗费的时间较长,处理不及时等问题。

由此可见,C#和MATLAB具有一定的互补性,如果可以将二者的优势充分结合起来,混合编程,就可以开发出一种运行效率高的界面型应用窗体[3]。将C#和MATLAB混合编程应用于基于红外热像技术对连铸过程中铸坯表面裂纹的检测中。采用均值滤波对图像进行平滑去噪,Gauss-Laplace边缘检测算子对目标边缘进行提取,在检测系统开发上选择C#和MATLAB混合编程的方法,C#开发可视化界面,MATLAB对采集到的红外热像图进行图像数据处理运算,从而获得图像处理结果,取得较好的应用效果。用户可通过功能区的不同按钮实现参数设置、数据保存等功能,人机界面合理友好。

1 C#和MATLAB混合编程

C#和MATLAB可通过以下4种方式实现混合编程[4]:

(1)C#调用MATLAB的*.m文件生成的C语言DLL;

(2)C#调用MATLAB工作区计算并返回结果;

(3)C#调用MATLAB的DeployTool生成的COM组件;

(4)C#调用MATLAB的DeployTool生成的.NET组件。

考虑到.NET具有编译速度快、运行稳定及可移植性较好等特点,采用.NET方式实现混合编程。

首先在MATLAB中将图像处理的功能模块编译成M文件,然后利用MATLAB的DeployTool生成.NET组件,具体步骤如下:

matlabR2012b(64位) + vs2010(64位)+ win7(64位)(上位机的配置环境);

(1)编译MATLAB的M文件,*.m :Function [a] = imagepro(b);

(2)在command window输入deploytool命令,然后创建Project,选择.NET Assembly类型,确定项目名称及储存位置,生成新项目,如图1所示。

图1 生成新项目

(3)在Project中添加imagepro.m文件,点击build the project生成。如图2所示。

图2 添加m函数

下面是C#对生成的.NET组件的调用,流程如下:

从D:MATLAB oolboxdotnetbuilder binwin64v2.0(视本机安装路径而定)中复制出MWArray.dll到D:Visual Studio 2010My projectsmatlabtestmatlabtest in Debug目录下(视本机安装路径而定),将imageprodistrib里的imagepro.dll同样复制到debug目录下。然后右击解决方案添加引用,浏览debug目录。如图3所示。

图3 添加引用

C#调用MATLAB过程中如出现类型初始化异常现象,将项目属性-目标平台改成X64。以上步骤实现了C#对MATLAB的.NET组件的调用。

2 在裂纹检测中的应用

2.1 缺陷图像平滑滤波

首先将采集到铸坯表面存在裂纹的红外热像图传输至计算机,为了消除噪声的影响从而更加精确地对图像边缘进行提取,要对图像进行平滑处理,同时也为识别图像特征信息做铺垫[5]。选择均值滤波来消除噪声。

均值滤波是比较经典的线性算法。邻域平均法是均值滤波的主要方法,它的原理是将当前像素点的数值替换成周围8个像素的平均值。其中3X3均值滤波应用最为广泛且比较经典。目标像素点和它周围8个像素点组成一个滤波模板,如图4所示,然后将模板像素点的值替换成8个周围像素点的平均值。

图4 3X3滤波模板

均值滤波的公式如下:

(1)

式中:f(i,j)表示一副噪声灰度图像,g(i,j)表示处理后图像在该点的像素值,m表示邻域内除了本身以外的像素个数,S表示邻域内除了本身以外的像素点集合。对图像进行平滑处理,就将模板与图像进行卷积,即可滤出图像中的噪声,常用的3X3模板f如下:

(2)

2.2 缺陷图像边缘检测

LOG算子通过二阶导数的过零点来检测图像的边缘,是一种基于二阶的边缘检测[6]。该算法首先对图像进行高斯滤波,然后再求其拉普拉斯二阶导数,最后可以通过检测滤波结果的零交叉获得图像或物体的边缘。所以它对缺陷图像进行滤波去噪处理,最大程度上抑制噪声后,再对滤波后的图像的边缘进行提取。Marr视觉理论是边缘提取的思想来源。它是高斯滤波平滑器和拉普拉斯锐化滤波器的结合,是一个先滤波再微分的过程。LOG算子的推导如下:

g(x,y)=2(G(x,y)*f(x,y))2=+

(3)

其中g(x,y)表示输出图像,f(x,y)表示输入图像,G(x,y)表示高斯滤波函数,2为拉普拉斯算子,*为卷积符号。

由卷积的交换性可得:

g(x,y)=2G(x,y)*f(x,y)

(4)

LOG(x,y)=2G(x,y)=(-1)(5)

LOG算子是5X5的模板,如下所示:

(6)

LOG算子的尺度参数δ的选取非常重要。参数δ选取较大时,对噪声的抑制效果较好,定位精度较低;反之,如果参数δ选择较小,则会出现定位精度高,但是边缘较为毛躁,噪声影响较大的现象。因此,根据实际情况选取合适的尺度参数δ以得到较好的处理效果是非常重要的。原图、均值滤波后的图像及LOG边缘检测的图像如图5、图6所示。

图5 裂纹灰度原图

图6 图像滤波及边缘提取

3 系统的软件设计和仿真结果

系统采用C#设计程序界面,系统可实时在线显示板坯热像图与处理后的热像图,系统具有缺陷图像数据信息自动保存,历史记录查看与导出,参数在线设置等功能;系统首先从C#界面获取连铸坯热像图数据,将数据传送至.NET组件,通过MATLAB的图像预处理与边缘检测后,通过边界跟踪法计算出裂纹的长度、周长、面积等特征信息,系统根据特征数据判断是否存在裂纹,若存在,启动裂纹报警并给出裂纹等级,同时保存裂纹产生的时间及裂纹相关数据信息至数据库,以便技术人员分析决策。系统程序流程如图7所示,检测系统界面如图8所示。

如图8所示,系统对板坯热像图进行处理及特征提取,计算得裂纹长度为169,周长为328,面积为886,裂纹的圆形度为9.67,通过与设定的阈值进行比较得出裂纹存在,等级为2级,系统发生报警并保存缺陷图像信息。

图7 程序流程图

图8 连铸板坯裂纹检测系统

经仿真实验表明,本程序在连铸坯裂纹检测应用中准确率较高,运算速度较快,是一个较为实际的设计方案。此方案能够有效识别裂纹,减少生产过程中板坯报废率,辅助技术人员更好地操纵设备,提高生产质量产量。

4 结论

(1)该项目介绍了一种通过MATLAB生成.NET组件供C#调用实现混合编程的方法,应用在红外热像技术在连铸坯表面裂纹检测系统中。

(2)开发了基于C#的连铸坯裂纹检测系统,大大提高了开发效率,经仿真实验,本系统具有较好的可操作性和移植性,同时缺陷图像识别效率及准确率较高。结合MATLAB和C#二者优势,较好地实现了连铸坯裂纹的检测,具有一定的实用性,可应用于实际生产。

[1] 李培玉,张志欣,董月.基于图像特征的板坯表面裂纹检测方法[J].钢铁研究学报,2013,25(8):58-62.

[2] 陈爱梅,李慧东.MATLAB与C#混合编程在数字图像处理中的应用[J].电脑开发与应用,2014,243(11):67-69.

[3] 李洁,王瑞富.Matlab和C#混合编程在SAR图像船只检测中的应用[J].测绘与空间地理信息,2017,40(2):75-78.

[4] 张燕,马永杰,袁秋林.Visual C#与Matlab混合编程方法及其实现[J].西北师范大学学报自然科学版,2008,44(6):41-43.

[5] 孙洁,孟庆娇,黄晓婷.基于红外热像技术铸坯表面质量检测的研究[J].红外技术,2015,37(8):707-710.

[6] 邹福辉,李忠科.图像边缘检测算法的对比分析[J].计算机应用,2008,28(s1):215-216.

Application of Mixed Programming of C# and MATLAB in Crack Detection of Continuously Cast Slab

SUN Jie1,OUYANG Ya-li1,XUE Liang2

(1.College of Electrical Engineering,North China University of Science and Technology,Tangshan Hebei 063210,China;2.Tangshan Iron and Steel Company,Hebei Iron Steel Group,Tangshan Hebei 063000,China)

mix-programming; crack of cast slab; image processing; infrared thermal image; feature extraction

A method to realize the mixed programming of the two components by the.NET component generated by the C# call MATLAB,and the image processing algorithm of mixed programming to realize the detection of the continuous casting slab crack were introduced.The infrared thermal image of the slab during the continuous casting process was collected online by the infrared thermal imager,and the image processing function of the C# called MATLAB was to be used to process the thermal image and extract the features.The experimental results show that the method of C# and MATLAB mixed programming can fully combine the advantages of both,and can realize the detection of surface cracks of continuous casting slab.

2095-2716(2017)03-0057-07

2017-03-29

2017-05-17

河北省自然科学基金项目(F2013209326)。

TG245

A

猜你喜欢
铸坯连铸边缘
连铸连轧生产25CrMo4齿轮钢带状组织的控制实践
低碳铝镇静钢铸坯长度方向上T.O和夹杂物的分布规律研究
连铸塞棒中间包冶金集成技术的应用实践
60Si2Mn弹簧钢连铸方坯生产实践
出坯区辊道辊面损伤原因分析与改善措施
一张图看懂边缘计算
连铸板坯质量在线诊断系统的应用
连铸钢坯氧化铁皮产生的原因及降低措施
一种新型铸坯定重切割技术
在边缘寻找自我