在单元格中存储每行图像的CWT

时间:2014-03-21 16:08:46

标签: image matlab image-processing matrix wavelet-transform

我想计算每行480X480图像的morlet小波。我必须保存每行变换的输出,这是一个二维数组(矩阵)。

然后我将取平均值所有480个2d矩阵得到平均值的最终图。

clc;
close all;
clear all;
I=imread('lena.jpg');
J=rgb2gray(I);
%K=J(1:480)
%coefs = cwt(K,1:128,'morl','plot');


coefs = cell(480,1);
for i = 1:480
   K=J(i,:);
coefs(i) = cwt(K,1:128,'morl');
end  

这里我想采用480个coeff矩阵的平均值。这里得到错误

  

无法从double转换为单元格。

     

土壤波的错误(第12行)coefs(i)= cwt(K,1:128,' morl');

有人可以提出更好的方法或对此进行调整。

1 个答案:

答案 0 :(得分:1)

如果您需要存储格式或尺寸不一致的元素,则单元格数组很实用,但对于您要执行的操作,3D数组更易于使用。这就是我要做的事情:

预先指定3D阵列:

coefs = zeros(128, size(J, 2), size(J,1));

然后计算并填充堆栈:

for ii = 1:size(J, 1)
   K=J(ii,:);
   coefs(:,:,ii) = cwt(K,1:128,'morl');
end  

最后,计算第三维的平均值:

MeanCoeff=mean(coefs, 3);