exponenta event banner

Сжатие данных, используя 2-й Анализ Небольшой волны

Цель этого примера - показать, как сжимать изображение с помощью двухмерного вейвлет-анализа. Сжатие является одним из наиболее важных применений вейвлетов. Подобно деноизированию, процедура сжатия содержит три стадии:

  • Разложение: выберите вейвлет, выберите уровень N. Вычислите вейвлет-разложение сигнала на уровне N.

  • Пороговые коэффициенты детализации: Для каждого уровня от 1 до N выбирается порог и применяется жесткое пороговое значение к коэффициентам детализации.

  • Реконструкция: Вычислить вейвлет-реконструкцию с использованием исходных коэффициентов аппроксимации уровня N и модифицированных коэффициентов детализации уровней от 1 до N.

Различие с процедурой обезвреживания обнаруживается на этапе 2. Существует два подхода к сжатию:

  • Первый состоит в получении вейвлет-расширения сигнала и сохранении наибольших коэффициентов абсолютного значения. В этом случае можно задать глобальный порог, производительность сжатия или относительную производительность восстановления квадратной нормы. Таким образом, необходимо выбрать только один параметр.

  • Второй подход заключается в применении визуально определяемых уровней-зависимых порогов.

Загрузить изображение

Рассмотрим реальный пример сжатия для данного и неоптимизированного вейвлет-выбора, чтобы получить почти полное восстановление квадратной нормы для изображения.

load woman;              % Load original image
image(X)
title('Original Image')
colormap(map)

Figure contains an axes. The axes with title Original Image contains an object of type image.

x = X(100:200,100:200);  % Select ROI

Метод 1: Глобальное пороговое значение

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

n = 5;                   % Decomposition level 
w = 'sym8';              % Near symmetric wavelet
[c,l] = wavedec2(x,n,w); % Multilevel 2-D wavelet decomposition

В этом первом способе функция WDENCMP выполняет процесс сжатия из структуры вейвлет-разложения. [c,l] изображения.

opt = 'gbl'; % Global threshold
thr = 20;    % Threshold
sorh = 'h';  % Hard thresholding
keepapp = 1; % Approximation coefficients cannot be thresholded
[xd,cxd,lxd,perf0,perfl2] = wdencmp(opt,c,l,w,n,thr,sorh,keepapp);
image(x)
title('Original Image')
colormap(map)

Figure contains an axes. The axes with title Original Image contains an object of type image.

figure
image(xd)
title('Compressed Image - Global Threshold = 20')
colormap(map)

Figure contains an axes. The axes with title Compressed Image - Global Threshold = 20 contains an object of type image.

Показатель сжатия (%)

perf0
perf0 = 74.3067

L2-norm восстановление (%)

perfl2
perfl2 = 99.9772

Плотность текущей разреженной матрицы разложения равна:

cxd = sparse(cxd);
cxd_density = nnz(cxd)/numel(cxd)
cxd_density = 0.2569

Метод 2: Пороговое значение, зависящее от уровня

Функция WDENCMP также позволяет устанавливать пороговые значения, зависящие от уровня и ориентации. В этом случае аппроксимация сохраняется. Зависящие от уровня пороги в трех ориентациях: горизонтальная, диагональная и вертикальная:

opt = 'lvd';        % Level-dependent thresholds
thr_h = [17 18];    % Horizontal thresholds
thr_d = [19 20];    % Diagonal thresholds
thr_v = [21 22];    % Vertical thresholds
thr = [thr_h ; thr_d ; thr_v];

Во втором примере обратите внимание, что функция WDENCMP выполняет процесс сжатия из изображения. x.

[xd2,cxd2,lxd2,perf02,perfl22] = wdencmp(opt,x,w,2,thr,sorh);
image(x)
title('Original Image')
colormap(map)

Figure contains an axes. The axes with title Original Image contains an object of type image.

figure
image(xd2)
title('Compressed Image - Level-Dependent Thresholding')
colormap(map)

Figure contains an axes. The axes with title Compressed Image - Level-Dependent Thresholding contains an object of type image.

Показатель сжатия (%)

perf02
perf02 = 77.3435

L2-norm восстановление (%)

perfl22
perfl22 = 99.6132

Плотность текущей разреженной матрицы разложения равна:

cxd2 = sparse(cxd2);
cxd2_density = nnz(cxd2)/numel(cxd2)
cxd2_density = 0.2266

Резюме

Используя зависящее от уровня пороговое значение, плотность вейвлет-разложения была уменьшена на 3% при улучшении восстановления L2-norm на 3%. Если вейвлет-представление является слишком плотным, аналогичные стратегии могут быть использованы в структуре вейвлет-пакета для получения более разреженного представления. Затем можно определить наилучшее разложение относительно подходящего выбранного критерия, подобного энтропии, который соответствует выбранной цели (деноизмещение или сжатие).