我可以使用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'功能为不同的图像提供相同的系数? *先谢谢。
答案 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对常规图像非常有效。