-1

我需要一个用于此处描述的感知散列算法的 matlab 代码: http ://www.hackerfactor.com/blog/index.php?/archives/432-Looks-Like-It.html

基本上我希望这可以删除图像中的细节,只留下主要结构组件信息。

为此,我认为我需要以下步骤: 1. 减少 DCT。假设 DCT 是 32x32(),只保留左上角的 8x8。这些代表图片中的最低频率。

  1. 计算平均值。与平均哈希一样,计算平均 DCT 值(仅使用 8x8 DCT 低频值并排除第一项,因为 DC 系数可能与其他值显着不同,并且会偏离平均值)。

  2. 进一步降低 DCT。根据 64 个 DCT 值中的每一个值是高于还是低于平均值,将 64 个哈希位设置为 0 或 1。结果并没有告诉我们实际的低频;它只是告诉我们频率与平均值的非常粗略的相对比例。只要图像的整体结构保持不变,结果就不会改变;这可以毫无问题地在伽马和颜色直方图调整中存活。

  3. 处理后重建图像。

任何人都可以帮助完成上述任何一个步骤吗?我已经尝试了一些给出一些结果的代码(在下面的链接中),它还不完美: https ://stackoverflow.com/questions/26748051/extract-low-frequency-from-dct-coeffecients-of-an- matlab 中的图像

4

1 回答 1

0

Try this:

% read image
I = imread('cameraman.tif');

% cosine transform and reduction
d = dct2(I);
d = d(1:8,1:8);

% compute average
a = mean(mean(d));

% set bits, here unclear whether > or >= shall be used
b = d > a;
% maybe convert to string:
string = num2str(b(:)');
于 2014-11-05T08:22:41.887 回答