我有25张标签'感染'和25张标签'普通'的图片。 我试图提取基于双树复数小波变换的系数作为每个图像的特征。
我使用DT-CWT获取系数的代码如下:
I = imread('infected_img1.jpg'); %read image
I = rgb2gray(I); %rgb ro gray-scale
L = 6; %no. of levels for wavelet decomposition
I = reshape(I',1,size(I,1)*size(I,2)); %change into a vector
I = [I,zeros(1,2^L - rem(length(I),2^L))]; %pad zeros to make dim(I) a multiple of 2^L
I = double(I);
dt = dddtree('cplxdt',I,L,'dtf3'); %perform DT-CWT
dt_Coeffs = (dt.cfs{L}(:,:,1) + 1i*dt.cfs{L}(:,:,2)); %extract coefficents at Level 6
现在,由于我有24个以上的图像来提取系数,我为每个图像执行此块。我的最终目标是附加在每次迭代中生成的所有系数向量以形成矩阵。但是每个图像倾向于给出不同大小的系数向量。
我想知道一些降维方法,它可以将每个矢量减少到统一的大小,同时保留其信息。 任何人都可以建议具有良好清晰度的方法吗?
答案 0 :(得分:0)
正如我在评论中提到的那样,
您无法缩小某些内容(即删除信息)并仍然保留所有 信息。
相反,您可以将所有向量填充到最大向量的长度,然后将它们连接起来以创建矩阵。您可以编写自己的方法,但本着not reinventing the wheel的精神,我以前使用过padcat()
。它非常易于使用并使用NaN
填充,但您可以轻松将其更改为0
。
以下是一个示例用法,其中还包含从NaN
到0
的便捷转换。
>> a = [1 2 3 4];
>> b = [1 2 3];
>> c = padcat(a, b);
c =
1 2 3 4
1 2 3 NaN
>> c(isnan(c)) = 0
c =
1 2 3 4
1 2 3 0