AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Pfiffiges Speicherformat für Punktlisten gesucht

Pfiffiges Speicherformat für Punktlisten gesucht

Ein Thema von Medium · begonnen am 24. Aug 2009 · letzter Beitrag vom 24. Aug 2009
Antwort Antwort
Seite 2 von 2     12
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#11

Re: Pfiffiges Speicherformat für Punktlisten gesucht

  Alt 24. Aug 2009, 12:09
Einen Huffi hab ich hier auch noch rumliegen. Sollte ich mal für meine Multimedia Vorlesung basteln. Allerdings vermute ich stark, dass Huffmann und LZW hier ähnlich effizient sind. Sehr stark sogar . Die optimale Kompression soll wohl arithmetische sein, das Problem dabei ist nur dass die Implementierung idR nur heftigst ineffizient ist. Ich plane schon damit nachher 25x pro Sekunde so ein 1000-Pfade-Bild zu lesen, dekomprimieren, zeichnen und anzuzeigen. Bin ich noch weit von weg und ist eher zweitrangiges Ziel, aber arithm. Kompression haut da doch zu sehr in die Kasse.
Wie gesagt: Entropiekodierung setze ich ohnehin als letzten Schritt voraus. Mir geht's jetzt noch darum die "roh"-Listen mit im Zweifel verlustbehafteten Verfahren klein zu kloppen.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.097 Beiträge
 
Delphi 12 Athens
 
#12

Re: Pfiffiges Speicherformat für Punktlisten gesucht

  Alt 24. Aug 2009, 12:26
Zitat von Medium:
Entropiekodierung setze ich ohnehin als letzten Schritt voraus. Mir geht's jetzt noch darum die "roh"-Listen mit im Zweifel verlustbehafteten Verfahren klein zu kloppen.
Vergiß aber nicht, daß dafür auch einige Voraussetzungen nötig sind, um überhaupt noch eine "gute" Komprimierung zu erreichen.
Wenn du pech hast, dann optimierst du die Daten jetzt so gut, daß am Ende alles so schlimm aussieht, daß die Entropiekodierung viel weniger komprimieren kann und dann ganz am Ende sogar wieder mehr Daten rauskommen.
(versuche mal eine komprimierte Datei weiter zu komprimieren ... z.B. JPeg und Zip)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.429 Beiträge
 
Delphi 10.4 Sydney
 
#13

Re: Pfiffiges Speicherformat für Punktlisten gesucht

  Alt 24. Aug 2009, 12:36
Daten "Vorzukomprimieren" und dann erneut durch einen anderen Algo zu komprimieren ist meist nicht effizient.
Sinnvoller ist es die Daten vor dem Komprimieren zu sortieren, daß gleiche Daten hintereinander liegen.

Ich stelle mir das im Prinzip so vor:
Delphi-Quellcode:
TPunkt: record
  x, y: Word;
  dx, dx: Byte;
  Color1, Color2: TColor;
end;

PunktListe: array of TPunkt;

i := Length(PunkteListe);
Stream.Write(i, SizeOf(i));

for i1 := 0 to SizeOf(TPunkt) - 1 do
begin
  for i2 := 0 to High(PunktListe) do
  begin
    p := @(PunktListe[i2]) + i1;
    Stream.Write(p^, 1);
  end;
end;
Selbst wenn jetzt das High-Byte bei allen x/y-Werten Null ist, stehen diese Nullen hintereinander im Stream.
Damit wird selbst simple RLE-Kompression fertig. Man kann die Sortierung auch bis zur Bitebene treiben.
Wenn die Reihenfolge der Punkte egal ist, könnten auch diese sortiert werden.
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#14

Re: Pfiffiges Speicherformat für Punktlisten gesucht

  Alt 24. Aug 2009, 13:12
Zitat von Blup:
Daten "Vorzukomprimieren" und dann erneut durch einen anderen Algo zu komprimieren ist meist nicht effizient.
Stimmt durchaus auch. Es wäre dann im Einzelfall nachher abzuwägen ob sich dieser Schritt überhaupt noch lohnt. Bislang bin ich noch nicht ganz da "von Hand" besser als die gängigen Algos zu komprimieren

Die Sortierung nach Byte-Order ist garnicht mal verkehrt, eben gerade weil doch einiges an 0-Bytes an gleichen Stellen vorkommt. Ähnlich macht's JPEG ja auch - wenn auch in ganz anderem Zusammenhang. Mal schauen wie ich das nun meinen C#-Klassen beibringe =]
Die Punkte selbst sind leider in fester Reihenfolge, da kann ich auf keinen Fall drin rumwurschteln. Aber die Kombi aus o.g. Sortieren nach Punktanzahl, und das Schreiben nach Byte-Order zusammen könnte sowohl von vorne herein etwas sparen als auch die Komprimierbarkeit schön steigern. Ich glaub das ist erstmal ein guter Plan für den Feierabend, joa. Bin gespannt wie weit ich damit runter komme!
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:08 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz