wcompress

Истинное сжатие изображений с помощью вейвлетов

Синтаксис

wcompress('c',X,SAV_FILENAME,COMP_METHOD)
wcompress(...,'ParName1',ParVal1,'ParName2',ParVal2,...)
[COMPRAT,BPP] = wcompress('c',...)
XC = wcompress('u',SAV_FILENAME)
XC = wcompress('u',SAV_FILENAME,'plot')
XC = wcompress('u',SAV_FILENAME,'step')

Описание

wcompress команда выполняет или сжатие или несжатие изображений полутонового или истинного цвета.

Больше теоретической информации об истинном сжатии находится в Сжатии Вейвлета для Изображений Руководства пользователя Wavelet Toolbox™.

Сжатие

wcompress('c',X,SAV_FILENAME,COMP_METHOD) сжимает изображение X использование метода сжатия COMP_METHOD.

Сжатое изображение сохранено в файле SAV_FILENAME. У вас должно быть разрешение записи в текущей рабочей директории, или MATLAB® изменит директорию в tempdir и запишите .wtc файл в той директории. X может быть или 2D массив, содержащий индексируемое изображение или трехмерный массив uint8 содержа изображение истинного цвета. Оба размер строки и столбца изображения должны быть степенями двойки.

wcompress('c',FILENAME,...) загружает изображение X из файла FILENAME который является файлом Поддерживаемого формата MATLAB (MSF): MAT-файл или другие файлы изображений (см. imread).

wcompress('c',I,...) преобразует индексируемое изображение X = I{1} к истинному цвету отображают Y использование палитры map = I{2} и затем сжатия Y.

Примечание

Данные записаны в .wtc файлы используют uint64 точность. В релизах до R2016b данные были записаны с помощью uint32 . Если на ваш код плохо влияет это изменение, используйте legacy опция, чтобы сжаться и распаковать ваши данные с помощью предыдущего поведения.

wcompress('c',X,SAV_FILENAME,COMP_METHOD,'legacy')

Допустимые методы сжатия разделены на три категории.

  1. Прогрессивные содействующие методы значения (PCSM):

    Имя MATLAB

    Имя метода сжатия

    'ezw'

    Встроенный вейвлет Zerotree

    'spiht'

    Установите разделение в иерархических деревьях

    'stw'

    Вейвлет дерева ориентации в пространстве

    'wdr'

    Сокращение различия в вейвлете

    'aswdr'

    Адаптивно отсканированное сокращение различия в вейвлете

    'spiht_3d'

    Установите Разделение В Иерархических Деревьях, 3D для изображений истинного цвета

Для получения дополнительной информации об этих методах смотрите ссылки и особенно Уокера и также Саида и Перлмена.

  1. Содействующие методы задания порога (CTM-1):

    Имя MATLAB

    Имя метода сжатия

    'lvl_mmc'

    Пороговая обработка поддиапазона коэффициентов и Кодирование методом Хаффмана

Для получения дополнительной информации об этом методе смотрите ссылку Странга и Нгуена.

  1. Содействующие методы задания порога (CTM-2):

    Имя MATLAB

    Имя метода сжатия

    'gbl_mmc_f'

    Глобальная пороговая обработка коэффициентов и зафиксированное кодирование

    'gbl_mmc_h'

    Глобальная пороговая обработка коэффициентов и Кодирование методом Хаффмана

    Примечание

    Дискретное Преобразование Вейвлета использует periodized дополнительный режим.

Все методы сжатия используют параметры, которые имеют значения по умолчанию. Можно изменить эти значения с помощью следующего синтаксиса:

wcompress(...,'ParName1',ParVal1,'ParName2',ParVal2,...)

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

Параметры преобразования данных

  • 'ParName' = 'wname' или 'WNAME' определяет имя вейвлета.

    ParVal вектор символов или скаляр строки (см. waveletfamilies). Значением по умолчанию для является bior4.4

  • 'ParName' = 'level' или 'LEVEL' устанавливает уровень разложения.

    ParVal целое число, таким образом что: 1 level levmax который является максимальным возможным уровнем (см. wmaxlev).

    Уровень по умолчанию зависит от метода:

         - для методов PCSM level равно levmax.

         - для CTM уровень методов равен fix(levmax/2)

  • ParName' = 'it' или 'IT' Преобразование Типа изображения наборов.

    ParVal должно быть одно из следующего:

    'n' : никакое преобразование (значение по умолчанию), тип изображения (истинный цвет или шкала полутонов) автоматически обнаруживается.

    'g' : полутоновый тип преобразования.

    'c' : тип преобразования цвета (RGB uint8).

  • 'ParName' = 'cc' или 'CC' устанавливает параметр Преобразования цветов если X изображение истинного цвета.

    ParVal должно быть одно из следующего:

    'rgb' или 'none' : Никакое преобразование (значение по умолчанию).

    'yuv' : Цветовое пространство YUV преобразовывает.

    'klt' : Karhunen-Loeve преобразовывают.

    'yiq' : Цветовое пространство YIQ преобразовывает.

    'xyz' : Цветовое пространство CIEXYZ преобразовывает.

Параметр для Прогрессивных содействующих методов значения (PCSM)

  • 'ParName' = 'maxloop' или 'MAXLOOP' определяет максимальный номер шагов для алгоритма сжатия.

    ParVal должно быть положительное целое число или Inf (значение по умолчанию равняется 10).

Параметры для содействующих методов задания порога (CTM-1)

Любой из следующих параметров может использоваться:

  • 'ParName' = 'bpp' или 'BPP' устанавливает отношение бита на пиксель.

    ParVal должно быть таково что 0 ParVal ≤ 8 (шкала полутонов) или 24 (истинный цвет).

  • 'ParName' = 'comprat' или 'COMPRAT' устанавливает коэффициент сжатия.

    ParVal должно быть таково что 0 ParVal ≤ 100.

Параметры для содействующих методов задания порога (CTM-2)

Могут использоваться два параметра. Первое связано с порогом, и вторым является количество классов для квантования.

Первый может быть выбран среди пяти после параметров:

  • 'ParName' = 'threshold' или 'THRESHOLD' устанавливает пороговое значение для сжатия.

    ParVal должно быть положительное (или нуль) вещественное число.

  • 'ParName' = 'nbcfs' или 'NBCFS' определяет номер сохраненных коэффициентов в разложении вейвлета.

    ParVal должно быть целое число, таким образом что: 0 ParVal ≤ общее количество коэффициентов разложения вейвлета.

  • 'ParName' = 'percfs' или 'PERCFS' устанавливает процент сохраненных коэффициентов в разложении вейвлета.

    ParVal должно быть вещественное число, таким образом что: 0 ParVal ≤ 100.

  • 'ParName' = 'bpp' или 'BPP' устанавливает отношение бита на пиксель.

    ParVal должно быть таково что: 0 ParVal ≤ 8 (шкала полутонов) или 24 (истинный цвет)

  • 'ParName' = 'comprat' или 'COMPRAT' устанавливает коэффициент сжатия.

    ParVal должно быть таково что: 0 ParVal ≤ 100.

Второй параметр определяет номер классов для квантования:

  • 'ParName' = 'nbclas' или 'NBCLAS' определяет номер классов.

    ParVal должно быть вещественное число, таким образом что: 2 ParVal ≤ 200.

Отобразите параметр

  • 'ParName' = 'plotpar' или 'PLOTPAR' устанавливает параметр графика.

    ParVal должно быть одно из следующего:

    'plot' or 0: графики только сжатое изображение.

    'step' or 1: отображения каждый шаг процесса кодирования (только для методов PCSM).

[COMPRAT,BPP] = wcompress('c',...) возвращает коэффициент сжатия COMPRAT и bit_per_pixel отношение BPP.

Несжатие

XC = wcompress('u',SAV_FILENAME) распаковывает файл SAV_FILENAME, который содержит сжатое изображение и возвращает изображение XC. В зависимости от начальной буквы сжатое изображение, XC может быть 2D массив, содержащий или индексируемое изображение или трехмерный массив uint8 содержа изображение истинного цвета.

XC = wcompress('u',SAV_FILENAME,'plot') строит несжатое изображение.

XC = wcompress('u',SAV_FILENAME,'step') показывает постепенное несжатие, только для методов PCSM.

Примеры

свернуть все

В этом примере показано, как сжать и распаковать изображение jpeg arms.jpg.

Используйте вейвлет дерева ориентации в пространстве ('stw') метод сжатия и сохраняет сжатый образ к файлу.

wcompress('c','arms.jpg','comp_arms.wtc','stw');

Загрузите сохраненное изображение и отобразите постепенное несжатие, чтобы произвести несжатое изображение.

wcompress('u','comp_arms.wtc','step');

Этот пример показывает, как сжать изображение jpeg с помощью адаптивно отсканированного метода сжатия сокращения различия в вейвлете ('aswdr'). Цвет преобразования ('cc') использование Karhunen-Loeve преобразовывает ('kit'). Максимальное количество циклов ('maxloop') установлен в 11 и тип графика ('plotpar') набор должен продвинуться посредством сжатия. Покажите коэффициент сжатия (cratio) и отношение бита на пиксель (bpp), которые указывают на качество сжатия.

[cratio,bpp] = wcompress('c','woodstatue.jpg','woodstatue.wtc', ...
             'aswdr','cc','klt','maxloop',11,'plotpar','step');
cratio
bpp
cratio =

    3.0792


bpp =

    0.7390

Загрузите сжатое изображение и шаг посредством процесса несжатия.

wcompress('u','woodstatue.wtc','step');

В этом примере показано, как сжать полутоновое изображение с помощью разделения набора в иерархических деревьях ('spiht') метод сжатия. Это также вычисляет среднеквадратичную погрешность (MSE) и пиковый сигнал к шумовому отношению (PSNR) ошибочные значения. Вы используете эти две меры, чтобы определить количество ошибки между двумя изображениями. PSNR выражается в децибелах.

Загрузите изображение и сохраните его в файле.

load mask;       
[cr,bpp] = wcompress('c',X,'mask.wtc','spiht','maxloop',12)
cr = 2.8610
bpp = 0.2289

Загрузите сохраненное изображение из файла, распакуйте его и удалите файл.

Xc = wcompress('u','mask.wtc');
delete('mask.wtc')

Отобразите исходные и сжатые изображения.

colormap(pink(255))
subplot(1,2,1); image(X);  title('Original image')
axis square
subplot(1,2,2); image(Xc); title('Compressed image')
axis square

Вычислите MSE и PSNR.

D = abs(X-Xc).^2;
mse  = sum(D(:))/numel(X)
mse = 33.6564
psnr = 10*log10(255*255/mse)
psnr = 32.8601

В этом примере показано, как сжать изображение истинного цвета с помощью разделения набора в иерархических деревьях - 3D ('spiht_3D') метод сжатия.

Загрузите, сожмите и сохраните изображение в файле. Постройте исходные и сжатые изображения. Отобразите коэффициент сжатия ('cratio') и биты на пиксель ('bpp'), которые указывают на качество сжатия.

load mask;     
X = imread('wpeppers.jpg');
[cratio,bpp] = wcompress('c',X,'wpeppers.wtc','spiht','maxloop',12)
cratio = 1.6549
bpp = 0.3972
Xc = wcompress('u','wpeppers.wtc');
delete('wpeppers.wtc')

Отобразите исходные и сжатые изображения.

subplot(1,2,1)
image(X)
title('Original image')
axis square
subplot(1,2,2)
image(Xc)
title('Compressed image')
axis square

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

D = abs(double(X)-double(Xc)).^2;
mse  = sum(D(:))/numel(X)
mse = 26.7808
psnr = 10*log10(255*255/mse)
psnr = 33.8526

Ссылки

Кристоф, E., К. Мэйлхес, П. Дюамель (2006), “Адаптация zerotrees использование представлений двоичной цифры со знаком для кодирования трехмерного изображения”, Журнал EURASIP на Обработке изображений и Обработке видеоданных, 2007, чтобы появиться в специальном выпуске на Вейвлетах в Кодировании источника, Коммуникациях, и Сетях, бумаге ID 54679.

Мизити, M., И. Мизити, Г. Оппенхейм, J.-M. Poggi (2007), Вейвлеты и их приложения, Ряд DSP ISTE.

Саид А., В.А. Перлмен (1996), “Новое, быстро, и эффективный кодек изображений на основе разделения набора в иерархических деревьях”, Сделка IEEE на Схемах и Системах для Видео Технологии, Издания 6, № 3, стр 243–250.

Шапиро Дж.М. (1993), “Кодирование встроенного изображения с помощью zerotrees коэффициентов вейвлета”, Сигнал Сделки IEEE P Proc., Издание 41, № 12, стр 3445–3462.

Странг, Г.; Т. Нгуен (1996), вейвлеты и наборы фильтров, Wellesley-Кембриджское нажатие.

Уокер Дж.С. (1999), “Основанное на вейвлете Сжатие изображения”, Висконсинский университет, О-Клэр, Висконсин, США, Подраздел книги Нажатия CRC: Преобразуйте и Сжатие данных. Краткая информация о Вейвлетах и Их Научные Приложения.

Смотрите также

| | | |

Представленный в R2008b