Хранение CWT каждого ряда изображения в ячейке

Я хочу вычислить морлет вейвлет каждой строки изображения 480X480. Я должен сохранить выходные данные преобразования каждой строки, которая является двумерным массивом (матрица).

Затем я возьму среднее значение для всех 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 коэффицентных матриц. Здесь я получаю сообщение об ошибке

Преобразование в ячейку из двойного невозможно.

Ошибка в грунтовых волнах (строка 12) coefs(i) = cwt(K,1:128,'morl');

Может ли кто-нибудь предложить лучший метод или настройки к этому.

1 ответ

Решение

Массивы ячеек практичны, если вам нужно хранить элементы, которые имеют несовместимый формат или размеры, но для того, что вы пытаетесь сделать, с трехмерным массивом легче работать. Вот что я бы сделал:

Предварительно назначить 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);
Другие вопросы по тегам