Сжатие данных с помощью 2D Анализа Вейвлета

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

  • Разложитесь: Выберите вейвлет, выберите уровень 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-нормы (%)

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-нормы (%)

perfl22
perfl22 = 99.6132

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

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

Сводные данные

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

Для просмотра документации необходимо авторизоваться на сайте