Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Декомпрессировать сжатые изображения на АРМ7
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
InsolentS
Здравствуйте!! У меня к АРМу подключен дисплей 176x132 16bpp, надо переодически выводить на него изображения. Но проблема в том, что каждая картинка занимает 61Кб в исходном виде. Мне бы какой-нибудь готовый алгоритм компрессии/декомпрессии (может быть даже JPEG), чтбы на вход процедурки подавать сжатые данные, а на выходе получать в исходном виде, ну и наоборот. Подскажите плизз..smile.gif help.gif
KRS
Так все зависит от того каие это картинки! Если что то типа фоток то jpeg, а если моного полигонов то что то типа RLE или GIF. Если ограничееное число цветов то плюс к этому палитру сделать.
Да еще лучше всего посмотреть PNG и статьи по этому формату, к нему и библиотеки есть!
v_mirgorodsky
Не стоит рождать полновесный JPEG под ARM, если его нет готового в исходниках или в документированной библиотеке - очень муторное и долгое занятие. А в остальном все сравнительно просто - примеров реализации DKT в нете валом, квантование - просто деление на некие константы, битстрим - для упрощения можно взять похожим на JPEG. Если повезет, то за недели три управитесь.
beer_warrior
А собсно зачем jpeg? Есть достаточное количество незатейливых алгоритмов сжатия без потерь. Да хотя бы и обычная zlib подойдет.
anpilog
Цитата(KRS @ Mar 28 2007, 11:03) *
Так все зависит от того каие это картинки! Если что то типа фоток то jpeg, а если моного полигонов то что то типа RLE или GIF. Если ограничееное число цветов то плюс к этому палитру сделать.
Да еще лучше всего посмотреть PNG и статьи по этому формату, к нему и библиотеки есть!

А можно линк на библиотеку?
InsolentS
Цитата(anpilog @ Mar 28 2007, 15:27) *
А можно линк на библиотеку?

да, подскажите ссылку плизз..
etoja
исходники архиваторов
http://pascal.sources.ru/archives/index2.htm
beer_warrior
http://www.libpng.org/pub/png/pngcode.html
InsolentS
может быть у кого-нибудь всё таки есть готовая процедура для АРМ7? Время разработки очень критично, через две недели сдавать.. help.gif help.gif help.gif поделитесь плиззззззззз
etoja
Вот исходные тексты сравнительно простого компрессора-декомпрессора монохромных изображений:
http://www.cl.cam.ac.uk/~mgk25/jbigkit/
http://www.cl.cam.ac.uk/~mgk25/download/jbigkit-1.6.tar.gz
Wano
Кинь в вижуалке консольное приложение.
Код в архиве,не раскодирит тока прогрессивный метод,что-то я уже второй заход на этот пример делал и так и не смог его под ARM перекарябать,в основном нехватка памяти оперативной. Если есть внешний метр с процом то как нефиг можно. Уж не знаю как там со скоростью будет.
AlexBoy
Попалась вот такая библиотека. Написано что годится для embedded devices, используется только fixed point арифметика.

http://www.voicenet.com/~richgel
InsolentS
Спасибо!!
Wano
Люди кто-нить последнюю библиотеку в вижуале запустил?? Еси не секрет конечно. Чёто так я и не допёр как обрубить поддержку асма.
etoja
Никак. Программа использует MMX команды пентиум-процессора.
AlexBoy
Цитата(etoja @ Apr 2 2007, 15:49) *
Никак. Программа использует MMX команды пентиум-процессора.


поищите в исходниках:
#define SUPPORT_X86ASM
#define SUPPORT_MMX
011119xx
Кто нибудь пользовался библиотекой libpng или LodePNG? Может у кого есть простой пример использования? Может кто поделиться впечатлениями по требуемым ресурсам памяти и быстродействию?
follow_me
Вставлю свои пять копеек - Декодирование jpeg для чайников

хотя libpng наше всё

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


ну и пачкой декодирование GIF
011119xx
follow_me
Огромнейшее спасибо за ссылки... А вообще хочется выводить на экран bmp, png, gif и jpg. Это некий просмотрщик картинок - одна из функций будущего устройства.
011119xx
Начал читать статью про декодирование GIF и остановился на этом месте:
Краткое описание алгоритма:
Читаем очередной код.
В словаре, под номером равным коду, берем список индексов. Это готовые индексы цветов.
В словарь добавляется список индексов, взятый из словаря на предыдущем этапе с добавленным первым индексом взятый из словаря на текущем этапе.

(100) 4. В словаре под номером 4 расположен код clear. Значит инициализируем словарь, текущий размер кода устанавливаем равным 3 (в нашем примере конечно же). В файлах побольше этот код встречаться часто.
(000) 0. В словаре под номером 0 находится {0}, это уже готовый индекс цвета (левого верхнего угла). В словарь ничего не добавляем.
(010) 2. В словаре под номером 2 находится {2}. Добавляем {0}+{2} = {0,2} с номером 6 (далее я буду использовать запись покороче: 2:{2}, +6:{0,2})
(001) 1. В словаре под номером 1 находится {1}. Добавляем {2}+{1} = {2,1} с номером 7 (+7:{2,1})

Словарь достиг предела для 3-х битных кодов. Текущий размер кода увеличиваем на 1.
(0110) 6: {0,2} +8: {1,0}
(1000) 8: {1,0} +9: {0,2,1}
(0001) 1: {1} +10:{1,0,1}
(1010) 10:{1,0,1} +11:{1,1}
(0010) 2: {2} +12:{1,0,1,2}
(0000) 0: {0} +13:{2,0}
(0001) 1: {1} +14:{0,1}
(1101) 13:{2,0} +15:{1,2}


Словарь достиг предела для 4-х битных кодов. Текущий размер кода увеличиваем на 1 (длина кода увеличивается максимум до 12! При достижении словарем размера 4096 длина кода остается равной 12, и добавлять в словарь ничего не нужно. Обычно следом идет код clear)
(00101) 5:{end} конец

Никак не могу понять то, что выделено. Откуда это берется и как, может кто сказать?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.