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

 
 
> Восстановление данных переданных по радиоканалу., Кодирование файла JPEG.
_Leo_
сообщение Apr 22 2010, 14:36
Сообщение #1





Группа: Участник
Сообщений: 5
Регистрация: 23-04-09
Пользователь №: 48 123



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

должна превышать 10% от изначального объёма.
Если чуть подробнее, то полученная картинка обрабатывается (кодируется) микроконтроллером AVR32 AT32UC3 и передаётся по

беспроводному каналу NanoNet. Принимаются данные на ПК, там происходит их декодирование. Язык программирования С.

Так как повторная передача исключена, то кроме корректирующих кодов вариантов вроде нет.
Корректирующие коды выбираются исходя из наиболее вероятного типа ошибок, вот тут пробел - какой тип ошибок более характерен для

NanoNet? У него частота что и у WiFi, но модуляция другая.
Для одиночных ошибок лучше всего подходит классика - код Хемминга. Учитывая 10% ограничение минимально возможный код (63, 57).
Только работа в с файлами происходит побайтно и использование такого кода означает лишние сдвиги, создание массивов и т.д. Как вариант

код (88,80), но он избыточен и лишь чуть более удобен.
Циклические коды БЧХ или Рида-Соломона выглядят более привлекательными и вроде не сложны в реализации. У БЧХ как я понимаю можно

задавать и длину кодируемого блока и количество исправляемых ошибок. Для кода Рида-Соломона в качестве символа можно задать байт.

В общем задача с разными решениями и где оптимальный путь, пока не определил.
С благодарностью приму любой совет.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
_Leo_
сообщение Apr 30 2010, 16:18
Сообщение #2





Группа: Участник
Сообщений: 5
Регистрация: 23-04-09
Пользователь №: 48 123



Приятно видеть живое обсуждение темы.
Я обычно ищу информацию на нескольких форумах и вопросы задаю тоже на нескольких.
И что интересно помогают и дают дельные ответы чаще на "низкоуровневых" форумах, нежели на "высокоуровневых")))


Изображение черно-белое, поступает с камеры 640х480, образца изображения к сожалению нет.
BER увы не известен в даном случае.
А вообще технология NanoNet довольно стойкая к помехам: модуляция NanoNet помехоустойчиваяt, там есть аппаратная реализация
Хемминга (7, 4), причём с перемешиванием, таким образом достигается исправление 2 ошибок на байт, есть и CRC32 (для интересующихся:

wireless-e ru, там есть статьи по данной технологии).
Но вот только при включении аппаратной коррекции информационная скорость падает в соответственно в 2 раза, что неприемлимо.

Тестовый образец изображения приходится создавать самому, конвертировал черно-белый .BMP в трех программах: Paint, ACD See и PhotoShop,

в JPEG.
В двух первых в файле один сегмент, а вот фотошоп напихал туда чего то своего и в файле три сегмента. Ну да это ладно.

Заголовочная информация (определяю так для себя, то что до 0xFFDA) занимает приблизительно 2% от объема файла. С учетом заданного

ограничения избыточности в 10% от объема файла, добавачная информация при кодировании заголовка может превышать объём самого

заголовка в 5 раз, есть простор для фантазии)).
Кодировать весь заголовок я хочу потому что там содержится служебная информация о процессе кодирования-декодирования, таблица

квантования как я понимаю тоже одна и её порча влияет на отображения каждого блока 8х8. Ну и таблица Хаффмана конечно.
А единичные ошибки в данных, как понимаю влияют на блок 8х8.

Задача, поставленная на данный момент - реализация простого (и менее ресурсоёмкого) алгоритма устраняющего одиночные ошибки, раз BER

не известен, тогда защищаем минимально возможный объём информации - байт или даже полбайта.
В соответствующей литературе
(
опять для тех кому будет интересно:
Блейхут Р. Теория и практика кодов, контролирующих ошибки 1986
Золотарёв В.В. Овечкин Г.В. Помехоустойчивое кодирование. 2004
Кларк Дж. Кейн Дж. Кодирование с исправлением ошибок
Питерсон У. Коды, исправляющие ошибки. 1976
Цифровая связь. Теоретические основы и практическое применение (Бернард Скляр)
это и прочие книги есть например на twirpx com
)
указывают, что достаточно просты и эффективны циклические алгоритмы.
Например для полубайта - циклический код Хемминга (7, 4), чтобы избежать дополнительных сдвигов можно реализовать как (8, 4).
На данный момент примерно такие мысли у меня, но открыт для любой корректирующей))) информации.

P.S. С полубайтом все более менее ясно, а вот если надо кодировать ровно байт?
В оптимальных циклических кодах n и k нечетные.
То есть надо спроектироват код (16, 8) или другой (n, k) код, где к<n и оба кратны 8.
В Питерсон У. Коды, исправляющие ошибки. 1976, таблица 8.3, есть подобные коды, называются квазициклическими.
Но вот с теорией и примерами их построения не густо. Допустим как определить d (расстояние Хемминга) у (16, 8) или (24, 16), чтобы в свою
очередь определить количество ошибок ими исправляемых.
Go to the top of the page
 
+Quote Post
mdmitry
сообщение Apr 30 2010, 20:02
Сообщение #3


Начинающий профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648



Цитата(_Leo_ @ Apr 30 2010, 20:18) *
BER увы не известен в даном случае.
А вообще технология NanoNet довольно стойкая к помехам: модуляция NanoNet помехоустойчиваяt, там есть аппаратная реализация
Хемминга (7, 4), причём с перемешиванием, таким образом достигается исправление 2 ошибок на байт, есть и CRC32 (для интересующихся:

Система работает довольно устойчиво до тех пор, пока приемник не блокируется помехой, даже узкополосной. Попробуйте одновременно передачу Nanonet и вблизи Bluetooth передатчик. laughing.gif


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post



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

 


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


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