算法改进
在新的APP版本中,我们对图像搜索的改进分为色彩和结构纹理两个方面:
在1.0版本中,我们采用的是建立二十四维色彩空间与全局纹理相结合的CEDD
算法,已经取得了不小的成果,但是鉴于搜索结果上存在色彩精准度有细微差别,结构纹理的吻合度不够,细节抓的不够清晰的缺点。故我司在2.2版本中改进了搜索的技术。
具体如下:在色彩空间上,我们提取MCMQ(Main Color Means Quantize)
的主色调聚类算法,我们将图像所有的像素颜色的提取出来进行聚合,在一定色彩空间上将相同及相似的色彩聚合为一类,以此类推,根据聚类簇集的数量排序,提出排序靠前的几种色彩为图像的主色调成分,更加准确的表述出布料的色彩空间,这样我们再描述多色彩的面料时就不会困惑布料的色彩组成了。并结合新的主色调对比算法DBHSVC(Distance Between HSV Colors)
,DBHSVC将两组RGB色彩向量映射到HSV向量空间上,使之色彩差异更加符合人类的色彩感知,将两个向量中的相似色彩进行对比,取得了不错的效果。
在结构纹理空间上,采取的改进是针对图像特征的提取算法的改进,以前我们使用的方式是切割图像与方向特征的描述,是一种全局图像特征的表述,缺点就是不能准确的保留图像的细微边缘与角点的特征信息,丢失了大量图像信息的算法自然无法达到更好的搜索体验。
而新版本的APP中,我们在提取面料图像结构信息上提出了SIFET(Scale-invariant feature and edge transform)
与BOVW(bag of visual words)
算法。其中SIFET是基于SIFT的基础上提取图像的角点信息并加上针对面料图像加入边缘特征信息的改进,传统的SIFT算法只能提取图像轮廓的角点信息,而在布料图像中存在比较多的光滑边缘信息(如波点及条纹图像中),通过保留一定的边缘信息,真实还原了图像结构中的角点与边缘特征。我司提出的SIFET特征虽然也能描述一幅图像,但是每个SIFET矢量都是很多维的,而且一幅图像通常都包含成百上千个特征矢量,在进行相似度计算时,这个计算量是非常大的。在实时性与聚类性上,我司提出用k-means聚类
算法对这些矢量数据进行聚类,然后用聚类中的一个簇代表BoW中的一个视觉词,将同一幅图像的SIFET矢量映射到视觉词序列生成码本。新算法的特性是图像的维度由像素级维度转换为SIFET
算子的码表频次向量,通过计算矢量的余弦夹角距离,计算相似度时效率就大大提高了,同时也保证了相似图像的聚类性。
因为这样更加『原汁原味』的提炼算法,能最大程度上保持图像的局部特征,其对旋转、尺度缩放、亮度
变化保持不变性,且能适应一定光照,变形,仿射
等真实拍摄环境下的图像搜索,使得我们的在结构的匹配上更加精准。现在我们的搜索,当您搜索一款格子布料,能够检索出同类的格子布料,当您搜索的是一款碎花面料,会为您推荐出相同及相似的碎花面料……。现在我们对特征提取的改进及机器聚类技术的提升,让以图搜图变得更加轻松,更加简单,用户只需要轻松一拍。