· Начало · Статистика · WASM.RU · Noir.Ru ·

 WASM Phorum (Оффлайн - 24.11.2003) —› WASM.BOOKS —› Методы сжатия данных.

Посл.отвђт Сообщенiе


Дата: Окт 3, 2003 07:49:33

Д.Ватолин,А.Ратушняк,М.Смирнов,В.Юкин "Методы сжатия данных. Устройство
архиваторов, сжатие изображений и видео" -М.: Диалог-МИФИ, 2002.
ISBN 5-86404-170-x
Замечания к изданию сделаны Аркадием Белоусовым.

- стр.12: "чем сложнее источник, тем сильнее улучшит сжатие оптимальн_ая_
преобразование".

- стр.20: "((unsigned)S[i])&((1<<M)-1);" - здесь два вопроса. Во-первых,
выражение "(1<<M)-1" не совсем честное: в случае, если M равно
максимальному количеству битов в поддерживаемых целочисленных типах, то
здесь будет переполнение, а по станадарту это implementation defined (или
undefined behavior? - не помню). В моей либе для этого есть макрос
maxunsigned(v), который суммирует отдельно старший бит и все младшие биты.
Во-вторых, кастинг (unsigned) (как и скобки вокруг (unsigned)S[i]) здесь
не имеет смысла и не нужен.

- стр.21: "#define R 15 ... // 4 бита под экспоненты, так как 23<=R<24".

- стр.21: "while (S[i] >= 1<<j) j++;" - более серьёзная проблема. В случае,
если в S[i] установлен старший бит и тип S[i] - максимальный, то либо этот
цикл будет бесконечным (в случае модульной арифметики), либо здесь будет
переполнение.

- стр.23: "В каждом из рассмотренных выше четырех вариантов (...,
Variable+Fixed)", в то же время на стр.22 сказано "Последний, четвертый
вариант (Variable+Fixed) ... будет рассмотрен чуть ниже в подразд. про
коды Райса". Кстати, нет ни одной буквы "ё", сплошняком "е".

- стр.23: "отказ от "классической" схемы с диапазонами длиной 2^K и
границами, выровненными по 2^L (K, L - константы схемы)" - о чём речь?
Какие "границы"?

- стр.23: "При сжатии с потерями можно просто ограничивать число битов
мантиссы M: сохранять не более чем M1 бит мантиссы (а остальные (M[i]-M1)
бит - удалять, если M[i]>M1)" - следует ли это понимать так, что нужно
отбрасывать старшие (или младшие) биты мантиссы, если длина мантиссы
(двоичный логарифм числа) больше некоторого числа-длины в битах? Или здесь
имелось в виду что-то ещё?

- стр.24: в заголовке таблицы сказано "дельта-коды", хотя это не
дельта-кода, а gamma(x+1) (как это ясно из объяснения ниже).

- стр.24: "Таким образом, единственный параметр обобщённых gamma(X)-кодов -
число кодов без битов мантиссы. Традиционный gamma-код - это gamma(1)".
Как я понимаю, есть ещё gamma(0)? Кстати, не упомянут очень интересный и
удобный вариант смешанного представления, когда экспонента гаммы
перемешивается с мантиссой, что позволяет при декодировании отказаться от
лишних счётчиков (или вы этого не знали?).

- стр.24: "У обобщённых delta-кодов два параметра" - каких? Предположим, один
из них указывает глубину рекурсии при применении гамма-кодирования, а
второй? "Количество кодов без битов мантиссы" в каждой итерации
гамма-кодирования?

- стр.25-27: не даны _сорсы_ для построения кодов Райса, Голомба,
омега-кодов и кодов Ивэн-Родэ. Нет сравнения этих кодов между собой и с
гамма/дельта-кодами (хотя на стр.24 гамма и дельта-коды сраниваются),
поэтому не понятно их преимущества (например, длины омега-кодов либо
длиннее гамма-кодов, либо дельта-кодов).

- стр.27: правильно ли я понимаю, что gamma(0)==startstep(1,1), а
gamma(1)==startstep(0,1)? За исключением того, что в вашем описании
экспонента в старт-шаг-кодах инвертирована по отношению к гамма-кодам
(кстати, зачем?)?

- стр.27: опять не даны сорсы для построения кодов Фибоначчи и сравнение их
с другим кодами (если не считать описание "сломанности" потока). Правильно
ли я понимаю, что построение кода Фибоначчи похоже на обход всех всех бит,
начиная со старшего (т.е. ищется F(i), такое, что F(i)<=v<F(i+1), затем
операция рекурсивно повторяется для значения v-F(i))? Если да, то можно ли
избежать того, что поиск идёт со старшего числа, а запись - с младшего
(это требует лишней памяти, как и, например, в случае преобразования числа
в строку, где запись идёт со старших цифр, а выделение идёт с младших)?

- стр.29: "Если, например, мы сжимаем поток элементов со значениями:
1,3,4... так называемым методом флагов: 10110010..." - о чём речь? Что за
метод флагов и как была построена бит-строка? Какое отношение это имеет к
кодам Фибоначчи?


Дата: Окт 3, 2003 13:19:55

> - стр.23: "отказ от "классической" схемы с диапазонами длиной 2^K и
> границами, выровненными по 2^L (K, L - константы схемы)" - о чём речь?
> Какие "границы"?

Полагаю имелось в виду задавание размера окна степенью двойки с последующим применением маски & (2^L-1) на указатель. Ну вы все поняли =)


Дата: Окт 6, 2003 10:57:19

Прочитал практически фсю книгу, и почти ничего не понял.
Если вы разобрались то просто гении.


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.076