在建筑业中,评价墙体裂纹,地面裂纹是评价房屋质量的一项重要指标。一个嵌入式系统装置一般都由嵌入式计算机系统和执行装置组成,嵌入式计算机系统是整个嵌入式系统的核心,由硬件层、中间层、系统软件层和应用软件层组成。执行装置也称为被控对象,它可以接受嵌入式计算机系统发出的控制命令,执行所规定的操作或任务。执行装置可以很简单,如手机上的一个微小型的电机,当手机处于震动接收状态时打开;也可以很复杂,如SONY 智能机器狗,上面集成了多个微小型控制电机和多种传感器,从而可以执行各种复杂的动作和感受各种状态信息。嵌入式系统硬件层的核心是嵌入式微处理器,嵌入式微处理器与通用CPU最大的不同在于嵌入式微处理器大多工作在为特定用户群所专用设计的系统中,它将通用CPU许多由板卡完成的任务集成在芯片内部,从而有利于嵌入式系统在设计时趋于小型化,同时还具有很高的效率和可靠性。
本研究将问题划分为以下两个部分:
(1)裂纹宽度测量算法;
(2)将以上所开发软件移植到ARM开发板,并优化算法提高软件运行速度。
1 裂纹宽度测量算法
计算裂缝宽度关键是要利用图像分割技术得到裂缝的真正边缘。虽然已有文献介绍了多种分割方法,但是未见有针对裂缝测试仪采集到的裂缝图像进行处理的方法。
1.1 图像获取
图像获取过程如图1所示:被检测的裂缝通过光学系统在CMOS图像传感器上成像,然后通过USB接口将裂缝图像输出到ARM上进行处理。ARM(Advanced RISC Machines)是微处理器行业的一家知名企业,设计了大量高性能、廉价、耗能低的RISC处理器、相关技术及软件。技术具有性能高、成本低和能耗省的特点。适用于多种领域,比如嵌入控制、消费/教育类多媒体、DSP和移动式应用等。
图像获取
裂缝图像如图2所示。裂缝宽度分布范围较广,自几十至几百像素不等,但远远小于图像的宽度值。裂缝周围有部分噪声,有的图像含有大量污染区域,这成为裂缝位置锁定的难点。
1.2 OTSU图像分割
通过与已有图像分割方法如:直方图法、OTSU法、区域分割法等进行比较发现,OTSU在最后的效果上占有明显的优势。
图像分割的结果如图3所示。观察结果,很容易发现图像的边缘很大区域被错分为与裂缝一样。于是直接计算裂缝宽度时会导致将错分的区域计算成裂缝。因此除了计算裂缝宽度外,对候选裂缝集合进行有效剔除是另一个重要任务。
Sobel边缘检测算子
分割完图像后,计算所有可能成为裂缝的区域的宽度。采用从图像给定行的起始位置开始计算裂缝宽度,当发现像素灰度由0变为255,记为一个裂缝的左边缘起始位置;当查找到像素灰度由255变为0,记为一个裂缝的右边缘结束位置。通过这种方法可以获取给定行的所有可能的裂缝宽度。但是在具体试验中发现,计算对单行的裂缝进行宽度测量还是存在比较大的误差。于是采用求取给定行上下5行共10行的平均值的方法。
1.3 Sobel边缘检测
以上小节得出了裂缝的候选集合,但是事实上这个候选集合含有大量的非裂缝区域。这一节中的主要内容是设计算法剔除这些干扰裂缝,获取更小的裂缝候选集合。在试验中,由于裂缝具有明显的边缘,而干扰图像区域有比较模糊的边缘或者仅有一个边缘等,通过分析,提出采用Sobel边缘检测的方法进行裂缝位置的锁定。Sobel算子由两个卷积核组成,如图4所示。
通过对原始图像采用Sobel边缘检测得到如图5所示结果。
Sobel边缘检测结果图像
OTSU分割后的结果
但是,这个结果很明显存在很多微小的干扰,这些干扰必须予以剔除,否则将对锁定裂缝边缘没有任何效果。通过对边缘检测结果图像仔细分析发现,虽然存在微小干扰,但是他们的灰度值普遍偏小,针对这一发现,对缘检测结果图像做与上一节中一样的图像分割,这会将微小的干扰有效地剔除。如图6所示。
同过对分割后的边缘图像进行观察,图像仍然存在一些微小的干扰,但这些干扰相对于未处理的缘检测结果图像已经很少,将在后续的处理中对图像裂缝添加附加约束,从而取出这些干扰的影响。
1.4 基于裂缝特征的附加约束
通过对大量的裂缝图像进行分析,发现图像裂缝有如下特点:
(1)裂缝灰度值低于墙体的灰度值。
(2)裂缝的宽度相对于整个图像不超过图像宽度的1/3。
(3)污染的墙体区域一般呈大的块状出现,且很多仅含有一个边界,另一边界延伸至图像外面。
(4)墙体的一些微小的干扰呈小块状出现。
(5)裂缝一般为带状。
使用ARM处理器处理图像,由于其速度慢且有实时性要求,故不能处理整张的图像,换句话说,必须处理局部图像。这就很明显增加了剔除候选裂缝的难度。该系统显然是无法使用特点(4)、特点(5)的。
通过添加以上约束,实验效果有了明显的提高。
图7是PC机的结果,由于同时使用了5个约束效果比较好。图8是ARM系统运行的截图,由于在ARM上不方便分步计算出每一个步骤,故直接给出了带有测量结果的截图
2 、基于Linux的QT界面设计算法
前文讨论的是主要的算法部分,完整的裂纹测量系统还包括用户接口部分,即图形界面接口。在ARM上采用QT进行界面设计已经比较成熟,它具有以下主要特点:
(1)入门容易、学习成本低。了解基本概念后就可以边查文档边写程序。
(2)跨平台效果好。本来是Linux下的工具库,Linux是一类Unix计算机操作系统的统称。Linux操作系统的内核的名字也是“Linux”。Linux操作系统也是自由软件和开放源代码发展中最着名的例子。严格来讲,Linux这个词本身只表示Linux内核,但在实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU 工程各种工具和数据库的操作系统。Linux得名于计算机业余爱好者Linus Torvalds。
3、 软件移植与程序优化
由于最终的程序是运行在ARM系统上,而由于ARM处理图像时的速度慢与裂缝测量仪器的实时性要求,必须对程序进行优化,并将算法移植到ARM系统上,使之可以正确运行。
程序的优化是一个问题,虽然现在的ARM速度已经提高了很多,但是在处理图像时还是很吃力,加上算法中需要对原图像两次独立处理,相当于加倍了ARM的负担。通过对大量裂缝图像的分析,针对前文中提出的裂缝特点以及结合ARM本身的运算速度条件,提出剔除处理全部图像的算法。采用了只处理给定行位置上下10行的区域。通过只处理这20行图像,极大地提高了程序的运行速度。以上方法并行,还采用多线程编程方法,通过将图像采样与图像的处理分为两个进程完成,有效地提高了程序的运行速度。
4 、实验结果分析
该程序分别在PC机和ARM开发板上运行,效果如图7,图8所示。
通过大量的实验发现该算法能较好地检测出裂缝的分布和宽度。在算法中采用了结合OTSU图像分割与Sobel边缘检测的混合算法进行裂纹检测与宽度测量。这种算法能分别有效利用边缘检测与图像分割两种方法各自的优点。
5 、结 语
针对墙体裂纹测量,设计出了一套适用于裂缝宽度检测的算法。该算法能较好地检测出裂缝的分布和宽度。采用边缘检测与图像分割混合的方法并通过对大量图像进行分析,对算法添加了一系列符合图像裂缝特征的约束条件,极大地提高了算法的准确性与健壮性。分别将程序运行于PC机系统与ARM系统,并针对ARM系统的特点对算法进行了一系列优化,引入了并行处理技术,在提高ARM运行速度的同时,使得ARM系统检测出的结果达到与PC机系统几乎同等的效果。