首页 > 编程语言 >均值哈希算法计算图片相似度

均值哈希算法计算图片相似度

时间:2022-11-05 22:34:49浏览次数:34  
标签:image 均值 算法 64 哈希 灰度 图片

均值哈希算法

一张图片就是一个二维信号,它包含了不同频率的成分。亮度变化小的区域是低频成分,它描述大范围的信息。而亮度变化剧烈的区域(比如物体的边缘)就是高频的成分,它描述具体的细节。或者说高频可以提供图片详细的信息,而低频可以提供一个框架。 而一张大的,详细的图片有很高的频率,而小图片缺乏图像细节,所以都是低频的。所以我们平时的下采样,也就是缩小图片的过程,实际上是损失高频信息的过程。均值哈希算法就是利用图片的低频信息。
具体步骤:
(1)缩小尺寸:将图片缩小到8x8的尺寸,总共64个像素。这一步的作用是去除图片的细节,只保留结构、明暗等基本信息,摒弃不同尺寸、比例带来的图片差异。
(2)简化色彩:将缩小后的图片,转为64级灰度。也就是说,所有像素点总共只有64种颜色。
(3)计算平均值:计算所有64个像素的灰度平均值
(4)比较像素的灰度:将每个像素的灰度,与平均值进行比较。大于或等于平均值,记为1;小于平均值,记为0。
(5)计算哈希值:将上一步的比较结果,组合在一起,就构成了一个64位的整数,这就是这张图片的指纹。组合的次序并不重要,只要保证所有图片都采用同样次序就行了。
最后得到两张图片的指纹信息后,计算两组64位数据的汉明距离,即对比数据不同的位数,不同位数越少,表明图片的相似度越大。
分析: 均值哈希算法计算速度快,不受图片尺寸大小的影响,但是缺点就是对均值敏感,例如对图像进行伽马校正或直方图均衡就会影响均值,从而影响最终的hash值。

#均值哈希算法
def aHash(image):
    #缩放为8*8
    image=cv2.resize(image,(8,8),interpolation=cv2.INTER_CUBIC)
    #转换为灰度图
    image=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
    avreage = np.mean(image) 
    hash = [] 
    for i in range(image.shape[0]): 
        for j in range(image.shape[1]): 
            if image[i,j] > avreage: 
                hash.append(1) 
            else: 
                hash.append(0) 
    return hash

 

标签:image,均值,算法,64,哈希,灰度,图片
From: https://www.cnblogs.com/michael999/p/16861535.html

相关文章

  • 套汇问题 Python实现,算法设计,DFS深度遍历
    #P67#套汇问题可以理解为一个有向图找出环的问题,#要想有盈利,需要所有的汇率乘积大于1#在贪心条件下,找到一个环路径上的乘积大于1就有套汇的可能性"""#输入一......
  • D2D通信中信道分配与功率优化联合算法
    吞吐量作为衡量系统容量的关键指标之一,能够直观地反映通信系统的优劣。多用户间频谱复用与功率控制优化算法。文章目的:1.匹配最佳信道;2.在D2D用户功率约束下,通过控制D2D用......
  • 实验二:逻辑回归算法实验
    【实验目的】1.理解逻辑回归算法原理,掌握逻辑回归算法框架;2.理解逻辑回归的sigmoid函数;3.理解逻辑回归的损失函数;4.针对特定应用场景及数据,能应用逻辑回归算法解决实际分......
  • 实验二:逻辑回归算法实验
    |20大数据三班|实验二:逻辑回归算法实验-作业-20级大数据3班机器学习-班级博客-博客园(cnblogs.com)||学号|201613328|实验二:逻辑回归算法实验-胡辛原-博客......
  • 实验二:逻辑回归算法实验
    1导包和读取数据#导包importnumpyasnpimportpandasaspdimportmatplotlib.pyplotasplt#读取数据data=pd.read_csv("D:/1/ex2data1.txt",delimiter=',',header=Non......
  • 随机森林算法原理
    随机森林算法原理:随机森林是从原始训练样本集N中有放回地重复随机抽取k个样本生成新的训练样本集合,然后根据自助样本集生成k个分类树组成随机森林,新数据的分类结果按分......
  • 虚拟DOM和Diff算法
    虚拟DOM    虚拟DOM的本质来说就是一个JS对象,Vue会把虚拟的DOM解析为JS的对象    还可以这样理解:虚拟DOM本质上就是在JS和DOM之间做了一个缓存。可......
  • 数据结构与算法之查找
    查找【知识框架】1.查找概论查找的基本概念:查找(Searching):就是根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素(或记录)。查找表(SearchTable......
  • 基本算法篇——二分查找
    基本算法篇——二分查找本次我们介绍基础算法中的二分查找,我们会从下面几个角度来介绍二分查找:二分查找简述二分查找模板二分查找边界例题数的范围二分查找简述首......
  • 代码随想录第二十四天 | 回溯算法
    今天结束了二叉树的学习,开始新的一章了77.组合classSolution{List<List<Integer>>res=newArrayList<List<Integer>>();List<Integer>list=newArra......