Алгоритмы сжатия изображений


Фрактальный алгоритм - часть 5


Отрицательные стороны предложенных ограничений:

  1. Поскольку все области являются квадратами, невозможно воспользоваться подобием объектов, по форме далеких от квадратов (которые встречаются в реальных изображениях достаточно часто.)

  2. Аналогично мы не сможем воспользоваться подобием объектов в изображении, коэффициент подобия между которыми сильно отличается от 2.

  3. Алгоритм не сможет воспользоваться подобием объектов в изображении, угол между которыми не кратен 900.

Такова плата за скорость компрессии и за простоту упаковки коэффициентов в файл.

Сам алгоритм упаковки сводится к перебору всех доменных блоков и подбору для каждого соответствующего ему рангового блока. Ниже приводится схема этого алгоритма.

for (all range blocks) {


    min_distance = MaximumDistance;


    Rij

= image->CopyBlock(i,j);


    for (all domain blocks) { // С поворотами и отр.


        current=Координаты тек. преобразования;


        D=image->CopyBlock(current);


        current_distance = Rij.L2distance(D);


        if(current_distance < min_distance) {


            // Если коэффициенты best хуже:


            min_distance = current_distance;


            best = current;


        }


    } //Next range


    Save_Coefficients_to_file(best);


} //Next domain

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


- Начало -  - Назад -  - Вперед -