Thema: Delphi Spline Linien zeichnen

Einzelnen Beitrag anzeigen

Medium

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

Re: Spline Linien zeichnen

  Alt 11. Mai 2008, 00:47
Zitat von alzaimar:
Hallo Medium, meine Demo verwendet kein Polynom N-1.ten Grades sondern N-1 Polynome 3.ten Grades, da kann nur dann etwas 'überschwingen', wenn die Punkte auseinanderiegen und(!) eine starker Wechsel in der 1.Ableitung zu verzeichnen ist (z.B. erst geradeaus, dann steil nach oben). Wenn man innerhalb des Wechsels zu wenig Punkte hat, holt der Spline quasi von unten Schwung...
Ah okay, dann ist es genau kubische Interpolation. Gerne genommen, weil schnell und einfach, und nur in wenigen o.g. Ausnahmefällen zu merkbaren "Unschönheiten" führt. Las sich erst so, als würdest du Polynome Nten Grades hernehmen

@bitboy0: In der Musik wird wenn ich mich recht erinnere ganz gerne Hermite-Interpolation verwendet. Diese nutzt wie auch die kubische Interpolation 4 Punkte: Die 2 Punkte zwischen denen interpoliert werden soll, und den Punkt davor bzw. danach, womit an den Grenzen des zu interpolierenden Intervalls ein (theoretisch) differenzierbarer Durchgang erreicht wird, also per math. Definition "glatt".
Die Extrema bei einem S-förmigen Abschnitt werden hierbei in der Regel relativ flach, da sie im allgemeinen Fall eine bessere Näherung sind, als starkes Schwingen. (Der Verlauf lässt sich bei diesem Verfahren durch 2 Parameter auch noch feineinstellen, jedoch existieren in deinem Fall keine Informationen dazu, ob und wie diese eine bessere Abbildung erzeugen würden. Daher würde kubische Interpolation fast schon reichen - also das, was alzaimar weiter oben geposted hat, bzw. auch in dem von mir oben verlinkten Artikel beschrieben wird.)
Wenn so ein Bereich wie der letzte in deinem Beispiel wegfällt, ist eigentlich schon zu viel Information verloren um das brauchbar anzunähern. Hier kannst du nur noch einen "Flicken" anbieten, der wenigstens rechteckige Verläufe abmildert.

In deinem Fall liegt das eigentliche Problem denke ich woanders als bei der bloßen Interpolation. Nämlich bei der Wahl der zwei äussersten Punkte für die Interpolation. Wenn du z.B. mit einer kleineren Bit-Auflösung aufnimmst, kann es dir schnell passieren, dass durch die Quantisierung die direkten Nachbarpunkte den gleichen Wert haben, wodurch die errechnete Kurve wieder unschön wird. Umgehen kann man das z.B., in dem man nicht die unmittelbaren Nachbarwerte nimmt, sondern welche die ein paar wenige Samples entfernt sind. Das hat nun wieder das Problem, dass selbst durch kaum hörbar leises Rauschen immernoch eine gewisse Unsicherheit besteht, ebenso wie durch extrem hohe Frequenzen. Man kann nun noch einen Mittelwert der je nächsten N Nachrbarn nehmen, wobei dann fast sicher ist, dass der Durchgang an der Grenze einen leichten Knick macht - aber wenigstens dürfte die großbe Richtung nun immer passen.
In wie weit diese Probleme nachher überhaupt relevant sind, hängt sehr stark von der Qualität der Aufnahme ab. Also Auflösung (in der Amplitude), und auch die Rohaufnahme, sowie der bisher auf die Musik angewandten Übertragungswege, Signal-Rausch-Abstände etc. pp. usw. usf.
Bei einer "perfekten" Aufnahme kannst du den letzten Absatz hier ganz vergessen, aber wer hat sowas schon =)
"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