哈希(hashing)是一种代表性方法,通常目标是将样本表示成一串固定长度的二值编码(通常使用0/1或-1/+1表示其中的每个bit),使得相似的样本具有相似的二值码(使用Hamming距离度量二值码之间的相似性)。
(1) 设计并实现一种Hash算法
(2) 实现本地图像检索软件
(3) 选用标准图像库,对每一幅输入模板图像,检索列出最接近10幅图像
1.缩小图片:32 * 32是一个较好的大小,这样方便DCT计算
2.转化为灰度图:把缩放后的图片转化为256阶的灰度图。(具体算法见平均哈希算法步骤)
3.计算DCT:DCT把图片分离成分率的集合
4.缩小DCT:DCT是32*32,保留左上角的8*8,这些代表的图片的最低频率
5.计算平均值:计算缩小DCT后的所有像素点的平均值。
6.进一步减小DCT:大于平均值记录为1,反之记录为0.
7.得到信息指纹:组合64个信息位,顺序随意保持一致性即可。
8.对比指纹:计算两幅图片的指纹,计算汉明距离(从一个指纹到另一个指纹需要变几次),汉明距离越大则说明图片越不一致,反之,汉明距离越小则说明图片越相似,当距离为0时,说明完全相同。(通常认为距离>10 就是两张完全不同的图片)
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-10-10 17:02 基于hash的图像检索软件
目录 0 2018-10-10 17:01 基于hash的图像检索软件源码
目录 0 2018-04-22 14:44 基于hash的图像检索软件源码pHash
目录 0 2018-10-10 17:01 基于hash的图像检索软件源码pHashpHash
文件 3998 2018-04-20 20:22 基于hash的图像检索软件源码pHashpHashReadMe.txt
文件 1934 2018-04-22 09:56 基于hash的图像检索软件源码pHashpHashhash.cpp
文件 712 2018-04-22 09:56 基于hash的图像检索软件源码pHashpHashhash.h
文件 2361 2018-04-20 20:22 基于hash的图像检索软件源码pHashpHashpHash.cpp
文件 437 2018-04-20 20:22 基于hash的图像检索软件源码pHashpHashpHash.h
文件 12058 2018-04-21 15:21 基于hash的图像检索软件源码pHashpHashpHash.vcxproj
文件 10586 2018-04-22 10:53 基于hash的图像检索软件源码pHashpHashpHashDlg.cpp
目录 0 2018-04-22 14:44 基于hash的图像检索软件源码pHashpHash
es
文件 67777 2013-07-22 01:18 基于hash的图像检索软件源码pHashpHash
espHash.ico
文件 666 2018-04-20 20:22 基于hash的图像检索软件源码pHashpHash
espHash.rc2
文件 138 2018-04-20 20:22 基于hash的图像检索软件源码pHashpHashstdafx.cpp
文件 1578 2018-04-20 20:22 基于hash的图像检索软件源码pHashpHashstdafx.h
文件 234 2018-04-20 20:22 基于hash的图像检索软件源码pHashpHash argetver.h
文件 100597760 2018-04-22 14:44 基于hash的图像检索软件源码pHashpHash.sdf
文件 1315 2018-04-21 14:13 基于hash的图像检索软件源码pHashpHash.sln
文件 31232 2018-04-22 14:44 基于hash的图像检索软件源码pHashpHash.v12.suo
目录 0 2018-10-10 16:49 基于hash的图像检索软件演示
文件 75073 2018-04-21 22:08 基于hash的图像检索软件演示QQ图片20180422122413.jpg
文件 16801 2018-04-19 21:25 基于hash的图像检索软件要求.docx
文件 64 2018-10-10 13:39 基于hash的图像检索软件说明.txt
#include “stdafx.h“
#include “hash.h“
string pHashValue(Mat &src)
{
Mat img dst;
string rst(64 ‘ ‘);
double dIdex[64];
double mean = 0.0;
int k = 0;
if (src.channels() == 3)
{
cvtColor(src src CV_BGR2GRAY);
img = Mat_(src);
}
else
{
img = Mat_(src);
}
/* 第一步,缩放尺寸*/
resize(img img Size(8 8));
/* 第二步,离散余弦变换,DCT系数求取*/
dct(img dst);
/* 第三步,求取DCT系数均值(左上角8*8区块的DCT系数)*/
for (int i = 0; i < 8; ++i) {
for (int j = 0; j < 8; ++j)
{
dIdex[k] = dst.at(i j);
mean += dst.at(i j) / 64;
++k;
}
}
/* 第四步,计算哈希值。*/
for (int i = 0; i<64; ++i)
{
if (dIdex[i] >= mean)
{
rst[i] = ‘1‘;
}
else
{
rst[i] = ‘0‘;
}
}
return rst;
}
int HanmingDistance(string &str1 string &str2)
{
if ((str1.size() != 64) || (str2.size() != 64))
return -1;
int difference = 0;
for (int i = 0; i<64; i++)
{
if (str1[i] != str2[i])
difference++;
}
return difference;
}
/*计算汉明距离*/
int ahashhammingDistance(const bitset &query const bitset &target){
int distance = 0;
for (int i = 0; i < hashLength; i++){
distance += (query[i] == target[i] ? 0 : 1);
}
return distance;
}
// 计算8*8图像的平均灰度
float ahashcalcAverage(Mat_ image const int &size){
float sum = 0;
for (int i = 0; i < size; i++){
for (int j = 0; j < size; j++){
sum += image(i j);
}
}
return sum / (size*size);
}
/* 计算hash值
image:8*8的灰度图像
size: 图像大小 8*8
ahahs:存放64位hash值
averagePix: 灰度值的平均值
*/
void ahashfingerPrint(Mat_ image const int &size bitset &ahash const float &averagePix){
for (int i = 0; i < size; i++){
int pos = i * size;
for (int j = 0; j < size; j++){
ahash[pos + j] = image(i j) >= averagePix ? 1 : 0;
}
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-10-10 17:02 基于hash的图像检索软件
目录 0 2018-10-10 17:01 基于hash的图像检索软件源码
目录 0 2018-04-22 14:44 基于hash的图像检索软件源码pHash
目录 0 2018-10-10 17:01 基于hash的图像检索软件源码pHashpHash
文件 3998 2018-04-20 20:22 基于hash的图像检索软件源码pHashpHashReadMe.txt
文件 1934 2018-04-22 09:56 基于hash的图像检索软件源码pHashpHashhash.cpp
文件 712 2018-04-22 09:56 基于hash的图像检索软件源码pHashpHashhash.h
文件 2361 2018-04-20 20:22 基于hash的图像检索软件源码pHashpHashpHash.cpp
文件 437 2018-04-20 20:22 基于hash的图像检索软件源码pHashpHashpHash.h
文件 12058 2018-04-21 15:21 基于hash的图像检索软件源码pHashpHashpHash.vcxproj
文件 10586 2018-04-22 10:53 基于hash的图像检索软件源码pHashpHashpHashDlg.cpp
目录 0 2018-04-22 14:44 基于hash的图像检索软件源码pHashpHash
es
文件 67777 2013-07-22 01:18 基于hash的图像检索软件源码pHashpHash
espHash.ico
文件 666 2018-04-20 20:22 基于hash的图像检索软件源码pHashpHash
espHash.rc2
文件 138 2018-04-20 20:22 基于hash的图像检索软件源码pHashpHashstdafx.cpp
文件 1578 2018-04-20 20:22 基于hash的图像检索软件源码pHashpHashstdafx.h
文件 234 2018-04-20 20:22 基于hash的图像检索软件源码pHashpHash argetver.h
文件 100597760 2018-04-22 14:44 基于hash的图像检索软件源码pHashpHash.sdf
文件 1315 2018-04-21 14:13 基于hash的图像检索软件源码pHashpHash.sln
文件 31232 2018-04-22 14:44 基于hash的图像检索软件源码pHashpHash.v12.suo
目录 0 2018-10-10 16:49 基于hash的图像检索软件演示
文件 75073 2018-04-21 22:08 基于hash的图像检索软件演示QQ图片20180422122413.jpg
文件 16801 2018-04-19 21:25 基于hash的图像检索软件要求.docx
文件 64 2018-10-10 13:39 基于hash的图像检索软件说明.txt
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)