如何使用 2d dct 获取 png 图像的特征?

how to get feature of png image using 2d dct?

能否使用dct提取.png图片的特征? 或者 dct 仅适用于 jgp?因为我的数据集使用的是png格式。

看了好几本杂志,发现2d dct可以用来提取基于系数的特征。我需要 Neural Neutwork 的功能。 我已经尝试使用基本代码来执行 2d dct(使用 matlab):

i = imread ('AB1.png');
b = im2double (x);
d = dct2 (b, [64 64]); 

但是,我仍然不确定这段代码是否真的为我提供了我需要的适当功能。您有其他代码推荐吗?

还有为什么 'dctmtx' 函数为不同的图像提供相同的系数? *先谢谢了。

首先,png 并不重要,只要您不进行一些 alpha 通道处理等,读取 png 就像读取 jpg 一样,因为您是在图像的矩阵表示而不是文件上执行 DCT .

您的代码:

d = dct2 (b, [64 64]); 

应该给你零填充的 64 x 64 图像的 2d-DCT。

要检查你可以尝试这样的事情:

d = dct(dct(b.').') %//If you want to pad your image with zero first.

因为 dct2 是在核心使用 dct 实现的。

至于 dctmtx - 它应该给你 dct 矩阵,你可以将其应用于图像矩阵以获得图像的 dct 结果(因此,dctmtx 生成的结果对于任何图像都是相同的大小相同)。 Matlab给出了一个明确的例子:

A = im2double(imread('rice.png')); %//your image
D = dctmtx(size(A,1));  %//Generate a DCT matrix of the SIZE of your image
dct = D*A*D';  %//Obtain 2D - DCT 
figure, imshow(dct)  %//Result transform

所有三个例子应该给你相同的结果。

最后,就最佳特征提取而言 algorithm/transformation,这实际上取决于您要实现的目标 - recognition/enhancement/encryption 但总的来说,DCT 对于常规图像非常好且高效。