根據部落格:
的描述簡單和個人的理解的寫出了matlab**,這裡個簡單記錄。
第一步,縮小尺寸。
第二步,簡化色彩。
第四步,比較畫素的灰度。
第五步,計算雜湊值。
%% 感知雜湊簡易演算法進行影象搜尋
% 這種演算法的優點是簡單快速,不受大小縮放的影響,缺點是的內容不能變更。
% 如果在上加幾個文字,它就認不出來了。所以,它的最佳用途是根據縮圖,找出原圖。
clc;
clear all;
% 第一,將影象縮放到8*8大小,縮放不變性
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;
endend
endfigure,imshow(feature_img),title('8*8特徵影象');
% 第五步,計算雜湊值。將其變換成一行即可。
hash_feature = reshape(feature_img,1,64)
% 兩個雜湊值中小於5個不同,說明很相似的圖。大於10說明是不同的**。
感知雜湊演算法
感知雜湊演算法是一類雜湊演算法的總稱,其作用在於生成每張影象的 指紋 fingerprint 字串,比較不同影象的指紋資訊來判斷影象的相似性。結果越接近影象越相似。感知雜湊演算法包括均值雜湊 ahash 感知雜湊 phash 和dhash 差異值雜湊 ahash速度較快,但精確度較低 phash則反...
感知雜湊演算法
感知雜湊演算法 perceptual hash algorithm 它的作用是對每張生成乙個 指紋 fingerprint 字串,然後比較不同的指紋。結果越接近,就說明越相似。缺點 的內容不能更改。hash演算法原理 第一步,縮小尺寸。將縮小到8 8的尺寸,總共64個畫素。這一步的作用是去除的細節,...
感知雜湊演算法
有一些搜尋引擎有搜尋相似的功能,比如google,其中是什麼原理呢?其實我們利用乙個演算法就能達到相似的效果,其中涉及到的演算法就是 感知雜湊演算法 perceptual hash algorithm 下面就簡單介紹下該演算法。1.縮小的尺寸 將縮小到8 8的尺寸,總共64個畫素,這樣做的目的是去除...