LINUX.ORG.RU

[СИ] JPEG. Прогрессивное кодирование.


0

1

[СИ] JPEG. Прогрессивное кодирование.

Язык СИ
ОС UNIX

Написал простые декодер, кодер JPEG.
Теперь пытаюсь написать простой прогрессивный JPEG-декодер.
Есть два вида прогрессивного кодирования:
-спектральный (spectral selection);
-битовый (successive approximation).

Спектральный я написал, есть только один пробный файл, работает.
Вот пример:
http://90.156.197.181:8282/primer2.html
http://90.156.197.181:8282/primer3.html

Битовый не получается (вторая ссылка).
У меня есть только два пробных битовых файла, большие.
Берет только первый скан (кодовый блок).
На втором выдает ошибку, а вроде бы должен быть закодирован
так же, как спектральный.
До следующих сканов, которые должны кодироваться по другому,
пока не добрался вовсе, и не могу разобраться теоретически.
Изучаю по этому материалу:
http://www.w3.org/Graphics/JPEG/itu-t81.pdf

Мне нечем закодировать тестовые прогрессивные файлы.
Если у кого есть мощное графическое приложение,
прошу закодировать несколько файлов.
Мне нужны битовые (successive approximation) тестовые файлы.
Пригодятся и spectral selection.
Вот файлы:
http://90.156.197.181:8282/primer1.html
Или с этой просьбой надо в другой раздел?



Ответ на: комментарий от anonymous

Что не так?
FreeBsd 7.2

Прошу закодировать маленькие файлы.
На маленьких сделаю распечатку, и может догадаюсь, в чем ошибка.
А впереди следующие сканы, которые кодируются по другому, и нет
статей где бы было разжевано, как.

Очень бы полезны мленькие.
Мой «Paint» только базовым кодирует.
А должны же быть мощные программы с заданием способа кодирования.

oleg_2 ()
Ответ на: комментарий от Eddy_Em

Я не знаю. Может их там нет.
А если есть, мне быстро не научиться пользоваться.
И откуда-то берутся битовые файлы. Скорее всего не
от этих библиотек. Что-нибудь вроде «Фотошопа», большое.

oleg_2 ()

> Написал простые декодер, кодер JPEG.

фигасе, монументальный труд :) под какой лицензией выложишь?

Harald ★★★★★ ()
Ответ на: комментарий от Harald

Еще не разобрался с битовыми файлами.
В теперешнем виде (недоделанный) декодер очень прост.
Около 40 кб. А в конечном виде, надеюсь уложиться в 60 кб.
Воможности его невелики.
Unix-платформа, sizeof(int)=4, без фильтра, однопотоковый.
Базовый и прогрессивный методы, те, что часто встречаются.
Без наворотов.
Похож на описанный сдесь:
http://keyj.emphy.de/nanojpeg/
Быстрые обратные косинусы прямо из него и взял.
Но этот с фильтром, а прогрессивные не берет.

А в пробной подборке файлов попались прогрессивные,
и сказали их тоже надо.

А вся «наложилка текста» (СИ-функция), вместе с GIF-ом,
надеюсь, в 120 кб уложится.

Про лицензию ничего не знаю. Это для внутренних нужд.

Но файлы-то, может кто сможет закодировать?

Трудно поддается. Вот нашел файл, первая очередь сканов
(6 сканов) проходит, коды берет. Ошибка на 7 скане, но
они второй очереди, кодируются иначе. Я за них еще не
брался. С этими бы хоть разобраться.
Коды берет, а рисунка не получается. Где-то еще что-то
неладно.


oleg_2 ()
Ответ на: комментарий от const86

Для простоты. Целочисленная арифметика.

Я не знаю как в 16 бит уложиться. И наверно никто не
знает. Вот смотрел библиотеку jpeg-8c. Мощная.
Матрицы от 3х3 до 16х16. Не скажу, что я в ней разобрался,
нет. Но подозреваю, что на 16-бит машине переходит
на float.

oleg_2 ()
Ответ на: комментарий от oleg_2

наложилка текста, написал кодер декодер jpeg, читаю спеки, надеюсь в 160 кб уложится. везет людям чо.

trashymichael ★★★ ()
Ответ на: комментарий от anonymous

> у многих уже 64-битные. так что size(int32_t) == 4;

уже 64-битные. так что size(int32_t) == 4;

64-битные. так что size(int32_t) == 4;

64-битные. так что size(int32_t) == 4;

64-битные. size(int32_t) == 4;

64-битные. size(int32_t)

size(int32_t)

int32_t

LamerOk ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.