写个DCT版的image perceptual hash
来源:互联网 发布:深入浅出学java 编辑:程序博客网 时间:2024/06/14 02:25
额,好久没有写这种image retrieved 的函数了
由于DCT可以把图像的低频信息保留在左上角,而高频信息则被放到右下角,而低频信息是图像中最主要的信息,比如亮度,高频信息比如边缘
这样,就可以实现一个简单的图像压缩过程
Image Perceptual Hash是图像搜索技术常用的方法,简单的说就是得到一幅图像的hash值,以方便搜索
相关的技术文档请google, wiki, 或者看paper也行
常用的DCT image perceptual hash的步骤是:
1.把图像image1 高斯滤波,resize成一个固定的尺寸的图像image2,比如32*32
2.对image2做DCT变换,得到左上角的低频信息,通常是一个8*8的区域
3.计算这个区域的中值
4.区域像素值与中值比较,大于为1,小于为0,得到一个8*8 = 64 的hash值
5.利用hash值进行图像对比,通常选用hamming distance
OVER
伪代码(OpenCV版本)
cvSmoothcvResizecvDCTcvMinMaxLoc
使用OpenCV是很方便的,如果不想用cvDCT,可以自己写DCT的代码,代码并不难,最关键的是先看到DCT是怎么一个过程,系数矩阵怎么计算就可以
DCT是图像里面经常要用的东西,已经有相关的快速算法,也可以自己多线程或者GPU计算,要是嫌麻烦就凑合着用cvDCT吧
DCT coefficients:0.3540.3540.3540.3540.3540.3540.3540.3540.490.4160.2780.0975-0.0975-0.278-0.416-0.490.4620.191-0.191-0.462-0.462-0.1910.1910.4620.416-0.0975-0.49-0.2780.2780.490.0975-0.4160.354-0.354-0.3540.3540.354-0.354-0.3540.3540.278-0.490.09750.416-0.416-0.09750.49-0.2780.191-0.4620.462-0.191-0.1910.462-0.4620.1910.0975-0.2780.416-0.490.49-0.4160.278-0.0975Before DCT:-256-183-110-3736109182255-250-230-190-130-5050170255101599200700-100-402030200240880-100-40200180150109170-100-4017111773-4400-133-711008160-96-3350-150-180056-35-73-14-8-15-203After DCT:60.362.5-100-15.5-6.75-38.678.8-31.430.7-634-17.9-17911750-18.5-23.2-266-483121117-116-20.7-74.141.932.7-75.417439.3-18.5-67.549.313.8104-3.02-75.1-53-6.7536.9-53.3-0.21957.6123-156-30.66.37-1.1666.9-6.564.1130-65.6-4.5438.20.174-27.6-5.9664.5154-15.119.6-4.86-7.235.42-33.7上面是一个8*8的DCT变换结果
以下是DCT-BASED image hash
1.jpg 2.jpg
005.jpg
007.jpg
008.jpg
Result:
从结果来看,这个DCT-Based pHash对图像尺寸缩放很鲁棒,但是貌似对图像抠图还是有点问题,晚上google下,看看相关的paper,应该有很多phash方法
- 写个DCT版的image perceptual hash
- radial image perceptual hash
- 一段写坏掉的快速DCT实现
- 感知哈希算法(Perceptual hash algorithm)的OpenCV实现
- 感知哈希算法(Perceptual hash algorithm)的OpenCV实现
- 感知哈希算法(Perceptual hash algorithm)的OpenCV实现
- 感知哈希算法(Perceptual hash algorithm)的OpenCV实现
- 感知哈希算法(perceptual hash algorithm),
- 自己写的DCT压缩彩色图片的Matlab程序
- 自己写的hash
- 写个hash排除重复数据
- 感知哈希算法"(Perceptual hash algorithm)
- 感知哈希算法(Perceptual hash algorithm)
- 感知哈希算法(Perceptual hash algorithm)
- 感知哈希算法(Perceptual hash algorithm) 以图搜图
- DCT的一点心得
- DCT变换的学习
- dct
- Linux因为安装jdk设定环境变量无法登陆桌面解决方法
- SquishIt——JavaScript、CSS压缩器
- How to Completely Fix UNIDRVUI.DLL Error
- Java中Properties类的使用
- POI导入excel出错
- 写个DCT版的image perceptual hash
- DIV+CSS最小高度(兼容IE6\IE7\FF)
- xp局域网内共享设置
- SharedPreference的用法
- Windows线程间通信机制
- linux中新建用户
- 云计算的意义与选择
- c# 自定义事件的步骤
- Java容器简介-总汇