Laden...

Zur Datenkommression: Aus Summe von Signalen die ursprünglichen Signale berechnen

Erstellt von userid11997 vor 14 Jahren Letzter Beitrag vor 14 Jahren 8.254 Views
Thema geschlossen
U
userid11997 Themenstarter:in
400 Beiträge seit 2008
vor 14 Jahren
Zur Datenkommression: Aus Summe von Signalen die ursprünglichen Signale berechnen

Moin,

es ist ja bekannt , dass man Signale addieren kann und daraus ein neues Signal erhält.
Ist es möglich (wie auch immer) ein Signal , etwa eine Sinuskurve in ihre ursprünglichen Signale zu zerlegen?

Ich wäre um eine Antwort und eventuell ein Beeispiel sehr dankbar.

J
1.114 Beiträge seit 2007
vor 14 Jahren

Wenn du aus 2 + 5 die 7 erhälts, kannst du so natürlich nicht von der 7 ausgehend die 2 und die 5 errechnen. Denn genauso könntest du die 1 + 6, 3 + 4 usw. errechen, dessen Summe auch 7 gibt.

Was du aber vermutlich meinst, ist die Zerlegung der Signale in ihre ursprünglichen Sinus Kurven. Das Ganze nennt sich in der Mathematik "Fourrier Analyse". Sie besagt, dass jede Funktion als Summe von Sinuskurven abgebildet werden kann. Ein Fourrieranalyse ist aber ein schon relativ komplexes Thema. Geeignete Bibliotheken dazu gibt es aber sicherlich.

U
userid11997 Themenstarter:in
400 Beiträge seit 2008
vor 14 Jahren

Funktioniert das nur bei linearen Kurven oder geht das auch mit Kurven , deren Amplituden stätig wechseln?

Wie etwa ein Audio-Signal

49.485 Beiträge seit 2005
vor 14 Jahren

Hallo Pria,

FFT geht nicht nur für Audio-Signale, sondern das ist sogar ein häufiger Anwendungsfall.

herbivore

2.921 Beiträge seit 2005
vor 14 Jahren

Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.

D
201 Beiträge seit 2007
vor 14 Jahren

FFT geht nicht nur für Audio-Signale, sondern das ist sogar ein häufiger Anwendungsfall

Genau.
Viele Audio-Codecs (z.B. OGG-Vorbis, MP3, WMA, ...) nutzen (unter anderem) FFT zur Digitalen Verarbeitung und Komprimierung der Audiosignale...

Was möchtest du enn machen (nur mal so aus Interesse) ?

U
userid11997 Themenstarter:in
400 Beiträge seit 2008
vor 14 Jahren

Was möchtest du enn machen (nur mal so aus Interesse) ?

Einen 4Dimensionalen hochleistungs Kompressionsalgorithmus für Datenmengen ab 1GB

T
381 Beiträge seit 2009
vor 14 Jahren

Das klingt sehr abstrakt, und sehr kompliziert wenn dir eine FFT nichts sagt.
Da würde ich schon eher auf vorhandene Algorithmen zurück greifen. Es gibt viele Effiziente Komprimierungen für viele Anwendungsgebiete.

Dann ist die Frage ob die Komprimierung verlustfrei sein muss. Audio und Bild Komprimierung ist z.B. meist mit Verlusten verbunden, sobald es verlustfrei wird, sinkt auch die Effizienz stark und dürfte irgendwie durch die Entropie begrenzt sein.
Siehe auch: http://de.wikipedia.org/wiki/Entropiekodierung

1.361 Beiträge seit 2007
vor 14 Jahren

Hi,

große 4dimensionale Daten? Das klingt nach MRI-Reihen, also Zeitreihen von volumetrischen medizinischen Bildern. Lieg ich da richtig?

Generell sind aber Fourier-Transformationen für Kompression nicht unbedingt das gelbste vom Ei.
Natürlich weiß ich auch, dass sowohl JPEG als auch MP3 diese nutzen, allerdings ist eine Grundannahme nicht gegeben: Ein periodisches Signal!
Keine Musik wiederholt sich komplett, kein Bild ist periodisch! Es musst stets mit einer gefensterten DFT gearbeitet werden und an den Fenster-Grenzen gibt es Artefakte (siehe JPEG)

Meines Erachtens ist der Hauptvorteil bei der FFT bei JPEG, dass es eine Umverteilung der Werte gibt. Aus vielen gleichverteilten Pixel-Helligkeitswerten werden Koeffizienten der trigonometrischen Funktionen, bei denen nun wenig große und viele kleine auftreten. Das macht mit der anschließenden _Quantisierung _und Lauflängenkodiernung und dem guten Huffman-Code dann den eigentlichen Gewinn !
(vom Farbkanal-Resampling mal abgesehen)

Dass mittels Singulärwertzerlegung, Wavelet-Transformation, ... ähnliche (teilweise sogar bessere) Kompressionsergebnisse erzielt werden, bestätigt meines Erachtens nur diese These: Die genaue Art der Signalzerlegung ist weitesgehend egal - hauptsache, es findet eine Umverteilung der Werte statt: Wenig große (die die Grobstruktur beschreiben) und viele kleine für die Details, die ich dann weglassen kann.

Wie Tarion schon sagt: bei verlustfreier sinkt die Effizienz, und da hilft einem dann auch die FFT (Signalzerlegung allgemein) nicht viel weiter, wenn ich danach nicht neu quantisiere und die zu kleinen Werte (unwichtigen Details) somit nicht verwerfen kann.

beste Grüße
zommi

U
userid11997 Themenstarter:in
400 Beiträge seit 2008
vor 14 Jahren

Die Frage war doch lediglich , wenn ich ein Signal mit den Werten bsp. 1,2,3,4,5,6,7,8 habe , das aus 2 schwingungen besteht , wie kann ich die beiden grundsignale wieder herausfinden?

Hat einer zu dem FFT bzw DFT ein Beispiel für mich?

J
1.114 Beiträge seit 2007
vor 14 Jahren

Wenn du die Werte 1, 2, 3, 4, 5, 6, 7, 8 hast, so ist das ein linearer Verlauf. Und einen linearen verlauf kriegst du nie mit einer Überlagerung von 2 Sinuskurven hin!

Kannst du einfach mal ein Diagramm als Bild anhängen, dann kann man mehr sagen.

Wie bereits gesagt wurde, mach eine fourrieranalyse hauptsächlich dann Sinn, wenn es sich um periodische Signale handelt.

U
userid11997 Themenstarter:in
400 Beiträge seit 2008
vor 14 Jahren

ich habe einen satz von (positiven) werten, diese werte können z.b. die amplitudenwerte eines abgetasteten signals darstellen.

diese werte sind dann etwa 1,2,3...
(die negativen werte kann ich ja hinzudichten)

wie muss ich diese werte auf ein oder mehrere signale aufaddieren , um später wieder genau diese werte zu erhalten (und die der anderen signale)?

J
1.114 Beiträge seit 2007
vor 14 Jahren

Ich muss nochmals nachbohren, da ich immer noch nicht sicher bin, ob die Fourrier Anaylse für dich das richtige ist:
*Ist dein Signal peridisch? *Wenn ja, sind es Überlagerungen von Sinus- und Cosinuskurven

Fourrier kommt nur in Frage, falls es sich um periodische Signale handelt (z.B. Rechtecksignale). Die Analyse läuft über dein gesamtes Spektrum. Du kannst also nicht einfach eine Wert aus deiner Messkurve rauspicksen (z.B. 7), um dann zu bestimmen dass das mal ursprünglich eine 5 und eine 2 war. Du musst schon über dein gesamtes Spektrum messen, um die Fourrieranalyse durchzuführen.

U
userid11997 Themenstarter:in
400 Beiträge seit 2008
vor 14 Jahren

Das signal varriert , ist immer positiv (ohne negative amplitude) und in der Wertefolge äusserst inkonsistent.

Dazu warriert die dauer es Signals (das messfenster) und die länge der zu addierenden Signale ist ebenfalls untrschiedlich.

Darüberhinaus gibt es keine spezifische Frequenz (da dies für meine Zwecke unwichtig ist)

Ich habe zudem nichts davon gesagt , dass ich die fourieranalyse verwende. Ich habe leidiglich nach einer verarbeitungsmethode gerfagt.

J
1.114 Beiträge seit 2007
vor 14 Jahren

Ich habe zudem nichts davon gesagt , dass ich die fourieranalyse verwende. Ich habe leidiglich nach einer verarbeitungsmethode gerfagt.

Hier will jeder nur helfen. Du hast gefragt, und wir haben geantwortet. Wenn keine der Antworte für dich bisher zufriedenstellend war, bedarf es halt einer genaueren Untersuchung. Jedenfalls solltest du nicht davon ausgehen, dass dir hier einer eine Antowrt auf dem Silbertablett serviert. Wir lösen nicht deine Hausaufgaben (ich für meinen Teil jedenfalls nicht).

Und da es sich bei deinen Daten wohl einfach nur um irgendwelche überlagerten Messdaten handelt, dann wirst du Pech haben. Wie schon öfters gesagt, du kannst nicht aus deiner 7 die 2 und 5 wieder zurückrechnen, ohne irgendwelche Regeln zu beachten, die es ja scheinbar nicht gibt, oder die du uns nicht sagst.

U
userid11997 Themenstarter:in
400 Beiträge seit 2008
vor 14 Jahren

Wenn ich hätte meine hausaufgaben von euch gelöst haben wollen , würde ich einfach ein opensourceprojekt nehmen und es als meins in ein neues projekt einbauen und als eigene arbeit ausgeben.

1.361 Beiträge seit 2007
vor 14 Jahren

wie muss ich diese werte auf ein oder mehrere signale aufaddieren , um später wieder genau diese werte zu erhalten

Das klingt für mich nach Modulation

Einen 4Dimensionalen hochleistungs Kompressionsalgorithmus für Datenmengen ab 1GB

Das klingt nach Kompression.

eine Sinuskurve in ihre ursprünglichen Signale [...] zerlegen

Das klingt nach Raten 😉 Solange du nichts über die ursprünglichen Signale sagen kannst.

Wie Jelly schon sagte:

Wie schon öfters gesagt, du kannst nicht aus deiner 7 die 2 und 5 wieder zurückrechnen, ohne irgendwelche Regeln zu beachten, die es ja scheinbar nicht gibt, oder die du uns nicht sagst.

Jede kurve kann ich durch eine beliebige Überlagerung beliebig vieler "Ausgangs-Signale" darstellen.
Solange du nicht die Art der Ausgangs-Signale einschränkst, gibts keinen Weg.
(Einschränkung auf Sin/Cos liefert DFT, ...)
Und wenn, dann evtl. keinen eindeutigen.

Aber du musst etwas über die Beschaffenheit deiner Ausgangssignale aussagen. Nur deren Beschaffenheit / Zusammenhänge kann man eventuell ausnutzen um sie zu rekonstruieren.

beste Grüße
zommi

5.658 Beiträge seit 2006
vor 14 Jahren

Was möchtest du enn machen (nur mal so aus Interesse) ?

Einen 4Dimensionalen hochleistungs Kompressionsalgorithmus für Datenmengen ab 1GB

Warum willst du nicht die Klassen des System.IO.Compression-Namespace verwenden? Ist doch egal, ob die Daten 4dimensional sind oder nicht.

Weeks of programming can save you hours of planning

U
userid11997 Themenstarter:in
400 Beiträge seit 2008
vor 14 Jahren

Jede kurve kann ich durch eine beliebige Überlagerung beliebig vieler "Ausgangs-Signale" darstellen.
Solange du nicht die Art der Ausgangs-Signale einschränkst, gibts keinen Weg.
(Einschränkung auf Sin/Cos liefert DFT, ...)
Und wenn, dann evtl. keinen eindeutigen.

Aber du musst etwas über die Beschaffenheit deiner Ausgangssignale aussagen. Nur deren Beschaffenheit / Zusammenhänge kann man eventuell ausnutzen um sie zu rekonstruieren.

In diesem Dokument , dass ich gefunden habe , ist die DFT beschrieben.

Darunter ist ebenfalls ein Signal (erste abbildung) , dass meinen durcheinandergewürfelten Werten entspricht.

Da Problem daran ist , dass ich nur solche Signale habe.
Mir ist immernochnicht ganz klar , wieich diese zusammenlegen soll , um sie im nachhinein wieder zu trennen.

Was auch möglich wäre, wäre die Werte als Rechteckssignale darzustellen, wenn das hilft.

Edit: Die Signale haben alle die gleiche Abtastfrequenz und die Abtastwerte werden (mit nullen) alle auf die gleiche Länge gestreckt, was ich auch nicht ändern kann.

1.361 Beiträge seit 2007
vor 14 Jahren

Nochmal:

Wenn deine Ausgangssignale alles reine Sinus-Schwingungen mit verschiedenen Phasen sind und diese ein Bösewicht einfach übereinandergelegt (summiert) hat, dann kannst du mit der FourierTransformation wieder die Ausgangs-Sinus-Schwingungen rausberechnen.

Wenn du nur einfach nur irgendwelche beliebige Signale hast, die ein Bösewicht aufaddiert, dann hast du keine Chance, auf die Ausgangssignale zu kommen.

Mir ist immernochnicht ganz klar, wieich diese zusammenlegen soll, um sie im nachhinein wieder zu trennen.

Der gute Fourier sagt: Wenn du Sinus-Schwingungen aufaddierst, kannst du sie mit FT wieder zerlegen.

Aber das hilft dir für deine allgemeinen Signal nicht weiter. Warum willst du sie überhaupt alle zu einem einzigen Signal aufaddieren/zusammenlegen/vermanschen? Wenn du sie im Nachhinein doch wieder trennen willst?
Vielleicht kommen wir dem dann etwas näher?
Nicht alles, was man zusammenhaut, kann man auch wieder trennen - so ist das nunmal.

beste Grüße
zommi

U
userid11997 Themenstarter:in
400 Beiträge seit 2008
vor 14 Jahren

Ich will die Signal zu einem Klumpen zusammenmanschen , dammit ich sie in einem Rutsch über das Netzwerk übertragen kann.


Mal ne andere Frage , glaubt ihr es reichen 10 eindeutige Werte wie etwa die Quersummen der beiden ausgangssignale und der des resultatsignals und noch ein paar andere Werte , um einen Rekonstrucktionsalgorithmus zu realisieren?

Nehmen wir an ich hätte 2 Signale der Länge X wobei X = X1 = X2 und ein aufaddiertes Resultat Xa = X. Ich berechne daraus die Quersumme , die Quersubtraktion und den Differenzwert , sowie die Quersumme von allen 2^N Werten.

Dann habe ich die Werte jeweils für die beiden Ursprungssignale und das Resultat.
Dann wäre ich doch in der Lage mit "Rumprobieren" die beiden Signale aus dem Resultat und den Sicherungswerten wieder zu rekonstruieren oder?

1.361 Beiträge seit 2007
vor 14 Jahren

Pria,

Ich will die Signal zu einem Klumpen zusammenmanschen , dammit ich sie in einem Rutsch über das Netzwerk übertragen kann.

Um weniger Daten übertragen zu müssen, damits schneller geht?

Dann wirst du so oder so irgendwie bei altbekannten Kompressionsverfahren enden.

Du hast deine 2 Signale, die jeweils aus n Stück int32 bestehen (nehm ich jetzt mal an).
Jetzt kannst du da Quersummen berechnen, Differenzen, Produkte und Summen, damit es eindeutig rekonstruierbar ist, aber dann wirst du wohl oder übel am Ende wieder 2*n deiner neu berechneten Werte benötigen, damits eindeutig wird. (Was eben genau so viele sind wie vorher)

Muss es vollständig rekonstruierbar sein? spricht verlustfrei?
Wenn nein, kannst du auf Ähnlichkeiten zwischen den Signalen abstellen. Beispielsweise könnte man dann ein Mittelwert Signal (n Werte) übertragen und ein Differenzensignal - dies aber nur mit geringerer Auflösung, also beispielsweise als short. (was n/2 Werte entspricht)

Kannst du etwas mehr über deine Signale sagen?

beste Grüße
zommi

U
userid11997 Themenstarter:in
400 Beiträge seit 2008
vor 14 Jahren

Ja , der Zeitaufwand spielt auch eine Rolle.

Die Signale sind eben wie vorweg schon beschrieben Positiv,eine Ansammlung von Messwerten. Frequenz ist unbekannt , Wellenlänge ist unbekannt.
Die Messwerte sind immer alle gleich lang (von der anzahl) und werden falls notwendig mit 0en auf die richtige Länge gestreckt.

Es muss aber unbedingt verlustfrei bleiben.

Ich habe mal diesen Algorithmus zum Packen fabriziert.
Er erzeugt auch gleich die Quersumme , sowie die antisymetrische Quersumme (messreihe 1 jeden 2ten wert,messreihe 2 jeden ersten wert), sowie die Quersummendifferenz der beiden Messreihen.
Ausserdem erzeugt er ebenfalls diese Werte von der Differenz von Xerg zu Xmess1 - Xmess2 als 6ten - 9ten Kontrollwert.

div = values1[0] * 2;
            foreach (int i in values1)
            {
                div -= i;
                qs += i;
            }
            int zähler = 0;
            while (div < qs)
            {
                div++;
                zähler++;
            }
            div = zähler;

            for (int i = 0; i < values1.Length; i += 2)
                qs2 += values1[i];

            div_1 = values2[0] * 2;
            foreach (int i in values2)
            {
                div_1 -= i;
                qs_1 += i;
            }
            zähler = 0;
            while (div_1 < qs_1)
            {
                div_1++;
                zähler++;
            }
            div_1 = zähler;

            for (int i = 1; i < values2.Length; i +=2)
                qs2_1 += values2[i];


            values3 = new int[values1.Length];
            for (int i = 0; i < values1.Length; i ++)
                values3[i] = values1[i] + values2[i];

            int[] tmpVals = new int[values1.Length];
            for (int i = 0; i < values1.Length; i++)
            {
                tmpVals[i] = values1[i] - values2[i];
                zähler = 0;
                while (tmpVals[i] < values3[i])
                {
                    tmpVals[i]++;
                    zähler++;
                }
                tmpVals[i] = zähler;
            }

            div_2 = tmpVals[0] * 2;
            foreach (int i in tmpVals)
            {
                div_2 -= i;
                qs_2 += i;
            }
            zähler = 0;
            while (div_2 < qs_2)
            {
                div_2++;
                zähler++;
            }
            div_2 = zähler;

            for (int i = 0; i < tmpVals.Length; i += 2)
                qs2_2 += tmpVals[i];

Ich habe auch schon and er Dekodierung etwas rumgebastelt , habe aber leider das Ergebnis verloren , dass mir immerhin schoneinmal 40% der Messreihen richtig entschlüsselt hatte. (Sprich die Werte glichen den Originalwerten)

Ich hab allerdings grad n echtes Brett vorm Kopf , da ich nicht in der lage bin , die Zahlen der Quersumme richtig hin und her zuschieben , dass dort ein vernünftiges ergebniss rauskommt.
Die 40% waren wohl bloß glück

J
1.114 Beiträge seit 2007
vor 14 Jahren

Du willst einen Batzen an Messdaten möglichst schnell und komprimiert und verlustfrei übertragen?

Warum plagst du dich rum, einen ungetesteten Algorythmus, rein aus dem Bauchgefühl heraus, zu basteln, anstatt auf existierende Kompressionsverfahren zu setzen. Ich nenn nur mal ZIP als Beispiel: ist verlustfrei, und wenn deine Messreihen viele identische Werte enthalten (z.B. deine aufgefüllten Nullen), sollte die Kompressionsrate deutlich höher liegen, als bei deinem erfundenden Algo.

Sorry, ich versteh deine Vorgehensweise echt nicht!

U
userid11997 Themenstarter:in
400 Beiträge seit 2008
vor 14 Jahren

Nemen wir mal an es funktioniert was ich versuche, nehmen wir mal an , dieses Prinzip ließe sich auf Dateien anwenden, nehmen wir mal an wir haben einen Ordner mit 1000 Bildern zu je 1KB.

Inklusieve der Headerdaten würde sich das dann etwa auf 3KB für den gesammten gepackten Ordner belaufen. Macht eine ersprarniss von etwa 90%.

Die Datenmenge wird durch das aufaddieren nicht erhöht , sondern die Speicherbelegung believe sich dann auf die Größe der größten Datei + Headerdaten.

Kann sein , dass ich da noch jede Menge Hinrschmalz reinstecken muss , aber ich glaube , dass es möglich wäre.

R
234 Beiträge seit 2007
vor 14 Jahren

Nemen wir mal an es funktioniert was ich versuche, nehmen wir mal an , dieses Prinzip ließe sich auf Dateien anwenden, nehmen wir mal an wir haben einen Ordner mit 1000 Bildern zu je 1KB.

Zunächst solltest du versuchen besagten Ordner mit bekannten (und bewährten) Kompressionsverfahren zu komprimieren. Vielleicht schafft es ja ein Algo bereits diesen Ordner auf 3KB zu schrumpfen. Einmal die gängigsten Algos auszuprobieren ist mit Sicherheit weniger Aufwand, als "jede Menge Hinrschmalz" reinzustecken.

M
85 Beiträge seit 2009
vor 14 Jahren

etwa eine Sinuskurve in ihre ursprünglichen Signale zu zerlegen?

Eine reine Sinuskurve kannste nicht weiter zerlegen. Du kannst aber aus Sinuskurven jedes Signal formen und jedes Signal in Sinuskurven zurückzerlegen. Aber FFT war ja jetzt auch nicht Thema 😃

5.658 Beiträge seit 2006
vor 14 Jahren

Nemen wir mal an es funktioniert was ich versuche, nehmen wir mal an , dieses Prinzip ließe sich auf Dateien anwenden, nehmen wir mal an wir haben einen Ordner mit 1000 Bildern zu je 1KB.

Inklusieve der Headerdaten würde sich das dann etwa auf 3KB für den gesammten gepackten Ordner belaufen. Macht eine ersprarniss von etwa 90%.

Die Datenmenge wird durch das aufaddieren nicht erhöht , sondern die Speicherbelegung believe sich dann auf die Größe der größten Datei + Headerdaten.

Abgesehen davon, daß es wirklich schwierig ist, deinen Ausführungen zu folgen, lese ich nur Konjunktiv. Normalerweise geht man bei der Suche nach einem geeigneten Algorithmus so vor, daß man ersteinmal schaut, was es bereits gibt und an was zur Zeit geforscht wird. Was deine ursprüngliche Frage betrifft, hast du mehrfach eine eindeutige Antwort erhalten.

Wenn du der Meinung bist, mit "antisymmetrischen Quersummen" die Lösung gefunden zu haben, wären wir alle sicherlich sehr interessiert daran. Aber 40% Erfolgsquote bei einem nicht nachvollziehbaren, "verlorengegangenen" Ansatz ist nichtmal fiftyfifty 😃

Weeks of programming can save you hours of planning

U
userid11997 Themenstarter:in
400 Beiträge seit 2008
vor 14 Jahren

Abgesehen davon, daß es wirklich schwierig ist, deinen Ausführungen zu folgen, lese ich nur Konjunktiv. Normalerweise geht man bei der Suche nach einem geeigneten Algorithmus so vor, daß man ersteinmal schaut, was es bereits gibt und an was zur Zeit geforscht wird. Was deine ursprüngliche Frage betrifft, hast du mehrfach eine eindeutige Antwort erhalten.

Einerseits finde ich es nicht gut zu "Kopieren" , wenn etwas existiert , dann gibt es genug leute , die daran arbeiten , zum anderen habe ich mit den gegebenen Lösungsansätzen nicht wirklich das erreichen können , was ich mir vorgestellt hatte.

Wenn du der Meinung bist, mit "antisymmetrischen Quersummen" die Lösung gefunden zu haben, wären wir alle sicherlich sehr interessiert daran. Aber 40% Erfolgsquote bei einem nicht nachvollziehbaren, "verlorengegangenen" Ansatz ist nichtmal fiftyfifty 🙂

Aus 50-50 lässt sich sicher mit etwas herumprobieren und nachdenken noch 99,99 machen 😁

Ich hab jetzt aber auch keine Lust mehr darüber nachzudenken , 2 Wochen wohlverdienter Urlaub stehen an.

J
1.114 Beiträge seit 2007
vor 14 Jahren

Aus 50-50 lässt sich sicher mit etwas herumprobieren und nachdenken noch 99,99 machen 😄

Es gibt einen feinen Unterschied zwischen rumprobieren und wissentschaftlich belegter Arbeit, einen funktionierenden Komprimierungsalgorythmus zu entwickeln. Die Entwickler von ZIP, RAR und co. haben sicherlich nicht nur rumprobiert, sondern haben solides mathematisches Wissen zu Tage gebracht.

Ich hab jetzt aber auch keine Lust mehr darüber nachzudenken

Schön, dass wir unsere Zeit opfern durften, für ein Problem das es dir jetzt nicht mehr wert ist, drüber nachzudenken.

T
381 Beiträge seit 2009
vor 14 Jahren

Wenn ich das so lesen, ist deine Vorgehensweise nicht sehr wissenschaftlich.

Du sprichst von Kopieren? In der Forschung werden mehrere tausend Euro für 5-10 Seitige Scripts zu bestimmten Themen ausgegeben um daraus einige wenige Informationen zu ziehen die einem mit eigenem tief gehenden Fachwissen helfen können solche vorhaben wie deins zu realisieren.
Sehr viele Leute haben seit vielen Jahren an Algorythmen zum Komprimieren geforscht und erfolge wie gzip gezeigt. Diese Erfolge waren so gut, das sie heute noch viel zum Einsatz kommen.
Du willst von 1000Kb auf 3Kb Reduzieren. Wenn die 1000kb jetzt ne bestimmte Struktur haben, kannst du es schaffen. Aber offensichtlich hast du als EIngang einen Zufallsprozess, da ist das nicht möglich.

Du "Probierst rum", dabei gibt es ein paar ganz einfache Regeln die dir schon viel helfen würden, wie z.B. um an X Variablen zu kommen, brauchst du X Gleichungen, sonst ist das System nicht eindeutig bestimmt. Du hängst irgendwie an deinen Signalen, aber abstrahiere das Problem doch erst mal und gehe dann Mathematisch an das Problem ran.
Du hast es mit stochastischen Prozessen zu tun, wenn du 2 stochastische Prozesse p1 und p2 überlagerst (Gewöhnliche Rechenoperationen) und nicht p1+p2 Werte dabei heraus bekommst, wirst du nie wieder ohne Verlust an die Einzelprozesse kommen.
Du musst die Daten umkosdieren -> Huffman z.B. das ist aber schon keine Überlagerung mehr sondern ein bewährtes Verfahren, welches du gerne mal implementieren solltest. Dabei lernt man viel auch wenn du es aus stolz hinterher nicht verwendest.

Bei irgendwelchen Reihen oder Korrelierten Daten sieht das schon wieder anders aus, aber du hast ja nun mal Zufallswerte.

49.485 Beiträge seit 2005
vor 14 Jahren

Hallo Pria,

beim verlustlosen Komprimieren kann man nur die Redundanz aus den Daten entfernen, aber nicht mehr. Wieviel Redundanz enthalten ist, hängt von dem Inhalt der Bilder selbst und der Ähnlichkeit/Abhängigkeit der Bilder untereinander ab. Darüber schweigst du dich aus. Aber ohne diese Faktoren zu berücksichtigen, ist doch vollkommen illusorisch zu sagen: Ich habe 1000 Bilder, die summiere ich auf und nachher ermittle ich aus des Summe, wieder die Ausgangsbilder. Zumal die 1000 ja nur eine willkürlich gewählte Zahl ist. Du hättest genauso gut 100 oder 10000 schreiben und die gleiche Argumentation anwenden können. Nur dass der Kompressionsfaktor (von der Header-Info mal abgesehen) einmal 1:100 und einmal 1:10000 gewesen wäre. Das alleine zeigt schon, dass da der Wunsch der Vater des Gedankens war.

Natürlich liegt es im Bereich des Möglichen, dass man man bei speziellen Daten durch spezielle Algorithmen eine deutlich bessere Kompression erziehen kann als mit den Standard-Algorithmen. Aber dann musst du dich auch auf die speziellen Eigenschaften deiner Daten konzentrieren und nicht allgemein über irgendwelche Quersummen spekulieren, die es dir ermöglichen, aus der Summe beliebiger Zahlen die Ausgangszahlen zu ermitteln. Das ist nämlich ein Hirngespinst.

Und von deinen Hirngespinsten lass uns bitte in Zukunft unbehelligt ==> geschlossen.

herbivore

Thema geschlossen