首先说明,这里的图片搜索并不是通过关键词搜索,而是通过图片搜索图片,或者通过图片推荐图片的场景。
目前还没有一些数据说明到底通过图片搜索或推荐图片的场景有多普遍,但是作为一个经常在淘宝上买买买的剁手党自身体会,我在淘宝常用的功能之一就是拍了照片在淘宝上搜同款。另外最近也会逛逛pinterest,在pinterest中也会有相似图片推荐。
如果marketers 或者business owners了解一些图片优化技巧,可能会让自己的图片或者产品有更多机会的曝光。
做搜索引擎优化或者推荐优化与其它在线营销方式很不同一点是,需要了解搜索引擎或者推荐引擎的基本实现原理,当你开始对一些规推荐则有一些大致的了解的时候,就可以开始利用它们了。
无意中,正好看到阮一峰写了两篇关于相似图片判定应用比较广泛的几种算法,总结如下:
感知哈希算法:
1. 把所有图片都缩小成同一尺寸,如 8*8 64个像素
2. 把图片转变为64级灰度,并且计算出一个图片的灰度平均值
3. 把图片的每一个像素都与这个平均值比较,如果大于等于平均值记为1,否则记为0
4. 将上一步的比较结果,组合在一起,就构成了一个64位的整数,即为图片的fingerprints,比较图片的fingerprints,根据不相同的数据位的数量来判断相似度。
颜色分布法:
我们知道,每一种颜色都可以通过rgba(即红,绿,蓝,透明度)来表示,那么一张图片的所有像素的颜色以这种方式表现出来,就会生成一个rgba直方图,如下图:
其中上方最后一张直方图就是rgba叠加起来的效果。然后将该直方图通过数学表达。当然,因为rgba取值范围都是0-255,所以计算量会特别大,通常的做法是进行简化,最终会将直方图表示为一个多为向量,这个向量就作为该图片的fingerprint,然后可以通过皮尔逊相关系数(Pearson correlation coefficient)或者余弦相似(cosine simliarity)进行相似计算。
内容特征法
将原图先转变为灰度图片,再转变成黑白图片:
内容特征法认为,黑白轮廓相近,则两张图片也相近。
“显然,前景色与背景色反差越大,轮廓就越明显。这意味着,如果我们找到一个值,可以使得前景色和背景色各自的"类内差异最小"(minimizing the intra-class variance),或者"类间差异最大"(maximizing the inter-class variance),那么这个值就是理想的阈值。”
将黑白图片通过矩阵表示,矩阵的每个值对应原图的一个像素,0表示黑色,1表示白色。两张图片的矩阵不同之处越少,则图片越相似。
以上三种算法只是图片相似度判断中比较基本的三种方法,实际上,以图搜图,以及通过图片推荐图片的场景会更加复杂。不过我们可以从上述三种算法中提炼出的信息是,相似图片的判定与以下因素比较相关:
1. 图片中物体轮廓
2. 图片的颜色
3. 图片中物体 与背景色差
有了这些信息,我们就可以有针对性的做一些图片优化工作了:
1. 最好对产品的个角度进行拍照
2. 产品的背景应当尽量简单,以免对图片中的产品识别产生影响
3. 可以为产品设置多种背景色
4. 非产品图片的场景中,如Pinterest中分享的一些文字banner,可以尝试做多个,不同颜色,不同风格,不同样式等