Важная информация

User Tag List

Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 13

Тема: RLE сжатие (покритикуйте)

  1. #1
    Member Аватар для Vladson
    Регистрация
    14.01.2008
    Адрес
    Эстония, Таллинн
    Сообщений
    165
    Благодарностей: 472
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию RLE сжатие (покритикуйте)

    Собственно сжатие картинки и разжатие
    (причём разжатие занимает всего 20 байт)
    Код:
    	ORG	7E00H
    	LD	HL,4000H
    	LD	DE,8000H
    L4	LD	B,00H
    	LD	C,(HL)
    L3	INC	HL
    	LD	A,H
    	CP	5BH
    	JR	Z,L5
    	INC	B
    	LD	A,FFH
    	CP	B
    	JR	Z,L6
    	LD	A,(HL)
    	CP	C
    	JR	Z,L3
    L6	LD	A,B
    	LD	(DE),A
    	INC	DE
    	LD	A,C
    	LD	(DE),A
    	INC	DE
    	JR	L4
    L5	LD	A,0
    	LD	(DE),A
    	RET
    Код:
    	ORG	7F00H
    	LD	HL,8000H
    	LD	DE,4000H
    L2	LD	A,(HL)
    	CP	0
    	RET	Z
    	LD	B,A
    	INC	HL
    	LD	A,(HL)
    	INC	HL
    L1	LD	(DE),A
    	INC	DE
    	DJNZ	L1
    	JR	L2
    Собственно критики хочется, мало ли у кого есть советы...
    Разрабатываю новый сетевой протокол
    Variable Length Advanced Data Sending Over Network
    Что он будет делать и зачем нужен не знаю, разработал пока только название.

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    Moderator Аватар для rajdee
    Регистрация
    15.01.2005
    Адрес
    Novomoskovsk
    Сообщений
    179
    Благодарностей: 51
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Для начала, заменить cp 0 на and a

  4. #3
    Master
    Регистрация
    21.08.2006
    Адрес
    Ижевск
    Сообщений
    600
    Благодарностей: 474
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Будет плохо паковаться при большом количестве неповторяющихся байт.
    Ввести флажок "последовательность из разных/одинаковых байт".

    Пример:
    06 - 7й бит=0 - 6 разных байт
    01
    23
    45
    67
    89
    AB
    85 - 7й бит=1 - 5 одинаковых байт
    CD
    83 - 7й бит=1 - 3 одинаковых байта
    EF
    04 - 7й бит=0 - 4 разных байта
    55
    AA
    33
    CC
    00 - конец

  5. #4
    Vitamin C++ Аватар для Vitamin
    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,031
    Благодарностей: 1426
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    RLE-весьма неэффективная методика. Попробуй хотя бы простейшее словарное сжатие, получишь более существенный эффект.

  6. #5
    Member Аватар для Vladson
    Регистрация
    14.01.2008
    Адрес
    Эстония, Таллинн
    Сообщений
    165
    Благодарностей: 472
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от rajdee Посмотреть сообщение
    Для начала, заменить cp 0 на and a
    Огромное спасибо, важное замечание, это я упустил.

    Цитата Сообщение от DDp Посмотреть сообщение
    Будет плохо паковаться
    Цитата Сообщение от Vitamin Посмотреть сообщение
    RLE-весьма неэффективная методика.
    Собственно RLE был выбран из простоты. Конечно если сначала прогнать MTF потом RLE а потом ещё и Хаффманом закусить то сожмётся лучше, но смысл сжимать картинку из шести килобайт в один если "extractor" будет занимать ещё десять ?
    Разрабатываю новый сетевой протокол
    Variable Length Advanced Data Sending Over Network
    Что он будет делать и зачем нужен не знаю, разработал пока только название.

  7. #6
    Guru Аватар для newart
    Регистрация
    19.01.2005
    Адрес
    Санкт-Петербург
    Сообщений
    10,947
    Благодарностей: 1520
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vladson Посмотреть сообщение
    "extractor" будет занимать ещё десять
    Распаковщик Laser Compact'a занимает несколько сотен байт.

  8. #7
    Moderator Аватар для rajdee
    Регистрация
    15.01.2005
    Адрес
    Novomoskovsk
    Сообщений
    179
    Благодарностей: 51
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Если логика меня не подводит, то компрессор можно переписать так:
    Код:
            ld hl,#4000
    	ld de,#8000
    l4      ld c,1
    l1	ld a,h:cp #58:jr z,l2
    	ld a,(hl):inc hl
    	cp (hl):jr nz,l3
            inc c:jr nz,l1
            dec c
    l3	ex de,hl
            ld (hl),c
            inc hl
            ld (hl),a
    	inc hl
    	ex de,hl
    	jr l4
    l2	xor a:ld (de),a
    	ret
    Довольно давно ничего не писал, поэтому не уверен, что будет работать

    P.S. Такой алгоритм эффективен только для экранов с линейной адресацией, а для спектрумовского нужно учитывать строение экрана.

  9. #8
    Member Аватар для Vladson
    Регистрация
    14.01.2008
    Адрес
    Эстония, Таллинн
    Сообщений
    165
    Благодарностей: 472
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от rajdee Посмотреть сообщение
    Довольно давно ничего не писал, поэтому не уверен, что будет работать
    Код работает как часы.

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

    (На РНР проще, много форумов всегда можно показать код и найти кучу критики и сделать выводы, а на Specy так много не пишут.)
    Последний раз редактировалось Vladson; 12.03.2008 в 03:08.
    Разрабатываю новый сетевой протокол
    Variable Length Advanced Data Sending Over Network
    Что он будет делать и зачем нужен не знаю, разработал пока только название.

  10. #9
    Veteran Аватар для GriV
    Регистрация
    18.02.2005
    Адрес
    Набережные Челны
    Сообщений
    1,574
    Благодарностей: 104
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Для начала почитайте http://zx.pk.ru/showthread.php?t=5335
    Почему именно RLE? В силу простоты только если? Возьмите Huffman или Lempel-Ziff.
    Вообще Lempel-Ziff могут быть очень короткими (как Laser Cpmact) при этом очень эффективными.
    Биты рулят лучше байтов, байты рулят шустрее!
    View, Звук, Цвет

  11. #10
    Member Аватар для Vladson
    Регистрация
    14.01.2008
    Адрес
    Эстония, Таллинн
    Сообщений
    165
    Благодарностей: 472
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от GriV Посмотреть сообщение
    В силу простоты только если?
    Только, так и есть
    Цитата Сообщение от GriV Посмотреть сообщение
    Huffman
    Большой размер кода будет (по сжатию ему равных пожалуй нету)
    Цитата Сообщение от GriV Посмотреть сообщение
    Вообще Lempel-Ziff могут быть очень короткими
    Посмотрю.
    Разрабатываю новый сетевой протокол
    Variable Length Advanced Data Sending Over Network
    Что он будет делать и зачем нужен не знаю, разработал пока только название.

Страница 1 из 2 12 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 25
    Последнее: 09.08.2006, 09:21
  2. Ответов: 18
    Последнее: 18.06.2006, 14:50
  3. порты #x5 покритикуйте :)
    от Ronin в разделе Unsorted
    Ответов: 15
    Последнее: 16.06.2006, 10:32
  4. Архивирование, сжатие, упаковка.
    от GriV в разделе Программирование
    Ответов: 28
    Последнее: 14.03.2005, 23:55

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •