我首先需要在 Matlab 中加密图像的 DCT 系数。
我如何获得它们?
我使用此代码来计算图像的 DCT:
I = imread('cameraman.tif');
I = im2double(I);
T = dctmtx(8);
dct = @(block_struct) T * block_struct.data * T';
B = blockproc(I,[8 8],dct);
mask = [1 1 1 1 0 0 0 0
1 1 1 0 0 0 0 0
1 1 0 0 0 0 0 0
1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0];
B2 = blockproc(B,[8 8],@(block_struct) mask .* block_struct.data);
invdct = @(block_struct) T' * block_struct.data * T;
I2 = blockproc(B2,[8 8],invdct);
imshow(I), figure, imshow(I2)
我阅读的论文中的声明是:
基本结构:让是一个维度的特征空间(例如,空间对应于数字图像的 DCT 左上角的条目,不包括 DC 分量)并考虑原始特征.
该论文还提供了一些实用细节,例如:
我们选择左上角作为特征空间DCT 的系数(不包括 DC 分量)。
