首页>论文>正文
日期
09/12
2006
咨询
  • QQ扫一扫

  • Vision小助手
    (CMVU)

红外热波无损检测中温度-时间双对数曲线的绘制
收藏
2006-09-12 09:10:56来源: 姜长胜

摘要:红外热波序列图像处理是红外热波无损检测技术的重要组成部分。温度-时间双对数曲线的绘制是红外热波无损检测系统软件的一个重要功能。利用温度-时间双对数曲线可以对试件材料不同性质的损伤进行识别,并可以判断出缺陷所在处的深度。因此温度-时间双对数曲线的绘制对于红外热波无损检测技术具有重要的意义。提出了一种利用GDI+技术进行温度-时间双对数曲线绘制的方法,在项目应用中取得了较为理想的效果,具有一定的实用价值。

关键词:红外热波,无损检测,曲线绘制,GDI+.

0. 引言

红外热成像无损检测技术是一门新兴的学科,它因具有快速、无损、非接触、无需耦合、快速实时、大面积、远距离检测等优点而得到迅速发展[1],是一种主动式的检测技术。红外热波序列图像处理是红外热波无损检测技术核心的一部分[2]。在红外热波无损检测软件系统中,温度-时间双对数曲线的绘制是一个非常重要的功能。被测试件上各个点的温度随时间的变化情况对于分辨正常点和缺陷点特别有用[3]。利用温度-时间双对数曲线可以对试件材料不同性质的损伤进行识别,并可以判断出缺陷所在处的深度。基于以上几点原因,温度-时间双对数曲线的绘制对于红外热波无损检测技术具有重要的意义。

GDI+(Graphic Device Interface Plus)是Microsoft Windows XP、Microsoft Windows Server2003操作系统的图形引擎,是早期的图像设备接口GDI的继任者,对GDI的很多功能进行了优化,并提供了新的附加功能[4]。本文提出了一种利用GDI+技术,进行温度-时间双对数曲线绘制的方法,使用Visual C++.NET2003实现。

1.数据文件的格式

 1.1 采集装置
 系统中的热像仪根据实际所需要的空间分辨率和幅度分辨率[5],选配FLIR公司的ThermaCAM SC3000热像仪。该热像仪具有320×240像素的较高的空间分辨率,使用14bit数字输出接口[6],SC3000可将实时数据直接传输到台式机上进行记录和分析。

 1.2 文件格式
热像仪的空间分辨率和幅度分辨率决定了输出的文件中每个像素的数据为14bit,表示该点的信号值,反映了该点温度的高低。该文件每一帧的数据长为320像素,宽为240像素。每个像素占两个字节(最高两位不用,为零)。故一帧的数据大小为:320*240*2 = 153600(字节/帧)。

用Ultra Edit-32编辑器打开某一数据文件,以十六进制方式查看,前面两个数字为低八位,后面两个数字为高八位。例如D0 2D,D0为两个字节中的低八位,2D为两个字节中的高八位。数据文件以帧的播放前后顺序,按照上面所述记录不同点在不同时刻的信号值。

2.信号值提取

 一条温度-时间双对数坐标轴下的关系曲线反映的是某一点上温度随时间变化的情况,所以需要对该点从实验开始到最后的信号值从数据文件中进行提取。该功能主要由类CDataOut实现,具体方法如下:

在长320像素,宽240像素的范围内选择一点,从第一帧图像到最后一帧图像,依次做如下操作:

在当前帧利用公式1在原数据文件中定位该点,其中FRMSIZE是一帧的大小,为153600字节,frm表示的是当前是第几帧,WIDTH代表一帧的宽度为320像素,x和y分别代表该点的横坐标和纵坐标。将该点的信号值存入到类CCurve的成员数组m_arrData[index]中,其中index是当前用户选择的第几个点。

pos = FRMSIZE*(frm-1) + y*WIDTH*2 + 2* x        (式1)

3.绘制曲线

提取某点的所有信号值之后,便可进行温度-时间关系曲线的绘制。绘制曲线有两种方案,一种是直接按照提取出的信号值,进行曲线绘制,如图1所示。这种绘制方案的效果不好,很难区分出缺陷点对应的曲线与正常点对应的曲线分叉点的位置,进而无法判断出缺陷所在处的深度以及损伤的性质。

      

另一种方案是对信号值和时间分别取对数后,进行曲线绘制,如图2所示。这种绘制方案可以很好地区分出缺陷点对应的曲线与正常点对应的曲线分叉点的位置,得到分叉点所在的时间tm,再根据式2从而判断出缺陷所在处的深度d以及损伤的性质[7],因而实际应用中采用第二种方案。

               (式2)

在视图类中有一个成员变量index,它记录的是当前要画的是第几条曲线,它的范围在0~8之间。此外,为了画出八条不同颜色的曲线,需要有八支不同颜色的笔。画笔使用GDI+的类Pen,由于要与曲线的索引号一一对应,以便于写循环代码,所以在视图类中声明类Pen的指针数组m_pPen[8]。采用指针数组是因为在初始化时需要用到类Pen的Clone方法。

视图类有一成员变量是CPoint的数组m_ptSel[8],它负责记录用户点中的点的位置,以便于在图像上以对应曲线颜色的十字架形式标出。初始时,八个点均为零。

当用户启动“温度-时间曲线”功能之后,用户在图像上点击某一点,视图类的OnLButtonDown方法即被调用,在该函数中,首先判断视图类的index是否小于8,如果小于8,则将用户刚才点击点的位置赋值于数组m_ptSel第index个元素,并且将该点用数组m_pPen对应的画笔以十字架的形式画出。生成一个CDataOut的对象,并将其输出点设为刚才用户点击的点的位置。接下来执行对该点从实验开始到最后的信号值从数据文件中进行提取,具体算法见2. 信号值提取。更新绘制曲线的面板,以便画出曲线,然后让视图类的index自增一,准备画下一条曲线。

类CCurve是绘制曲线的主要类,该类中有一个CArray类型的数组m_arrData[8],它每个元素本身又是一个通用型数组,记录对应的点的不同时刻的所有信号值,在数据输出的时候,将读出的信号值存入数组m_arrData[index]中,其中index是当前用户选择的第几个点。
绘制曲线的工作主要在类CCurve的OnPaint方法中实现。在该方法中,首先绘制曲线面板的背景和曲线的基准线。CCurve类中有两个PointF类型的指针数组,分别为m_pDataPt[8]和m_pCurvePt[8],m_pDataPt数组里的每个指针根据m_arrData[i]的元素个数,申请内存空间,所以m_pDataPt每个元素也是一个数组,同理m_pCurvePt每个元素也是一个数组。m_pDataPt[i]记录的是第i条曲线上的各个点的实际坐标,而m_pCurvePt[i]记录的是第i条曲线上的各个点经过转换以后要在面板上画的点的坐标。在OnPaint方法中作八次循环,设循环变量k,k从0到7,在每次循环中,首先回收m_pDataPt[k]和m_pCurvePt[k]的空间,将它们置为空,然后根据m_arrData[k]的元素个数为m_pDataPt[k]和m_pCurvePt[k]申请内存空间。从数组m_arrData[k]中依次取出信号值,进行对数转换。例如,当前是m_arrData[k]的第u个元素,则将该元素的信号值data如式3进行运算,将u的值如式4进行运算:

m_pDataPt[k][u].X = lg(u/15)         (式3)
m_pDataPt[k][u].Y = 20*lg(data)         (式4)

因为采集的频率是15Hz,u代表的是第几帧,所以u/15即为时间,这里X的值是时间的对数。Y的值是信号值的对数,这里乘以20,是为了让显示的效果更好。

接下来找出数组m_pDataPt[k]Y坐标的最大值记为max,相应的索引值记为maxidx,然后再从maxidx开始遍历该数组,找出数组m_pDataPt[k]Y坐标的最小值记为min,接下来作如下循环:
for(INT_PTR i = maxidx; i < m_arrData[k].GetCount(); i++)
{
m_pCurvePt[k][i-maxidx].X=rect.Width()*(m_pDataPt[k][i].X-
m_pDataPt[k][maxidx].X)/(m_pDataPt[k][m_arrData[k].GetCount()-1].X - m_pDataPt[k][maxidx].X);
m_pCurvePt[k][i-maxidx].Y=rect.Height()-rect.Height()*(m_pDataPt[k][i].Y-min)/(max-min);
}
上面的循环是为了得到在面板上绘制的点的坐标而进行的转换,其中i从maxidx开始,是因为分析人员只关心从信号值最大的地方开始的曲线的变化趋势。rect是面板轮廓的矩形。第一个式子是把原始数据的横坐标映射到该矩形宽度范围内的各个点上;同理,第二个式子是把原始数据的纵坐标映射到该矩形高度范围内的各个点上,所不同的是,由于Windows窗口默认的是设备坐标,所以,还要用矩形的宽度减去得出的值,才是在面板上显示的坐标。利用GDI+类Graphics对象的成员函数DrawCurve,可以很方便地绘制曲线[4],将数组m_pCurvePt[k]作为参数传给该方法,便可绘制出第k条温度-时间双对数坐标轴下的关系曲线。

4.实验结果

实验结果如图3所示。图3中的热波图像选用的是玻璃钢平底洞试件,它是在试件背面人工钻制6个孔径相同、深度不同的平底孔的试件。从图中可以看到红色曲线是正常的无损区域的温度(对数)—时间(对数)关系,其余三条曲线对应的是3个孔径相同、深度不同的平底孔的温度(对数)—时间(对数)关系。借助基准线可以找到3个缺陷点与正常点对应曲线分叉点所对应的时间,根据时间与深度的关系,可以得到深度。

 

6.结论

通过以上的理论分析和实验证明,本文提出的利用GDI+技术进行红外热波无损检测中温度-时间双对数坐标轴下的关系曲线绘制方法,在项目应用中取得了较为理想的效果,对于今后的层析工作具有重要意义,具有一定的实用价值。

参 考 文 献

[1] 郭天太. 红外热成像技术在无损检测中的应用[J]. 机床与液压,2004,(2):110~111.
[2] 王迅,金万平,张存林等. 红外热波无损检测技术及其进展[J]. 无损检测,2004,26(10):497~501.
[3] Steven M.Shepard.  Recent Advances in Pulsed Thermography[J].  InfraMation 2004 Proceedings, 2004,ITC 104 A 2004-07-27.
[4] 周鸣扬,赵景亮.  精通GDI+编程[M].  北京:清华大学出版社, 2004.2:14~15, 33~35.
[5] 章毓晋.  图像工程(下册) 图象理解与计算机视觉[M].  北京:清华大学出版社, 2000.8:26.
[6] 金万平,张存林.  材料检测和表征的新技术-热波检测及其应用[J]. 新材料产业,2004,(9):52~55.
[7] 李艳红,张存林,金万平等. 碳纤维复合材料的红外热波检测[J]. 激光与红外,2005,35(4):262~264.