1
基于MATLAB的数字图像处理研究
1.8.4 6.4 图像细化

6.4 图像细化

对图像细化的过程实际上是求一图像骨架的过程。骨架是二维二值目标的重要拓扑描述,它是指图像中央的骨架部分,是描述图像几何及拓扑性质的重要特征之一。细化的目的就是在将图像的骨架提取出来的同时保持图像细小部分的连通性,特别是在文字识别、地质识别、工业零件识别或图像理解中,先对被处理的图像进行细化有助于突出形状特点和减少冗余信息量。

细化基本思想是“层层剥夺”,即从线条边缘开始一层一层向里剥夺,直到线条剩下一个像素为止。图像细化一般作为一种图像预处理技术出现,目的是提取原图像的骨架,即将原图像中线条宽度大于1个像素的线条细化成只有一个像素宽,形成“骨架”,形成骨架后能比较容易地分析图像,如提取图像的特征。图像细化大大地压缩了原始图像,并保持其形状的基本拓扑结构不变,从而为文字识别中的特征抽取等应用奠定了基础。

细化分成串行细化和并行细化。串行细化即是一边检测满足细化条件的点,一边删除细化点。并行细化即是检测细化点的时候不进行点的删除只进行标记,而在检测完整幅图像后一次性去除要细化的点。

常用的图像细化算法有hilditch算法、pavlidis算法和rosenfeld算法等。细化算法应满足以下条件:将条形区域变成一条薄线;薄线应位于原条形区域的中心;薄线应保持原图像的拓扑特性。

pavlidis细化算法和hilditch细化算法在上面的处理过程中都取得了较好的效果,其中hilditch细化效果特别好,而Y方向细化算法使得图像有些失真,X方向信息完整,Y方向信息基本全无。现在想处理的图像不是上面的图像而是现场的测试数据,目的是要进行裂缝的识别,换句话说就是识别出正弦曲线。在这个过程中要完全保留X方向的信息,有利于裂缝的识别,同时要淡化Y方向的信息,更好地去除噪音的影响。这里Y方向细化方法使得图像有些失真,但对后面的裂缝识别是有好处的。hilditch细化算法在这里取得很好的效果,这是因为所选的这幅图像刚好是规则地满足细化矩阵的要求。但现场数据得到的测井图像不会是这样规则,我们可以从现场测井数据的处理中看到它的不足之处。

从现场数据的处理情况看,pavlidis细化图像和hilditch细化图像都不能让人满意。而Y方向细化图像却取得了比较好的效果。

hilditch、pavlidis、rosenfeld细化算法区别:这三类算法都是在程序中直接运算,根据运算结果来判定是否可以删除点的算法,差别在于不同算法的判定条件不同。其中hilditch算法使用于二值图像,比较普通,是一般的算法;pavlidis算法通过并行和串行混合处理来实现,用位运算进行特定模式的匹配,所得的骨架是8连接的,适用于二值图像;rosenfeld算法是一种并行细化算法,所得的骨架形态是8连接的,适用于二值图像。后两种算法的效果要更好一些,但是处理某些图像时效果一般,第一种算法实用性强些。

MATLAB图像处理工具箱中提供了骨架提取函数bwmorph()实现图像细化算法,以及转换为二值图像函数im2bw()。图6-20是一幅计算器图像,图6-21是转换为,的二值图像,图6-22是细化一次后的图像,图6-23是细化两次后的图像,图6-24是细化到稳定状态的图像。程序代码如下:

f=imread('calculator.jpg');

imshow(f);

g=im2bw(f,0.3);

figure,imshow(g);

g1=bwmorph(g,'thin',1);

figure,imshow(g1);

g2=bwmorph(g,'thin',2);

figure,imshow(g2);

g3=bwmorph(g,'thin',Inf);

figure,imshow(g3)。

img169

图6-20

img170

图6-21

img171

图6-22

img172

图6-23

img173

图6-24