首页 理论教育学习纹理基元字典的方法与应用

学习纹理基元字典的方法与应用

【摘要】:图2-7展示了本章所采取的逐类学习纹理基元,最终构建纹理基元字典的实现过程。按照上述步骤的方法,依次从每个类别的训练样本中学习Nt个纹理基元,然后把从所有类别学习到的纹理基元进行合并,将其作为纹理基元字典。最后,需要对纹理基元字典中非常相似的纹理基元进行删除。因此,必须删除纹理基元字典中冗余的纹理基元。

K-均值聚类算法是一种简单有效的无监督学习算法,本章选择它作为纹理基元的学习方法。K-均值聚类算法的代价函数是各聚类的类内距离平方和,可表示为

式中:

K —— 聚类中心的个数;

xk —— 第k个点的特征量;

ci —— 第i个聚类的中心;

Ji —— 第i个聚类的类内距离平方和,即J

Gi —— 第i个聚类的点集合。

K-均值聚类算法通过不断迭代,不断调整聚类中心ci的值,使式(2-7)所示的代价函数不断减小,当代价函数达到最小值或达到设定的迭代次数时,可获得最佳的聚类中心。在本章算法中,利用K-均值聚类算法对所有训练样本的所有LF特征向量进行聚类,最终的聚类中心就是要学习的纹理基元集合,即每个聚类中心就是一个纹理基元。需要注意的是,利用K-均值聚类算法时,需要预先设定聚类中心的个数,即需要提前指定纹理基元字典中包含的纹理基元的个数(也称为纹理基元字典的规模),而选定合适的纹理基元个数非常重要。如果纹理基元的个数太少,即纹理基元字典的规模过小,则不能充分描述纹理图像的特征;如果纹理基元的个数太多,即纹理基元字典的规模过大,则会增加纹理基元字典学习和对原始图像进行纹理基元编码的计算量,导致算法的实时性降低。因此,必须在算法设计过程中通过实验选择最佳的纹理基元个数,即确定最佳的纹理基元字典的规模。

在学习纹理基元时,如果直接对所有类别全部训练样本的LF特征向量进行K-均值聚类操作,则由于训练样本的数量非常大,K-均值聚类过程所需的时间和存储量过大,导致对硬件平台的性能要求非常高。因此,为了提高算法的实时性,本章采用逐类学习纹理基元的方法,即从每个纹理类别中分别学习一组纹理基元,然后把所有类别的纹理基元进行合并,从而获得纹理基元字典。采用逐类学习纹理基元的方法,可以显著降低K-均值聚类时对时间和存储空间的消耗。例如,如果训练样本集一共有50个类别,则采用逐类学习纹理基元的方法对每个类别的特征向量进行K-均值聚类时,其对时间和存储空间的消耗大约只有原来的1/50。图2-7展示了本章所采取的逐类学习纹理基元,最终构建纹理基元字典的实现过程。

图2-7 本章的纹理基元字典学习过程

根据图2-7,利用本章方法进行纹理基元字典学习的具体步骤可描述如下:

(1)对于一个类别的全部训练样本,按照本章第2.3.1节的方法分别计算每个样本图像在每个像素位置的局部特征向量LF,然后把所有像素的局部特征向量LF合并,组成一个类别的局部特征向量集合。

(2)设定聚类中心的个数为Nt,然后利用K-均值聚类算法对上述步骤(1)提取的一个类别所有像素的局部特征向量集合进行聚类运算,当代价函数降到最小或达到设定的迭代次数时,获得Nt个聚类中心,将这Nt个聚类中心作为该类别的纹理基元集合。

(3)按照上述步骤(1)(2)的方法,依次从每个类别的训练样本中学习Nt个纹理基元,然后把从所有类别学习到的纹理基元进行合并,将其作为纹理基元字典。

从以上过程可以看出,学习到的一个纹理基元就对应K-均值聚类算法收敛时的一个聚类中心,它们与本章第2.3.1节构造的局部特征向量LF具有完全相同的结构,即每个纹理基元都是一个7维的局部特征向量,可表示纹理图像中一个独特的、具有代表性的局部区域特征。另外,本章方法采用逐类学习的策略依次从每个类别学习到Nt个纹理基元,如果训练样本集一共有C个纹理类别,则构建的纹理基元字典的规模是C×Nt,即纹理基元字典一共含有C×Nt个纹理基元。

最后,需要对纹理基元字典中非常相似的纹理基元进行删除。由于本章采用逐个类别学习纹理基元的方法,在逐类学习的过程中没有充分考虑到不同类别的纹理图像之间可能存在一定的特征相似性,所以从不同类别的训练样本中学习到的一些纹理基元可能存在很高的相似度,这会导致在构造的纹理基元字典中可能存在一些非常相似的纹理基元。如果纹理基元字典中存在多个非常相似的纹理基元,则只需在纹理基元字典中保留一个纹理基元即可,其他非常相似的纹理基元被视为冗余的纹理基元,它们没有提供额外的特征信息,因此需要删除这些冗余的纹理基元。如图2-8所示,对于逐类学习到的纹理基元集合,在其中用矩形框成对地标记出了一些非常相似的纹理基元特征。

图2-8 一些非常相似的纹理基元

上述冗余纹理基元的存在会增大纹理基元字典的规模,这会导致在对原始图像特征进行纹理基元编码时需要搜索更大的纹理基元字典空间,需要把当前待编码的特征向量与更多的纹理基元向量进行特征对比,从而使算法的计算量增加,降低算法的实时性。因此,必须删除纹理基元字典中冗余的纹理基元。本章采取的冗余纹理基元删除方法如下:分别计算纹理基元字典中每两个纹理基元特征向量的L1范数距离,将其作为两个纹理基元的特征差异测度,如果某些纹理基元的特征差异小于设定的阈值Ttd,则这些纹理基元只保留一个,其他相似的纹理基元被删除。在本章方法中,根据实验经验设置纹理基元特征差异的阈值Ttd=3,当纹理基元的特征差异小于该阈值时被视为存在冗余的纹理基元,即可删除字典中对应的冗余纹理基元。