Форум программистов, компьютерный форум CyberForum.ru

Рекурсия (алгоритм сжатия изображения методом Шеннон-Фано) - C++

Восстановить пароль Регистрация
 
танкист34
-62 / 0 / 0
Регистрация: 15.03.2013
Сообщений: 328
09.04.2013, 12:05     Рекурсия (алгоритм сжатия изображения методом Шеннон-Фано) #1
Мне задали реализовать алгоритм сжатия изображения методом Шеннон-Фано. Доступ к пикселям получил. Подсчитал сколько всего в моём изображение пикселей с определённым значением. Рассчитал вероятность. (+Всё это дело записал в массив структур. Для компоненты r из rgb понадобился всего массив структур с размерностью 8. Сначала хочу закодировать одну компоненту так как задачу нахрапом не решить.+)
Вот моя структура:
C++ (Qt)
1
2
3
4
5
6
struct pixel{
int znach;//значение пикселя оно целое от 0 до 255
float ver;//вероятность появления в файле
bitset<4> bit; //эта вещь для записи кода вида 100 или 01 и т.п.
};
struct pixel list[8];
Массив структур отсортировал в порядке убывания их вероятностей. Это всё проверил робит как надо.
Далее основное:
вот мне надо создать код для каждой структуры. Цикл очень тяжёлый. Первый проход я сделал согласно алгоритму. А далее надо же рассматривать каждую подгруппу, а их уже две. Потом ещё если было разбиение. Простым делением на две группы(без учёта вероятности) код будет равномерным. Смысла нет. Мне надо именно сделать так чтобы всё робило по - настоящему. Надеюсь подскажете как тут быть с рекурсией.
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
float sumver = 0.0;
float delen = 1.0;
int ff1 = 0;//подсчёт итераций записи "1"
int ff2 = 0;//подсчёт итераций записи "0"
 
for(int i = 0; i < 8; i++)
{
    sumver += list[i].ver;
    if((sumver < 0.5)||(i == 0)){//второе условие для того чтобы для первого значения всё равно записалась 1 даже    //если P > 0,5
    list[i].bit = true;
    ff1++;
    }
    else
    {
      list[i].bit = false;
      ff2++;
    }
    ////по окончанию жизни цикла получилось две группы
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.04.2013, 12:05     Рекурсия (алгоритм сжатия изображения методом Шеннон-Фано)
Посмотрите здесь:

Алгоритм сжатия методом Шеннона-Фано C++
C++ перевод из PASCAL в C++ (сжатие методом Шеннона-Фано)
C++ Двоичный вывод (алгоритм Шеннона Фано)
C++ Алгоритм сжатия данных
Шеннон-Фано C++
C++ Алгоритм сжатия аудио !
C++ Алгоритм шеннона фано
Алгоритм сжатия LZ C++
Алгоритм Шеннона-Фано C++
C++ Шеннон-Фано
Шеннон-Фано, зацикливается программа C++
Реализовать алгоритм Шеннона-Фано C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 13:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru