реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Реализация сжатия изображения на AVR, Возможно ли это?
DmitriyX
сообщение Mar 1 2005, 07:12
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 73
Регистрация: 21-12-04
Пользователь №: 1 581



Вопрос такой:
Нужно хоть как-нибудь сжать черно-белое изображение, которое поступает на микроконтроллер побайтно. Размер изображения 400 х 300 х 8бит (черно-белое).
Потянет ли AVR-микроконтроллер хоть какой-нибудь алгоритм сжатия такого изображения? На какую ориентировочную компрессию можно расчитывать?
И самый главный вопрос: не мог ли бы кто-нибудь поделиться таким алгоритмом или рассказать, где можно найти такой алгоритм за бесплатно? Какие входные данные у этого алгоритма: правильно ли я понимаю, что в микроконтроллере достаточно будет читать изображение побайтно, обходясь ОЗУ в 100-200 байт?

Благодарю за любую информацию
Go to the top of the page
 
+Quote Post
ASN
сообщение Mar 1 2005, 07:37
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 459
Регистрация: 15-07-04
Из: g.Penza
Пользователь №: 326



DmitriyX
А цель какая?
Если реальная разработка, то проще взять промышленный кодек и на заморачиваться с разработкой своего ДКП.
Если же - написать диплом или там диссер какой, то поищите по словам jpg, gif, коды Хаффмана.
AVR потянет ( при наличии достаточного количества ОЗУ). Очень многое зависит от типа (характера) изображения. Просто это неприемлимо долго.
Go to the top of the page
 
+Quote Post
Rok
сообщение Mar 1 2005, 08:10
Сообщение #3


Участник
*

Группа: Свой
Сообщений: 62
Регистрация: 11-01-05
Из: Беларусь, Минск
Пользователь №: 1 894



1-й вопрос - какая тактовая частота входного сигнала?
AVR не знаю потянет или нет. Мы это делаем на FPGA. Но задачка посложней вашей. Схема примерно следующая:
2D-DCT(8x8)->RLE->Huffman. Коэффициент сжатия получается примерно 10 (но на разных изображениях разный коэффициент).
По-поводу памяти: нужен блок памяти на 64 точки (после первого ДКТ). А остальная память это смотря какой алгоритм будет реализован.
Потом Хаффман - это тоже задачка интересная, счас я над ней голову ломаю smile3046.gif .
А вообще можно поискать на www.koders.com, а почитать на www.compression.ru.
Go to the top of the page
 
+Quote Post
DmitriyX
сообщение Mar 1 2005, 12:52
Сообщение #4


Участник
*

Группа: Свой
Сообщений: 73
Регистрация: 21-12-04
Пользователь №: 1 581



Это диплом, совмещенный с реальной разработкой.

По поводу совета взять промышленный кодер: я не смог найти черно-белых промышленных кодеров. А цветные, которые умеют делать JPEG2000 стоят от 30-40$. Дороговато получается.

Размер картинки 300х400х8 бит. Ее контроллер читает в параллельном коде из ПЛИСа. Сколько ориентировочно потребуется времени для сжатия такой картинки на AVR 8МГц?


Цитата(Rok @ Mar 1 2005, 12:10)
1-й вопрос - какая тактовая частота входного сигнала?
AVR не знаю потянет или нет. Мы это делаем на FPGA. Но задачка посложней вашей. Схема примерно следующая:
2D-DCT(8x8)->RLE->Huffman. Коэффициент сжатия получается примерно 10 (но на разных изображениях разный коэффициент).
По-поводу памяти: нужен блок памяти на 64 точки (после первого ДКТ). А остальная память это смотря какой алгоритм будет реализован.
Потом Хаффман - это тоже задачка интересная, счас я над ней голову ломаю  smile3046.gif .
А вообще можно поискать на www.koders.com, а почитать на www.compression.ru.
*


Вы спрашиваете частоту входного сигнала? а правильно я понимаю, что он должен быть в цифровом виде? А в параллельном коде каждый 8-битный пиксель подойдет? Контроллер сам читает картинку из памяти в параллельном коде поэтому жестких требований по скорости обработки нет. Но при этом все-таки, очень бы хотелось, чтобы он успевал сжимать такие кадры с частотой хотя бы 10-15 кадров в секунду.

Цитата
2D-DCT(8x8)->RLE->Huffman

Не могли бы Вы объяснить вкратце каждый из приведеных выше терминов?

А на каком FPGA Вы это делаете? и какая тактовая частота подается на FPGA? Сколько примерно требуется логических ячеек для реализации такого алгоритма?
Go to the top of the page
 
+Quote Post
Rok
сообщение Mar 1 2005, 15:42
Сообщение #5


Участник
*

Группа: Свой
Сообщений: 62
Регистрация: 11-01-05
Из: Беларусь, Минск
Пользователь №: 1 894



Цитата(DmitriyX @ Mar 1 2005, 15:52)
Вы спрашиваете частоту входного сигнала? а правильно я понимаю, что он должен быть в цифровом виде? А в параллельном коде каждый 8-битный пиксель подойдет? Контроллер сам читает картинку из памяти в параллельном коде поэтому жестких требований по скорости обработки нет. Но при этом все-таки, очень бы хотелось, чтобы он успевал сжимать такие кадры с частотой хотя бы 10-15 кадров в секунду.

Вот отсюда и получаем входную частоту 1,8 Мгц. Я так понимаю, что для вас это нормально, т.к. AVR 8 Мгц.

Цитата
2D-DCT(8x8)->RLE->Huffman
Не могли бы Вы объяснить вкратце каждый из приведеных выше терминов?

Объясняю:
2D-DCT(8x8) - двумерное Дискретное Косинусное Преобразование (8 на 8 элементов). Оно делается как два одномерных преобразования (по строкам, а затем по столбцам).
А еще забыл - после этого этапа делаем так называемое ЗигЗаг сканирование. Здесь точно без памяти не обойтись. Т.е. нужно считывать вектор из левого верхнего угла в правый нижний угол матрицы(8x8).
RLE (Run lenght encoding)- так называемое RLE кодирование. Из входного вектора получаем пары типа (количество пропущенных нулей, следующий символ). Почему нулей - потому что после ДКП получаем вектор с множеством нулей (или близким к нему).
Ну а потом Хаффман - за счет его и роизводится собственно сжатие. Здесь мы часто употребляемые символы кодируем малым количеством бит. А редко употребляемые символы кодируем большим количеством бит.
Вот так вот и сжимаем.

Цитата
А на каком FPGA Вы это делаете? и какая тактовая частота подается на FPGA? Сколько примерно требуется логических ячеек для реализации такого алгоритма?

На Spartan-2. Тактовая= 60 Мгц. По-поводу логики ничего не могу сказать, т.к. проект еще не завершен.
Go to the top of the page
 
+Quote Post
pitman
сообщение Mar 3 2005, 04:23
Сообщение #6


Участник
*

Группа: Свой
Сообщений: 70
Регистрация: 3-03-05
Пользователь №: 3 029



http://www.elphel.com/3fhlo/index.html
Сетевая камер, берет изображение с сенсора, жмет его JPEG200 и отдает по сети. Используется матрица Xilinx и проц ETRAX LX100. Сжатие сделано в FPGA на Verilog. Схемы и код доступны на скачку под GNU GPL v.2
Go to the top of the page
 
+Quote Post
Andrey Filippov
сообщение Mar 4 2005, 03:14
Сообщение #7


Участник
*

Группа: Свой
Сообщений: 55
Регистрация: 27-01-05
Из: 40.7019N 112.0811W
Пользователь №: 2 220



Цитата(pitman @ Mar 2 2005, 22:23)
http://www.elphel.com/3fhlo/index.html
Сетевая камер, берет изображение с сенсора, жмет его JPEG200 и отдает по сети. Используется матрица Xilinx и проц ETRAX LX100. Сжатие сделано в FPGA на Verilog. Схемы и код доступны на скачку под GNU GPL v.2
*

Почти правильно, но там все-таки обычный baseline JPEG, а не JPEG2000 (1280х1024 - 22 к/сек, 2048х1536 - 9к/сек). Программно, кстати, на 100МГц Axis ETRAX100LX такой же (1280х1024) кадр несколько секунд сжимался.
Исходникики (ПО и Verilog HDL) есть и внутри каждой камеры (например здесь - http://camera1.elphel.com/index_help.html - это хелп страница реальной камеры), и на CVS Sourceforge http://cvs.sourceforge.net/viewcvs.py/elph...amera/fpga/x3x3

Код (для Spartan-2e 300K), уже два года реально работающий в камерах.

Общее описание есть в несколькох местах, например, здесь:
http://www.xilinx.com/publications/xcellon...xc_freesw46.pdf
Перевод на русский (правда без картинок):
http://www.elphel.com/articles/xc_freesw46_r.html
Описание немного устарело, в отличие от кода (увеличена скорость, качество, добавлены новые функции), но, в основном, соответствует.

И еще - для тех, кто не в курсе. Код распространяется под лицензией GNU/GPL (http://www.gnu.org/licenses/gpl.html). Это, хотя и бесплатно, годится не для всех применений, в частности, вы не можете его использовать в "закрытых" (проприетарных) устройствах.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 20:01
Рейтинг@Mail.ru


Страница сгенерированна за 0.01391 секунд с 7
ELECTRONIX ©2004-2016