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

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

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

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

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

Различие для процедуры шумоподавления найдено на шаге 2. Существует два доступные подхода сжатия:

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

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

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

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

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

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('Color','white'),image(xd)
title('Compressed Image - Global Threshold = 20')
colormap(map)

Восстановление L2-нормы (%)

perf0
perf0 = 74.3067

Счет сжатия (%)

perfl2
perfl2 = 99.9772

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

cxd = sparse(cxd);
cxd_density = nnz(cxd)/prod(size(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('Color','white'),image(xd2)
title('Compressed Image - Level-Dependent Thresholding')
colormap(map)

Восстановление L2-нормы (%)

perf02
perf02 = 77.3435

Счет сжатия (%)

perfl22
perfl22 = 99.6132

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

cxd2 = sparse(cxd2);
cxd2_density = nnz(cxd2)/prod(size(cxd2))
cxd2_density = 0.2266

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

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