[点晴永久免费OA]利用js实现图片相似度算法
当前位置:点晴教程→点晴OA办公管理信息系统
→『 经验分享&问题答疑 』
一、平均哈希算法第一步: 缩小尺寸为8×8,以去除图片的细节,只保留结构、明暗等基本信息,摒弃不同尺寸、比例带来的图片差异。 第二步: 简化色彩。将缩小后的图片转为灰度图像 (取每个像素rgb三色的平均值,[228, 233, 253, 255]-> [238, 238, 238, 255] )。 第三步: 计算平均值。计算所有像素的灰度平均值。(根据每个像素平均后的值, 计算整张图片的平均颜色值) 第四步: 比较像素的灰度。将64个像素的灰度,与平均值进行比较。大于或等于平均值,记为1;小于平均值,记为 0。 第五步: 计算哈希值。将上一步的比较结果,组合在一起,就构成了一个64位的整数,这就是这张图片的指纹。 第六步: 计算指纹的相似度,得出两张图片是否相似 。 二、颜色分布法借用一篇文章的解释: 1、 每张图片都可以生成颜色分布的直方图、如果两张图的直方图很接近,就可以认为他们相似 2、 任何一种颜色都是由红绿蓝三原色组成的、我们平时用的每种原色有256个色值,整个颜色空间有1600万种颜色(256的三次方) 3、 如果用1600万种颜色去比较直方图、计算量太大了、因此需要采用简化方法,可以将0~256分城4个区、 0-63为0区,64-127为1区,128-191为2区,192-256为3区; 也就以为这简化后的图片总共会有64种颜色(4的3次方)、 4、统计64种颜色组合包含的像素数量 5、我们这里想展示每一步操作后的图片变化,取 0,1,2,3的话整张图片都是黑色、所以 0-63取的是32,64-127 取 96,128-191取 160, 192-256取 224; 6、因为颜色的组合都是固定的,所以把表格中的最后一栏(像素数量)提出来,组成一个64维向量, 便是这张图片的 “指纹”, 寻找相似的图片就是寻找相似的“指纹”
三、内容特征法”内容特征法“是指把图片转化为灰度图后再转化为”二值图“,然后根据像素的取值(黑或白)形成指纹后进行比对的方法。这种算法的核心是找到一个“阈值”去生成二值图。 1、首先,将原图转化成一张灰度图片 、(可以压缩可不压缩、 最好是压缩成固定大小:可以相似图片因为图片大小不一样带来的差异, 减少一定的计算,减小最终指纹的长度) 2、确定一个阈值,将灰度图片转化为黑白图片 具体代码实现请查看原文 该文章在 2023/8/28 9:35:58 编辑过 |
关键字查询
相关文章
正在查询... |