具体实施方式
本发明实施例通过确定获取的应用程序图标对应的特征向量,在特征向量数据库中搜索与所述特征向量对应的应用程序信息,从而可以直接根据应用程序图标搜索到对应的应用程序信息,进而可以根据搜索到的应用程序信息确定应用程序名称、进行应用程序下载等。
下面结合说明书附图对本发明实施例作进一步详细描述。
如图1所示,为本发明实施例提供的应用程序搜索方法流程图,包括以下步骤:
S101:确定获取的应用程序图标对应的特征向量;
S102:在特征向量数据库中搜索与确定的特征向量对应的应用程序信息。
本发明实施例的基本思想是根据特征向量数据库中特征向量与应用程序信息的对应关系,通过确定应用程序图标对应的特征向量,在特征向量数据库中搜索与确定的特征向量对应的应用程序信息;其中,该应用程序信息可以包括应用程序下载链接、应用程序名称、应用程序图标等。在建立特征向量数据库时,可以从网络上获取海量的应用程序图标及应用程序图标对应的其它应用程序信息,并确定每个应用程序图标对应的特征向量,建立特征向量与应用程序信息之间的对应关系。
较佳地,步骤S101中,可以根据以下步骤获取应用程序图标:
从用户拍摄的包含应用程序图标的图片中,提取拍摄的图片中的应用程序图标。
目前,移动终端摄像头的拍摄效果提升显著,因此,可以直接通过移动终端拍摄获取包含应用程序图标的图片,拍摄场景有很多种,如拍摄屏幕、海报、灯箱等,由于用户拍摄应用程序图标后,移动终端获取的是用户拍摄的包含应用程序图标的图片,因此还需要提取用户拍摄的图片中的应用程序图标。如图2所示,为本发明实施例通过移动终端拍摄进行应用程序搜索及下载的示意图。
当前,在移动终端上安装应用程序的方式主要有两种:一种是在电脑上下载应用程序后再传输到移动终端上,另一种是在移动终端中先安装各种市场类应用,如应用商店,再在该应用商店中进行应用程序搜索下载,而应用商店通常是针对某一个操作***的,如Windows、Android、Windows Phone8等任一操作***;本发明实施例通过移动终端摄像头拍摄的方式可以获得多操作***下的应用程序对应的应用程序图标,进而可以搜索该应用程序图标对应的多操作***下的应用程序信息,从而可以实现跨平台的资源匹配;并且,本发明实施例无需繁琐的键入搜索,也无需安装各种市场类应用就可以搜索到用户需要的应用程序信息;因此,本发明实施例中“即拍即得”的应用程序搜索方式可节省用户的搜索时间,提升用户的搜索体验。
较佳地,提取用户拍摄的图片中的应用程序图标,包括:
确定用户拍摄的图片中包含的应用程序图标的形状;
根据确定的应用程序图标的形状,提取确定的形状的应用程序图标。
在具体实施过程中,可以通过对图像进行边缘检测,得到边缘图像,再对边缘图像进行直线和闭合曲线检测确定用户拍摄的图片中包含的应用程序图标的形状,之后可以提取确定的形状的应用程序图标;该实施方式由于对应用程序图标进行了形状检测,能够快速精准地提取不同形状的应用程序图标;
具体地,确定用户拍摄的图片中包含的应用程序图标的形状,包括:
若检测出边缘图像中至少包括四条直线段,且边缘图像中包括的直线段至少能组成一个闭合四边形区域,则确定应用程序图标的形状为四边形。图例如下:
若确定应用程序图标的形状为非四边形,且检测出边缘图像中包含闭合曲线,当连接闭合曲线上任意两点,连线上所有点均包含于闭合曲线区域内,则确定应用程序图标的形状为非四边形的凸多边形,否则,确定应用程序图标的形状为凹多边形。
在具体实施中,对于凹多边形应用程序图标,可以基于图像分割算法对图片进行自动分割,对分割后的图片,剔除连接边缘的区域,保留非边缘的区域,在非边缘的区域中提取最大的闭合区域,获取完整的凹多边形应用程序图标。
这里,对于凹多边形应用程序图标,通过对图片进行分割,获取完整的凹多边形应用程序图标,能很好的克服光照、模糊、噪声等对图像的影响,在具体实施中,还可以根据图片中的相邻区域在特征向量上变化速度的大小动态调整分割阈值。
在具体实施过程中,提取的拍摄图片中的应用程序图标可能存在一定程度的失真,可以在对提取的应用程序图标进行图像还原、目标调整等处理后,确定处理后的应用程序图标对应的特征向量;
其中,图像还原包括曝光调整和亮度白平衡调整,具体地,首先对应用程序图标进行去噪处理,然后根据拍摄图片的标准曝光值,对提取的应用程序图标中过分曝光或者曝光不足的部分进行调整,并进行亮度白平衡调整,然后通过对图标进行去雾操作得到没有色偏,曝光均匀的应用程序图标;
目标调整过程包括直方图均衡化和透视校正,具体地,在对应用程序图标进行直方图均衡化后,检测图标的边缘信息。如果应用程序图标是四边形,但是存在某一条或者两条边产生畸变,则将其调整至矩形,若图标尺寸较小,则将其自适应地调整到和其他图标一样大小。
较佳地,特征向量包括:
自适应(Ostu)二值化特征向量和/或尺度不变特征转换算法(Scale-invariantfeature transform,SIFT)特征向量和/或感知哈希算法(Perceptual hash algorithm,PHash)指纹特征向量。
这里,可以采用不同的特征向量建立算法得到不同种的特征向量,如采用自适应二值化特征提取算法、尺度不变特征转换算法、感知哈希算法分别得到Ostu二值化特征向量、SIFT特征向量和PHash指纹特征向量。
为了提高搜索效率与搜索准确度,下面提供几种较佳的搜索应用程序的实施方式,需要说明的是,在具体实施时可以使用以下方式中的任意一个,也可以将以下方式中的任意几个搭配使用,在搭配使用时效果更佳;
方式一、采用聚类式存储与搜索的方式;
具体地,步骤S102中,特征向量数据库包括不同的子集,其中,每个子集中的不同应用程序图标对应的特征向量之间的距离在设定范围内;
在特征向量数据库中搜索与确定的特征向量对应的应用程序信息,包括:
确定特征向量所属的每个子集;
分别在确定的每个子集中搜索与确定的特征向量距离在设定范围内的特征向量,并确定搜索到的特征向量对应的应用程序信息。
在具体实施过程中,可以在特征向量数据库中,对特征向量及其对应的应用程序信息进行聚类存储,将相互之间的距离在设定范围内的特征向量分属于同一个子集,并确定每个子集的半径和中心点坐标,计算获取的应用程序图标对应的特征向量与每个子集的中心点之间的距离,针对一个子集,若计算出的距离在该子集的半径范围内,则确定该特征向量被该子集所包含;需要说明的是,该特征向量所属的子集可能不只一个,有可能存在多个包含该特征向量的子集;这里,可以采用K-dimension tree(K-D)树框架的形式对获取的应用程序信息进行聚类和分布式存储,可以采用近似最近邻分类算法(ApproximateNearest Neighbors,ANN)在采用K-D树的形式组织的特征向量数据库中搜索与确定的特征向量距离在设定范围内的特征向量;
采用以上实施方式,在确定了特征向量所属的子集后,在该特征向量所属的每个子集内进行应用程序信息搜索,可以缩小搜索范围,提高搜索效率;其次,将特征向量数据库拆分多个子集后,还可以把这些子集置于不同的服务器上,可以使整个数据库***支持更大的数据量。
方式二、采用分布式存储与搜索方式;
具体地,步骤S102中,特征向量数据库中每个应用程序图标对应至少一种多维特征向量,其中,任意一个多维特征向量对应多个维数比所述多维特征向量维数少的子特征向量;
在特征向量数据库中搜索与确定的特征向量对应的应用程序信息,包括:
将获取的应用程序图标对应的多维特征向量划分为多个子特征向量;
在特征向量数据库中搜索与获取的应用程序图标对应的子特征向量距离在设定范围内的子特征向量,并确定搜索到的子特征向量对应的应用程序信息。
在具体实施过程中,为了准确区分不同的应用程序图标,在特征向量数据库中建立的不同应用程序图标对应的特征向量的维度一般都是非常高的,同样,确定的获取的应用程序图标对应的特征向量的维度也是非常高的,而ANN算法在匹配最近邻的高维度的特征向量时效率是非常低的,为了解决这个问题,本发明实施例根据相同或相似向量具有相同或相似的子向量的原理,将高维的特征向量划分成多个低维的子特征向量;采用ANN搜索算法,在特征向量数据库中搜索与获取的应用程序图标对应的子特征向量距离在设定范围内的子特征向量,并确定搜索到的子特征向量对应的应用程序信息。
采用方式三,将高维特征向量拆分成低维的子特征向量除了可以提高匹配效率,还可以在使用子特征向量搜索时利用多中央处理器(Central ProcessingUnit,CPU)进行并发搜索,进一步提高搜索效率。
方式三、采用多次搜索的方式;
具体地,步骤S102中,确定获取的应用程序图标对应的特征向量,包括:
确定获取的应用程序图标对应的N种特征向量;其中,N为大于1的正整数;
在特征向量数据库中搜索与确定的特征向量对应的应用程序信息,包括:
确定采用N种特征向量中的每种特征向量进行搜索的先后顺序;
针对第一种特征向量,在特征向量数据库中搜索与第一种特征向量对应的应用程序信息;针对第M种特征向量,在第M-1次搜索到的多个应用程序信息中,搜索与第M种特征向量对应的应用程序信息,其中,M为正整数,且2≤M≤N;
确定第N次搜索到的应用程序信息为获取的应用程序图标对应的应用程序信息。
在具体实施过程中,可以确定获取的应用程序图标对应的多种特征向量,如Ostu二值化特征向量、SIFT特征向量、PHash指纹特征向量等,针对每一种特征向量,分别搜索与每一种特征向量对应的应用程序信息;
为了提高搜索效率与搜索的准确度,可以采用层层筛选的方式,比如在特征向量数据库中采用自适应二值化特征向量和SIFT特征向量两种特征向量来表征应用程序图标,在获取应用程序图标后,确定该应用程序图标对应的Ostu二值化特征向量和SIFT特征向量,采用确定的Ostu二值化特征向量,在特征向量数据库中搜索与确定的Ostu二值化特征向量对应的应用程序信息,再在搜索到的应用程序信息中,进行二次搜索,搜索与确定的SIFT特征向量对应的应用程序信息,如此,将二次搜索到的应用程序信息作为获取的应用程序图标对应的应用程序信息。
在具体实施过程中,为了提高搜索效率与搜索准确度,可以将以上三种方式中的任意两个或三个配合使用,将方式一和方式二配合实施的过程可以为:
步骤S102中,特征向量数据库中包括不同的子集,且该特征向量数据库中每个应用程序图标对应至少一种多维特征向量,任意一个多维特征向量对应多个维数比该多维特征向量维数少的子特征向量;
在特征向量数据库中搜索与确定的特征向量对应的应用程序信息,包括:
确定获取的应用程序图标对应的多维特征向量所属的每个子集,并将该多维特征向量划分为不同的子特征向量;
分别在确定的每个子集中搜索与获取的应用程序图标对应的子特征向量距离在设定范围内的子特征向量,并确定搜索到的子特征向量对应的应用程序信息。
将方式一、方式二和方式三配合实施的过程可以为:
确定获取的应用程序图标对应的N种多维特征向量及采用N种多维特征向量中的每种特征向量进行搜索的先后顺序,并确定N种多维特征向量所属的每个子集及N种多维特征向量对应的每个子特征向量;其中,N为大于1的正整数;
针对第一种多维特征向量的每个子特征向量,在该多维特征向量所属的子集中搜索与所述每个子特征向量对应的应用程序信息;具体地,针对所述每个子特征向量中的任意一个子特征向量,在该多维特征向量所属的子集中搜索与该子特征向量距离在设定范围内的子特征向量,并确定搜索到的子特征向量对应的应用程序信息;
针对第M种多维特征向量的每个子特征向量,在第M-1次搜索到的多个应用程序信息中,搜索与第M种多维特征向量的每个子特征向量对应的应用程序信息,其中,M为正整数,且2≤M≤N;
确定第N次搜索到的应用程序信息为获取的应用程序图标对应的应用程序信息。
采用上述三种方式配合实施,对于10万到100万数量级的图片,在10-100ms的时间内就可以完成搜索,极大地提高了搜索效率,优化了用户体验。
较佳地,搜索到与确定的特征向量对应的应用程序信息后,还包括:
根据搜索到的应用程序信息,确定符合设置的推荐条件的其它应用程序信息;
将确定的其它应用程序信息提供给用户。
较佳地,符合设置的推荐条件的其它应用程序信息包括:
与参考应用程序类型相同的其它应用程序对应的应用程序信息,所述参考应用程序是与搜索到的应用程序信息对应的应用程序,和/或,
与搜索到的应用程序信息具有相同关键词的其它应用程序信息。
在具体实施过程中,可以从网络中获取海量应用程序信息,并将获取的应用程序信息进行整理,根据获取的搜索记录,确定用户感兴趣的应用程序信息,从整理的应用程序信息中筛选出用户可能感兴趣的其它应用程序信息,提供给用户;还可以根据本次搜索的应用程序信息,向用户推荐热门应用中与本次搜索的应用程序具有相同或相似应用的其它应用程序;
具体地,为用户推荐的应用程序信息可以是与搜索到的应用程序信息对应的应用程序类型相同的其它应用程序对应的应用程序信息,和/或,与搜索到的应用程序信息具有相同关键词的其它应用程序信息;在具体实施中,可以根据网络上的热门排行等将预向用户推荐的应用程序进行排序后提供给用户。
为了详细地描述本发明实施例进行应用程序搜索的方法,下面列举一个比较具体的实施方式进行介绍。
如图3所示,为本发明较佳的实施例提供的搜索应用程序的方法流程图,包括:
S301:从用户拍摄的包含应用程序图标的图片中,提取拍摄的图片中的应用程序图标;
如图4所示,为本发明实施例提取应用程序图标的流程图,包括:S41:获取包含应用程序图标的图片;S42:判断应用程序图标的形状是否为四边形,若是,则提取四边形应用程序图标,否则进入步骤S43;S43:判断应用程序图标的形状是否为非四边形的凸多边形,若是,则提取非四边形的凸多边形应用程序图标,否则进入步骤S44;S44:通过图像分割,提取凹多边形的应用程序图标。
S302:根据提取的应用程序图标,确定该应用程序图标对应的特征向量;
如图5所示,为本发明实施例确定提取的应用程序图标对应的特征向量的方法流程图,包括:S51:根据拍摄图片的标准曝光值,对提取的图标中过分曝光或者曝光不足的部分进行调整;S52:对步骤S51的输出图像进行亮度白平衡调整;S53:对步骤S52的输出图像进行直方图均衡化处理;S54:对步骤S53的输出图像进行透视校正;S55:根据步骤S54的输出图像,确定该输出图像对应的特征向量。
S303:在特征向量数据库中搜索与确定的特征向量对应的应用程序信息。
如图6所示,为本发明实施例建立的特征向量数据库结构图,本发明实施例建立的特征向量数据库采用聚类和分布式存储,具体地,建立的特征向量数据库中包括不同的子集,其中每个子集中的不同应用程序图标对应的特征向量之间的距离在设定范围内;且该特征向量数据库中每个应用程序图标对应至少一种多维特征向量,任意一个多维特征向量对应多个维数比该多维特征向量维数少的子特征向量。
如图7所示,为本发明实施例在特征向量数据库中搜索应用程序信息的流程图,包括:
S71:确定获取的应用程序图标对应的多维Ostu二值化特征向量所属的每个子集;
S72:将获取的应用程序图标对应的多维Ostu二值化特征向量划分为多个Ostu二值化子特征向量,在确定的子集中搜索与获取的应用程序图标对应的每个Ostu二值化子特征向量距离在设定范围内的Ostu二值化子特征向量,并确定搜索到的Ostu二值化子特征向量对应的应用程序信息;
这里的应用程序信息可以包括应用程序图标、应用程序名称、应用程序图标对应的SIFT特征向量、应用程序下载链接等;
S73:将获取的应用程序图标对应的多维SIFT特征向量划分为多个SIFT子特征向量,并在步骤S72的搜索结果的并集上搜索与每个SIFT子特征向量距离在设定范围内的SIFT子特征向量,并确定搜索到的SIFT子特征向量对应的应用程序信息;
在具体实施过程中,可以对步骤S73中搜索到的应用程序信息进行排序,将排序后的应用程序信息提供给用户;排序时,可根据特征向量数据库中的SIFT特征向量与获取的应用程序图标对应的SIFT特征向量之间的距离进行排序,将距离最接近的SIFT特征向量对应的应用程序信息排在最前面。
如图8所示,为本发明实施例提供的搜索应用程序的***架构图,包括:
图像处理模块81,用于提取拍摄图片中的应用程序图标,确定应用程序图标对应的特征向量;
搜索模块82,用于在特征向量数据库83中搜索与图像处理模块81确定的特征向量对应的应用程序信息;具体地,用于采用ANN算法匹配最近邻特征向量,确定该特征向量对应的征向量数据库83中的应用信息;
特征向量数据库83,用于从网络上获取海量包括应用程序图标的应用程序信息,确定应用程序图标对应的特征向量,采用K-D树框架的形式对确定的特征向量及对应的应用程序信息进行聚类和分布式存储;
行为研究模块84,用于从网络上获取热门应用程序信息排行,通过关键词分割将相似应用进行整合,并结合用户历史搜索记录,分析获取的应用程序信息中属于用户感兴趣的应用程序信息,将分析得到的应用程序信息提供给用户。
基于同一发明构思,本发明实施例中还提供了一种与应用程序搜索方法对应的应用程序搜索装置,由于该装置解决问题的原理与本发明实施例应用程序搜索方法相似,因此该装置的实施可以参见方法的实施,重复之处不再赘述。
如图9所示,为本发明实施例提供的应用程序搜索装置结构示意图,包括:
确定模块91,用于确定获取的应用程序图标对应的特征向量;
搜索模块92,用于在特征向量数据库中搜索与确定模块91确定的量对应的应用程序信息。
较佳地,确定模块91具体用于根据以下步骤获取应用程序图标:
从用户拍摄的包含应用程序图标的图片中,提取图片中的应用程序图标。
较佳地,确定模块91具体用于:
确定图片中包含的应用程序图标的形状;
根据确定的应用程序图标的形状,提取该形状的应用程序图标。
较佳地,特征向量包括:
自适应Ostu二值化特征向量和/或尺度不变特征转换算法SIFT特征向量和/或感知哈希算法PHash指纹特征向量。
较佳地,特征向量数据库包括不同的子集,其中,每个子集中的不同应用程序图标对应的特征向量之间的距离在设定范围内;
搜索模块92具体用于:
确定特征向量所属的每个子集;
分别在确定的每个子集中搜索与确定的特征向量距离在设定范围内的特征向量,并确定搜索到的特征向量对应的应用程序信息。
较佳地,特征向量数据库中每个应用程序图标对应至少一种多维特征向量,其中,任意一个多维特征向量对应多个维数比该多维特征向量维数少的子特征向量;
搜索模块92具体用于:
将获取的应用程序图标对应的多维特征向量划分为多个子特征向量;
在特征向量数据库中搜索与获取的应用程序图标对应的子特征向量距离在设定范围内的子特征向量,并确定搜索到的子特征向量对应的应用程序信息。
较佳地,确定模块91具体用于:
确定获取的应用程序图标对应的N种特征向量;其中,N为大于1的正整数;
搜索模块92具体用于:
确定采用N种特征向量中的每种特征向量进行搜索的先后顺序;
针对第一种特征向量,在特征向量数据库中搜索与第一种特征向量对应的应用程序信息;针对第M种特征向量,在第M-1次搜索到的多个应用程序信息中,搜索与第M种特征向量对应的应用程序信息,其中,M为正整数,且2≤M≤N;
确定第N次搜索到的应用程序信息为获取的应用程序图标对应的应用程序信息。
较佳地,该装置还包括:
推荐模块93于根据搜索到的应用程序信息,确定符合设置的推荐条件的其它应用程序信息,将确定的其它应用程序信息提供给用户。
较佳地,符合设置的推荐条件的其它应用程序信息包括:
与参考应用程序类型相同的其它应用程序对应的应用程序信息,其中参考应用程序是与搜索到的应用程序信息对应的应用程序,和/或,
与搜索到的应用程序信息具有相同关键词的其它应用程序信息。
本领域内的技术人员应明白,本发明的实施例可提供为方法、***、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、装置(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。