как отобразить многоуровневый wavedec2 в MATLAB

После вычисления 4-уровневого дискретного вейвлет-преобразования изображения, как мне отобразить это многоуровневое преобразование в Matlab? И как построить гистограмму соответствующих коэффициентов DWT?

Вот что я сделал до сих пор:

I = imread('image.png');
N = 4;
[C,S] = wavedec2(im2double(I),N,'haar');
A = appcoef2(C,S,'haar',1);
[H1,V1,D1] = detcoef2('all',C,S,1);
[H2,V2,D2] = detcoef2('all',C,S,2);
[H3,V3,D3] = detcoef2('all',C,S,3);
[H4,V4,D4] = detcoef2('all',C,S,4);

person ABC2013    schedule 27.11.2017    source источник


Ответы (1)


Вот что я бы сделал:

N = 4;

img = imread('image.png');
img = im2double(img);

[C,S] = wavedec2(img,N,'haar');

for i = 1:N
    lvl = ['Level ' num2str(i)];

    A = appcoef2(C,S,'haar',i);
    [H,V,D] = detcoef2('all',C,S,i);

    figure('Name',['Images (' lvl ')']);
    % Eventually, you can define a colormap for your images...
    % colormap(pink(255));
    subplot(2,2,1); imagesc(A);
    title('Approximation')
    subplot(2,2,2); imagesc(H);
    title('Horizontal Detail');
    subplot(2,2,3); imagesc(V);
    title('Vertical Detail');
    subplot(2,2,4); imagesc(D);
    title('Diagonal Detail'); 
    suptitle(lvl);

    % tweak the histogram bins as you prefer
    figure('Name',['Histograms (' lvl ')']);
    subplot(2,2,1); hist(A(:),32);
    subplot(2,2,2); hist(H(:),32);
    subplot(2,2,3); hist(V(:),32);
    subplot(2,2,4); hist(D(:),32);
    suptitle(lvl);
end

На самом деле, поскольку я не очень разбираюсь в цифровой обработке изображений, вам решать, как настроить мой пример и сделать его под свои нужды.

person Tommaso Belluzzo    schedule 27.11.2017
comment
Спасибо, это очень полезно. - person ABC2013; 28.11.2017
comment
Знаете ли вы, есть ли способ объединить все коэффициенты для всех уровней, чтобы получить только одну гистограмму? @Томмазо - person ABC2013; 28.11.2017
comment
В каждом цикле вы сохраняете коэффициенты текущего уровня в другую переменную, объявленную перед циклом... затем вы печатаете гистограммы, когда у вас есть все они. - person Tommaso Belluzzo; 28.11.2017
comment
под сохранением всех коэффициентов текущего уровня ты имеешь в виду я их складываю или умножаю или какую операцию надо сделать? - person ABC2013; 30.11.2017
comment
Добавьте их к переменной (массиву ячеек). - person Tommaso Belluzzo; 30.11.2017