基于DSP数字信号处理器的墙体裂缝监测图像的处理
现代各种建筑行业中,墙体因为外力碰撞、建筑质量、热胀冷缩等原因,往往会产生一些裂缝。因此,对墙体裂缝的监测与分析就显得十分必要。利用图像处理的方法来对墙体裂缝进行监测和分析是比较方便且有效的方法之一。但由于人为或自然因素的影响,复杂的背景噪声一般都会叠加在有用的墙体表面图像数据中,所以,在对裂缝进行图像分割前,必须通过滤波来减少噪声,增强裂缝边缘效果,然后再进行图像分割。 传统的数字图像处理系统一般是基于PC机来实现的,即由图像采集卡采集图像,再将图像数据通过总线或网络传输给PC机,然后在PC机上进行图像处理。此类系统通常比较复杂。且难以小型化,不方便随身携带和检测。因此,本文介绍一种基于DSP芯片来完成数字图像处理的实现方法。该方法利用CCD传感器进行图像采集,然后在DSP内部通过算法对图像进行处理,再将处理后的图像通过液晶进行显示,最后由图像来判定裂缝的状态和细节等。此方案可使系统更加简洁、实时性更强,因此,可在便携式图像检测设备中得到一定的应用。 1 算法简介 通过CCD图像传感器采集的图像,还需对其进行一定的处理,才能更好的反映出墙体裂缝的细节。对图像进行处理需要一定的算法支持,要根据算法内容进行编程,最后通过移植程序到DSP中,以最终实现图像处理。本文使用的是中值滤波、图像灰度值修正、迭代阈值法二值化图像分割等算法。 由于采集的初始图像中的噪声会降低图像的质量,使图像特征淹没,给分析带来困难。因此,去除噪声、恢复原始图像是裂缝图像处理中的一个重要内容。中值滤波是一种非线性的信号处理方法,可在一定条件下克服线性滤波器带来的图像细节模糊问题,对滤除脉冲干扰最为有效。中值滤波一般采用一个含有奇数点的滑动窗口(通常为二维窗口)来用窗口中各点灰度值的中值来替代指定点(一般是窗口的中心点)的灰度值。中值滤波的窗口形状和尺寸对滤波器的效果影响较大,因此,需根据不同要求选用不同的窗口形状和尺寸。由于裂缝图像中的脉冲干扰较多,因此,为了保证去噪时失真小,本文笔者选择3×3的方形窗口来进行中值滤波。 直方图修正主要是为了调整图像的亮度,增强图像中感兴趣的灰度区域。中值滤波后,由于墙体裂缝图像的特殊性,图像中的裂缝灰度值往往较小、较灰暗,而背景灰度值往往较大、较明亮。因此,笔者采用了一种线性拉伸变换的方法来增强图像的灰度效果。若由用户输入感兴趣的灰度区域范围,当某点的像素值小于范围的最小值时,该点像素值赋值为0;大于范围的最大值时,该点像素值赋值为255。若在范围中,则计算出该值在范围中的比例,再用比例乘以255,以得到新的像素值。这样,就将感兴趣的灰度区域拉伸到0~255,从而达到对比度增强的目的。 在图像进行灰度值拉伸修正后,为了便于裂缝观察,还需要将裂缝从图像中分割出来。由于墙体裂缝与背景在灰度级上有明显的区别,所以,选择合适的阈值T便能实现分割。若像素灰度值小于T,则将其灰度值设置为0,否则,将其灰度值设置为255。阈值的选取是关系图像分割质量好坏的关键,本文采用迭代阈值法来求得阈值T。其灰度的阈值分割变换公式如下: 式(1)中,T为采用迭代阈值法得到的阈值。
2 硬件系统设计 利用DSP完成墙体裂缝图像的采集与处理时,需要建立相应的硬件平台。该平台需要能实时完成图像的采集、处理与分析。本文采用TI公司的DSP芯片TMS320DM642作为主处理芯片,并完成相应的外部电路设计,其具体结构如图1所示。 用DSP处理器TMS320DM642作为主处理器,其最高能达到600 MHz的工作频率,完全能满足本文的墙体裂缝图像分割提取的实时处理要求。设计时,先利用CCD图像传感器采集墙体裂缝图像,再经过AD转换将图像数据送到CPLD中,并在缓冲后将数据传输到DSP进行处理,该DSP芯片可利用各种算法对图像进行处理。若数据需要存储,则可以利用CPLD将所需存储的数据在DSP与FLASH、SDRAM之间进行传递。当图像处理完成后,再通过LCD接口电路将图像在LCD上显示,从而完成图像的实时分析、处理与显示。
3 算法实现流程 该图像处理算法需要由相关的程序来实现,最后再将程序嵌入到DSP处理器中。当墙体裂缝图像通过CCD图像传感器采集以后,其后的处理过程首先要对图像进行中值滤波,其次通过灰度值修正,取得最优阈值后再进行二值化分割,以完成对图像的处理。 中值滤波算法的C语言实现过程首先是确定中值滤波窗口与形状,然后将窗口内的像素值存入数组中,再通过冒泡法对该数组进行排序以取出中值,最后用该中值替换原来窗口的中心像素,至此,便实现了图像的中值滤波。由于墙体裂缝图像的特殊性,灰度值修正算法的C语言实现过程是先获取用户感兴趣的灰度区域[A,B],再利用循环对每个像素点的值M进行判断,若MB,则将M赋值为25 5,若A
式中INT为取整,通过以上运算,便可实现感兴趣区域的灰度拉伸,使对比度增强。图2所示是通过C语言实现中值滤波与灰度修正的具体流程图。 在阈值分割算法的C语言实现过程中,由于裂缝图像中的裂缝和墙体背景的灰度值相差较大,因此,其直方图会呈现明显的双峰形状,而将该谷值作为分割的阈值来进行二值分割会得到较好的分割图像。一般情况下,采用迭代阈值分割法比较适合。用迭代的方法来对阈值进行迭代,能够自适应地寻找出最优的阈值。然后将每个像素值与阈值进行比较,大于阈值时,将该点的像素值置为255;小于阈值时,将该点的像素值置为0。此时,便完成图像的二值化分割。在整个过程的运行中,主函数先开始执行,并先进行初始化,包括将图像数据装入到指定的存储空间,设置图像的边界和大小,通过迭代阈值法得到最佳阈值T等,接着再进行中值滤波,然后进行灰度修正,再后进行阈值分割,至此便完成了整个图像的处理过程。通过C语言实现阈值分割算法以及整个图像处理的流程如图3所示。 4 仿真结果分析 本文利用DSP集成开发平台CCS对裂缝图像的处理进行了仿真,并通过建立新的工程将主程序以及相关的库函数加入到工程中,然后在配置存储空间和编译链接后,链接了仿真器,并将生成的下载文件下载到仿真器中,最后设置断点,开始运行程序,观察每次图像处理的结果。其具体的仿真结果如图4所示。 在图4中,图4(a)为原图像,(b)为经过中值滤波后的图像,该图像中的噪声有所减少,但图像也开始有点模糊; (c)为灰度调整后的图像,该图像中亮度明显增加,裂缝与背景的对比度明显提高,细节也较明显; (d)为利用迭代阈值法进行二值分割后的图像,可以看出,该图像中的裂缝基本被分割出来,粗的裂缝清晰明显,细的裂缝分割效果也基本满意,可以达到裂缝图像去噪、增强、分割的目的。 5 结束语 本文主要探讨墙体裂缝图像的预处理过程以及算法的DSP实现。该方法通过C语言编程并利用DSP可完成图像采集、中值滤波、图像增强、图像分割四个步骤,从而完成整个裂缝图像的处理过程。墙体裂缝图像经处理后,裂缝能较清晰的得到显示与分割,而且细节信息基本保留,因而可为其他处理做准备。由于该方法是通过DSP来实现整个过程,故其硬件系统结构简洁。事实上,本文的方法也可在一些便携式墙体裂缝检测设备中得到应用。
|