Модификация вейвлет-коэффициентов — использование функций `wavedec2` и `waverec2` MATLAB

Я новичок в вейвлет-преобразовании. Я пытаюсь использовать вейвлет-преобразование для разложения изображений, а затем изменить коэффициенты, чтобы в конечном изображении сохранялись только первые 15 коэффициентов, скажем, для сжатия изображения (не говоря уже о качестве).

Мне нужна помощь, чтобы продолжить это. Мой код пока выглядит так:

% gray_image is my inout image%
[C,S] = wavedec2(gray_image,2,'haar');
A1 = appcoef2(C,S,'haar',1);
A2 = appcoef2(C,S,'haar',2);
[H1,V1,D1] = detcoef2('all',C,S,1);
[H2,V2,D2] = detcoef2('all',C,S,2);

У меня есть приблизительное изображение для уровня 1 и 2, а также компоненты детализации уровней 1 и 2. Если мне нужно сохранить первые 15 коэффициентов как приблизительного, так и детализации, а затем рекомбинировать их с помощью waverec2(), что мне делать? об этом?

Любая помощь приветствуется.

Заранее спасибо.


person Ashwini    schedule 30.06.2016    source источник
comment
Первые 15 неоднозначны. Вейвлет-преобразование для 2D-изображений имеет две степени свободы — горизонтальную и вертикальную. Какие 15 коэффициентов вы хотите сохранить? сетка 5 x 3 или 3 x 5 в верхнем левом углу? Центр? Более конкретно.   -  person rayryeng    schedule 30.06.2016
comment
rayryeng - Спасибо за ответ. Я хочу сохранить верхние 15% наборов приблизительных и детальных изображений.   -  person Ashwini    schedule 30.06.2016
comment
Каково ваше определение вершины? Самые большие коэффициенты?   -  person rayryeng    schedule 30.06.2016
comment
да. Прошу прощения за такую ​​двусмысленность. Да, я хочу извлечь самые большие 15% коэффициентов.   -  person Ashwini    schedule 01.07.2016


Ответы (1)


Прежде всего, вы должны знать, что когда вы выполняете двухуровневую декомпозицию, ваши коэффициенты: {A2, H2, V2, D2, H1, V1, D1}. Следовательно, модифицировать «А1» нецелесообразно. Это потому, что "A1" является результатом объединения A2, H2, V2 и D2.

Теперь, предполагая, что вы хотите изменить один из упомянутых коэффициентов, вам необходимо ознакомиться с использованием wavedec2. Эта функция ставит все коэффициенты один за другим в одну строку.

Вот мой сообщение о работе с набором инструментов для вейвлетов MATLAB. «Пример 5» демонстрирует, как wavedec2 хранит коэффициенты. Как только вы узнаете механизм хранения, будет очень просто модифицировать коэффициенты и использовать waverec2 для восстановления.

Обратите внимание, что существует также более интуитивно понятный и простой способ извлечения коэффициентов, управления ими и предварительного восстановления: вы можете использовать функции (dwt2,idwt2) вместо (wavedec2,waverec2). Подробнее см. здесь.

person ashkan    schedule 16.11.2019