如何使用2d dct获取png图像的功能?

时间:2016-01-29 06:52:50

标签: matlab feature-extraction dct

我可以使用dct提取.png图像的功能吗? 或者dct只适用于jgp?因为我的数据集使用png格式。

我读了几本期刊,发现2d dct可以用来根据系数提取特征。我需要神经网络的功能。 我已经尝试过基本代码来做2d dct(使用matlab):

RewriteEngine On
RewriteRule  ^clothing/mens/([0-9a-zA-Z]+) /clothing/mens/brand.html?brand=$1 [NC,L]

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

为什么'dctmtx'功能为不同的图像提供相同的系数? *先谢谢。

1 个答案:

答案 0 :(得分:1)

首先,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

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

最后,就最佳特征提取算法/转换而言,它实际上取决于您要实现的目标 - 识别/增强/加密,但一般来说,DCT对常规图像非常有效。