0

我有一组 25 张标签为“感染”的图像和 25 张标签为“正常”的图像。我正在尝试提取基于双树复小波变换的系数作为每个图像的特征。

我使用 DT-CWT ia 获取系数的代码如下:

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 个图像要从中提取系数,所以我对每个图像都执行此块。我的最终目标是附加每次迭代中生成的所有系数向量以形成一个矩阵。但是每个图像往往会给出不同大小的系数向量。

我想知道一些降维方法,可以将每个向量减小到统一的大小,同时保留其信息。任何人都可以提出非常清晰的方法吗?

4

1 回答 1

0

正如我在评论中提到的,

不能缩小某些东西(即删除信息并仍然保留所有信息。

相反,您可以将所有向量填充到最大向量的长度,然后将它们连接起来以创建一个矩阵。您可以编写自己的方法,但本着不重新发明我以前使用过的轮子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
于 2015-09-22T20:23:55.433 回答