图像相似度Hash算法的示例分析
发表于:2025-11-09 作者:千家信息网编辑
千家信息网最后更新 2025年11月09日,这篇文章主要介绍图像相似度Hash算法的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!图像的相似度Hash算法Hash算法有三种,分别为平均哈希算法(aHash)、感知
千家信息网最后更新 2025年11月09日图像相似度Hash算法的示例分析
这篇文章主要介绍图像相似度Hash算法的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
图像的相似度Hash算法
Hash算法有三种,分别为平均哈希算法(aHash)、感知哈希算法你(pHash)和差异哈哈希算法(dHash)。
本文实现针对平均哈希算法;
1 平均哈希算法(aHash)
1.1 算法步骤
平均哈希算法是三种Hash算法中最简单的一种,它通过下面几个步骤来获得图片的Hash值,这几个步骤分别是(1) 缩放图片;(2)转灰度图; (3) 算像素均值;(4)根据相似均值计算指纹。具体算法如下所示:
表1 aHash得到图片Hash值地算法
得到图片的ahash值后,比较两张图片ahash值的汉明距离,通常认为汉明距离小于10的一组图片为相似图片。
Demo 界面/


获取aHash函数如下:
function TForm1.GetHash(src: TBitmap; iType: Integer): Int64;var p: PByteArray; bmp: TBitmap; x, y: Integer; gray, sum: Integer; ct: array[0..7, 0..7] of Byte; avg: Single; ret: Int64;begin ret := 0; case iType of 0: // aHash 平均哈希算法 begin bmp := TBitmap.Create; try bmp.Assign(src); bmp.Width := 8; bmp.Height := 8; bmp.PixelFormat := pf24bit; sum := 0; for y := 0 to 7 do begin p := bmp.ScanLine[y]; for x := 0 to 7 do begin //转灰度图 平均值法 gray := (p[3 * x + 2] + p[3 * x + 1] + p[3 * x]) div 3; ct[y, x] := gray; sum := sum + gray; end; end; avg := sum/64; for y := 0 to 7 do for x := 0 to 7 do ret := ret shl 1 or Ord(ct[y, x] > avg); finally bmp.Free; end; end; 1: // pHash 感知哈希算法 begin end; 2: // dHash 差异哈希算法 begin end; end; Result := ret;end;
计算汉明距离函数:
function TForm1.Hamming(Hash2, Hash3: Int64): Integer;var A: Int64;begin Result := 0; A := Hash2 xor Hash3; while A<>0 do begin A := A and (A-1); Inc(Result); end;end;
以上是"图像相似度Hash算法的示例分析"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!
算法
图片
哈希
相似
像素
灰度
输入
均值
单通道
图像
元素
平均值
步骤
矩阵
通道
汉明
示例
分析
一行
内容
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全法组长
乔家巷网络技术
深圳web前端软件开发价格
u8数据库和千户集团数据
海南耀天网络技术有限公司游戏
网络安全最新内容2021
网络技术交换方式分类
网络安全法最新
云服务器vpn搭建
我的世界正版开服务器
软件设计和软件开发怎么去理解
数字化网络技术是什么
工业系统软件开发
2021年10大网络安全事故
orcal 数据库导出
cvr存储服务器价格
jsp 点单导入数据库
通信网络技术服务 新三板
内存受限之软件开发
网络安全专业考研真题
广州医疗软件开发公司
服务器颜色代码
京东数据库泄露下载
河对岸云服务器怎么使用
网络安全论文大全
关系型数据库适合处理
软件开发10年该去小公司吗
手机怎么备份通讯录到云服务器
怀柔区品质软件开发服务电话
软件开发版本交叉