MATLAB 感知哈希算法 笔记

根据博客:http://www.ruanyifeng.com/blog/2011/07/principle_of_similar_image_search.html
的描述简单和个人的理解的写出了MATLAB代码,这里个简单记录。
第一步,缩小尺寸。
第二步,简化色彩。
第四步,比较像素的灰度。
第五步,计算哈希值。

代码:

%% 感知哈希简易算法进行图像搜索
% 这种算法的优点是简单快速,不受图片大小缩放的影响,缺点是图片的内容不能变更。
% 如果在图片上加几个文字,它就认不出来了。所以,它的最佳用途是根据缩略图,找出原图。
clc;
clear all;
% 第一,将图像缩放到8*8大小,缩放不变性
I=imread('MN.jpg');
figure,imshow(I),title('原始图像');
J=imresize(I,[8,8]);
figure,imshow(J),title('8*8图像');
% 第二、将图像灰度化到64个灰度级,灰度粗化
img = double(rgb2gray(J));  
img_64 = floor(img/255*64);
figure,imshow(img_64),title('8*8-64级图像');
% 第三、计算灰度平均值
gray_mean = sum(img_64(:))/64;
% 第四、将所有像素的灰度和均值比较,大于的为1,小于的为0
feature_img = zeros(8,8);
for i=1:8
    for j=1:8
        if img_64(i,j) >= gray_mean
            feature_img(i,j) = 1;            
        end
    end
end
figure,imshow(feature_img),title('8*8特征图像');
% 第五步,计算哈希值。将其变换成一行即可。
hash_feature = reshape(feature_img,1,64)
% 两个哈希值中小于5个不同,说明很相似的图。大于10说明是不同的照片。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值