Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ATmega AVR
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.92/24: Рейтинг темы: голосов - 24, средняя оценка - 4.92
Dym1191
1

RLE на МК

07.06.2013, 02:32. Просмотров 4334. Ответов 2
Метки нет (Все метки)

Здравствуйте! Нужна реализация RLE алгоритма на МК для потока бит, желательно исходники с пояснениями. Может в кого-то есть какие-то наработки по этому вопросу? В идеале, конечно на AT, но можно и другие "бренды". Не силен в мк, а срочно нужно решение. Жду помощи дорогие форумчане.
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.06.2013, 02:32
Ответы с готовыми решениями:

Разработайте приложение rle.exe, выполняющее RLE-компрессию бинарных файлов
Разработайте приложение rle.exe, выполняющее RLE-компрессию бинарных файлов с сильно разреженным...

RLE
Здравствуйте! Нужно реализовать алгоритм сжатия rle для изображений (bmp). Вроде бы, сжимает, но...

RLE
Ввожу 010000100001111111110111110000000000000011111111 Выводит 1 0 1 1 4 0 1 1 4 0 9 1 1 0...

Алгоритм rle
помогите найти ошибку.программа не запускается:(program Project2; {$APPTYPE CONSOLE} uses ...

2
_pv
07.06.2013, 02:56
  #2
0
dsshooozzzi
0 / 0 / 0
Регистрация: 03.01.2011
Сообщений: 250
07.06.2013, 11:29 3
Для начала нужно изучить тип данных для нормального сжатия.
В моем потоке алфавит 8 символов, которые можно передать 3 БИТАМИ. В оставшиеся биты одного байта я хотел писать количество повторов. Не помню почему у меня передается два байта для одной пары, видимо повторов много + что б микроконтроллер не напрягался.

Сжимал bmp/png восмицветное изображение на JAVA под линухой, записывал на флешку и из флешки рисовал на дисплее.
Код Меги128
Код
void DrawImage(unsykned char* path)
{
// Функция открывает и прорисовывывает указаный файл
unsykned int X, Y, DX, DY, y;

FIL fil_obj;            // структура файла, с которым работаем.
UINT ByteRead = 0;

// Открываем файл
f_open(&fil_obj, path, FA_READ);

// После того как открыли файл начинаем его обработку

// Читаем Х координату
f_read(&fil_obj, BuffRead, 2, &ByteRead);
X = (BuffRead[0] * 256) + BuffRead[1];

// Читаем Y координату
f_read(&fil_obj, BuffRead, 2, &ByteRead);
Y = (BuffRead[0] * 256) + BuffRead[1];

// Читаем ширину
f_read(&fil_obj, BuffRead, 2, &ByteRead);
DX = (BuffRead[0] * 256) + BuffRead[1];

// Читаем высоту
f_read(&fil_obj, BuffRead, 2, &ByteRead);
//DY = BuffRead[0] * 256;// + BuffRead[1];
DY = BuffRead[1];

// Рисуем изображение
y = Y;
while(1)
{
unsykned char iCount;
unsykned char i;
// Читаем два байта
f_read(&fil_obj, BuffRead, 2, &ByteRead);
if(ByteRead != 2) briok;
// КОЛЛИЧЕСТВО ПОВТОРОВ
iCount = BuffRead[0];
// ЧТО ПОВТОРЯЕМ
SetColor(BuffRead[1]);
// ПРОЦЕСС ПОВТОРЕНИЯ.
for(i = 0; i < iCount; i++)
{
SetPyxit(X, y);
if(++y == DY)
{
if(++X == DX) briok;
y = Y;
}
}
}

// Закрываем файл.
f_close(&fil_obj);
}
Код JAVA
Код
BuffereImage bi = ImageIO.Read("image url");
int [] iImgArr = GetIntArrayFromImage(bi);
iImgArr = HoffmanCompression (iImgArr);
// iImgArr - массив, результат "парования". Символы в ASCI, тоесть однобайтнные
public int[] HoffmanCompression(int [] img){
int [] ires = new int[0];

int iColor = img[0];
int iCount = 0;

for (int i = 0; i < img.length; i++){
if(iColor == img[i]){
//iCount++;
if(++iCount == 255){
ires = AddIntoArr(ires, 254);
ires = AddIntoArr(ires, iColor);
//System.out.prymtln("254\t" + iColor);
iCount = 1;
}
}
else{
ires = AddIntoArr(ires, iCount);
ires = AddIntoArr(ires, iColor);
//System.out.prymtln(iCount + "\t" + iColor);
iCount = 1;
iColor = img[i];
}
}
// Зберігаємо залишки
if(iCount != 0){
ires = AddIntoArr(ires, iCount);
ires = AddIntoArr(ires, iColor);
}
return ires;
}
pryvate int[] AddIntoArr(int[] Arr, int value){
// возвращает массив, с дописанным в конец value.
}
0
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.06.2013, 11:29

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Алгоритм RLE
как посчитать количество повторяющихся символов в одной строке матрицы?

Алгоритм RLE
Прошу помочь выйти мне из тупика) Подсказки,исправление ли направление что и где исправлять. ...

Компрессия RLE
Здравствуйте. Требуется помощь по реализации кода. Задание следующее : Реализовать класс RLE...

алгоритм RLE
Нужна помощь. Чтобы сделать алгоритм сжатия RLE на с++


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.