第三章:主要介绍条件随机场(CRF)的相关知识,模型数据项和平滑项的设置。
最后结论主要介绍本文的实验步骤以及本文的不足。
2 图像特征提取
2。1 颜色特征提取
在对图像进行特征提取时,颜色特征是一个很不错的选择。原因是检测区域颜色往往和实际语义中的物体有良好的对应性。相对于图像所具有的其他特征来说,基于颜色特征的图像分割具有比较优秀的区分度。此外,图像的颜色特征并不依赖于图片中物体的大小、方向等因素,具有很好地健壮性。因此本文首先将颜色特征用于对图像的分割来观察在特定环境下的分割效果。
对图像的颜色特征提取有许多问题需要考虑。首先应该考虑用计算机语言如何良好的表示图像的颜色特征,其次应该找到一种量化方法将图像的颜色特征转化为方便计算机分析和处理的数据。这部分以及本文以下部分内容将借助OpenCV并用C++编程实现。
提取图像的颜色特征,颜色特征直方图是一个很好地选择。很多图像分割方法研究里面都有提取颜色特征直方图这一步骤。颜色特征直方图所描述的是不同颜色在图像中所占比,忽略了该颜色所在图像中的位置信息,但是由于颜色特征一般与实际语义有着很好的对应性,所以对于一些很难自动分割的图像,我们通常利用颜色特征直方图来进行描述[4]。
本文提取的颜色特征直方图是基于RGB三通道图像的。首先将训练图像分成若干8×8的方块区域,统计每个图像块每个通道的像素值所占比例。因为像素值的范围为0~255,为了减少数据量,我们将每个像素值除以16转为int型得到0~15的16个小的颜色区间。将得到的三个通道的颜色直方图数据每块3×16=48个数据存入向量类型train中。然后对训练图像进行标签转换,也就是把每一个8×8的小块所属的分类标签识别出并存入突然中。在标签图像中,整个图像被分为三个部分:蓝色部分代表天空记为标号0,红色部分代表建筑记为标号1,绿色部分代表道路记为标号2。本实验中,输入图像的大小为320×240像素大小,所以一共可分割为1200个8×8大小的图像块。对训练图像所对应的标签图像的每一个小的图像块逐个扫描,根据扫描到的标签图像块的颜色得到该图像块所属的标签类别,将类别标号存入train中,也即放在颜色直方图数据的后面。到这里,训练图像各分块的颜色特征直方图及其所属的标签已经得到。接下来对输入的测试图像进行处理。利用读取测试图像,和上文对训练图像处理的过程一样,首先得到测试图像每一小块的颜色特征直方图,然后利用朴素贝叶斯分类器(Naive Bayes classifier)对每一个小块计算的到其最终所属的分类。朴素贝叶斯分类器(Naive Bayes classifier)的方法我们将在后文进行详细介绍。分类输出之后已经得到了一副经过初步分类的训练图像所对应的标签图像。测试图像和其对应输出的标签图像如下图所示:
图2。1 训练图像001(左)及其输出标签图像(右)
图2。2 训练图像002(左)及其输出标签图像(右)
图2。3 训练图像003(左)及其输出标签图像(右)
通过观察以上几幅图像的实验结果,可以发现除了天空的分割效果还不错之外,建筑和道路的分割效果很不理想。除了分割界线不明显之外,两部分标签还充斥着大量的噪点。产生这种结果的原因可能有很多种,首先可能除了天空的颜色特征比较明显,可以比较好的分割外,道路和建筑的颜色特征在数据量偏小的情况下很难达到有效的区分,所以导致不能有效的分割出道路和建筑。其次,由于是对于每一个图像块单独进行分类标记,缺少全局的信息,再加上单个图像块的道路和建筑的颜色特征比较接近,所以导致了分割的准确性不能达到要求。那么,单一的颜色特征并不能很好地分割图像,我们可能需要再加入更多的图像特征从而更好地加以区分不同类别。