- •Задание.
- •Постановка задачи.
- •Теоретические сведения.
- •Б 1.Получение изображения из файла (Jpg/Png) лок-схема реализованного алгоритма.
- •2.Конвертация загруженного изображения в байтовый массив.
- •4.Применение вейвлета(значения квантования задаются фиксированными)
- •5.Перевод многомерного массива в одномерный (плоский)
- •6.Сохранение сжатого изображения, а также сжатие потока Gzip (опционально) и сохранение в raw.
- •Результаты тестирования программы.
- •Лифтинг
Лифтинг
В представленной реализации использовался быстрый лифтинг дискретного биортогонального CDF 9/7 (Cohen-Daubechies-Feauveau wavelet) вейвлета. Это особая форма алгоритма подсчёта коэффицентов. Используемые фиксированные значения в коде (см. листинг ниже) это коэффиценты из значений функций вейвлет-базиса в определённых точках.
else if (Side == WV_TOP_TO_BOTTOM)
{
for (i = 0; i < n; i++)
{
xWavelet[i] = ImgArray[Component, i, dwPos];
}
}
// Predict 1
a = -1.586134342f;
for (i = 1; i < n - 1; i += 2)
{
xWavelet[i] += a * (xWavelet[i - 1] + xWavelet[i + 1]);
}
xWavelet[n - 1] += 2 * a * xWavelet[n - 2];
// Update 1
a = -0.05298011854f;
for (i = 2; i < n; i += 2)
{
xWavelet[i] += a * (xWavelet[i - 1] + xWavelet[i + 1]);
}
xWavelet[0] += 2 * a * xWavelet[1];
На рисунке 9 представлена двухшаговая последовательность быстрого лифтинга:
Рисунок 9. Двухшаговая последовательность лифтинговой схемы.
Основная идея лифтинга :
Если имеется пара фильтров (h,g), и они являются комплиментарными (взаимодополняемыми), что означает их возможную полную реконструкцию, то для каждого фильтра s из пары (h’,g) (где h’(z) = h(z)+s(z2)*g(z) существует также свойство комплиментарности. Действительно же и обратное, т.е. для каждой пары фильтров (h,g’), где g’(z)=g(z)+t(z2)*h(z).
Каждая такая трансформация называется лифтинговым шагом.
Основное свойство : каждая трансформация может быть инвертирована.
Таблица 2. Коэфиценты для лифтинговой схемы 9/7
Вывод.
Реализованный алгоритм является аналогом алгоритма jpeg 2000. Качество и степень сжатия довольно велики:для изображения 512x512 px степень сжатия составила 5.2 без особой визуальной потери качества. Скорость работы алгоритма приемлема для кодирования небольших изображений.