MPEG-4 weiterentwickelt?

  • Nur mal so zu den mathematischen Kurven, die sich durch einen 3D Block ziehen:
    Die Idee habe ich mal ausführlich mit ein paar Leuten (Mathemathikern &Bildverarbeitern) bequatscht, leider gibt es da einige Probleme:
    1. die einzelnen Formeln werden sehr komplex werden
    - sehr schlecht zu kompremieren oder reduzieren ohne große Verluste
    - der Overhead für eine Darstellung als Formel z.B. Lagrangepolynome ist relativ groß
    2. editieren solcher Formeln bzw. solcher Streams ist wahrscheinlich nicht, oder nur unter extremem Aufwand möglich

    zum Farbraum allgemein:
    Bist Du Dir im klaren, dass nur ein Bruchteil der Farben die man optisch wahrnehmen kann vom PC&Monitor momentan dargestellt werden kann?

    Zitat

    zumal qualitätssteigerung über das original hinaus nur auf diesem wege möglich sind....


    Das wäre selbst bei einer rein Mathematischen Darstellung nur möglich, wenn man einiges mehr an Wissen über Licht- und Farbdarstellungen hätte, als es aktuell der Fall ist.

    Zitat

    wenn das überhaupt nichts bringen würde..


    zumidnest ich würde da einige Probleme sehen, würde das Konzept mit dem 3D Raum aber nicht umbedingt verwerfen, da ich selber schon ausgibit über es früher nachgedacht habe
    Es gibt halt das Hauptproblem, dass man auch weiterdenken muss:
    1. wenn man eine Kurve (z.B. als Polynom oder als Summe von sin&cos funktionen) im 3D Raum hat, welche die Farbwerte eines Pixels zu einem bestimmten Zeitpunkt hat, was dann? wie verkleinern? (verkleinern ist doch das Ziel oder?)
    2. wenn man die Daten verkleinern kann (u.a. auch verlustfrei), kann man sie noch editieren?
    3. ist das Verfahren was man sich überlegt hat auch nicht durch Rechenungenauigkeiten im Rechner oder mangelnde Performance des Rechners z.B. wenn exponenzielles Wachstum des Zeitaufwandes beim Encoden auftritt wenn der Input linear wächst ?
    4. ist der Aufwand zum Decoden geringer als der zum Encoden?

    Zitat

    dann hätte man es ja bei den normalen bewegungsvektoren belassen können statt da noch GMC dazuzufügen....


    Der Punkt mit dem GMC bringt Dich in die Richtung die vorher schon mit HVS angesprochen wurde.

    Zitat

    Es müssen nicht umbedingt neue Features eingeführt werden, erst sollten die vorhanden bis an ihre Grenzen ausgenutzt werden.


    Dem kann ich nur zustimmen, allein wenn ich mir überlege was mit h264 alles noch möglich sein wird. ;)

    Cu Selur

  • ich dachte eher an auf 3d erweiterte bézierkurven die meiner schätzung nach zu 50% der anfallenden daten aus einfachen linien bestehen. editierbarkeit ist auch gegeben
    einfach an der schnittstelle einen knoten anlegen.. die verkleinerung geschieht dadurch das 1.000 werte durch ein paar bézierknoten ersetzt werden..
    aus der beim decoden sei es zoomen oder zeitlupe oder erhöhung der framerate
    10.000 werte generiert werden können... dieser weg erscheint mir auch der beste
    weg um z.b. ntsc frequenz auf pal frequenz zu konvertieren oder mit noch höherer
    qualität zu deinterlacen als es bisher möglich ist...

    meinetwegen kann es auch einzelne normale bézierkurven sein
    jeweils pro gruppe (transparenz, sättigkeit, farbe usw.)

    wenn der input linear ansteigt kann ich mir vorstellen das hier
    evtl sogar der encoderaufwand überproportional ansteigt...
    aber umso mehr daten in sinnvolle gruppen zertrennt werden können
    umso besser können predictionsysteme integriert werden die den aufwand
    noch weiter minimieren als bisherige encoder es auf aktuellem stand machen
    so kann ich mir sogar fraktales encodieren ultrabeschleunigt vorstellen
    indem einfach überflüssige berechnungen wegfallen...
    man braucht nur die intelligenz herauszufinden was überflüssig ist

    ich kann nur immer wieder sagen....

    unabhängigkeit von der auflösung
    analoge systeme und naturen sollten auch analog beschrieben werden
    man kann sie digital erfassen und wieder analog interpretieren

  • Halbwegs exakte Näherungen mit Bézier-Kurven oder Flächen zu machen ist nicht ganz so einfach, da du dafür viele Knoten brauchst, und bei vielen Knoten fängt dein Polynom an zu oszillieren. Grade über 10 sind nicht mehr verwendbar.

    Und der Rechenaufwand für so hochgradige Polynome ist extrem hoch. Wirklich gut quantisieren kannst du auch nicht, da das verändern eines Knotens Einfluss auf die ganze Kurve und vor allem auf eine Stelle hat.

    Die Knoten müsstest du mit hoher genauigkeit ablegen, da sonst deine ganze Kurve verrutscht, was viel Speicherplatz benötigt.

    Bézierkurven sind für sowas nicht wirklich geeignet.

    Anstatt hier dauernd Hypothesen in den Raum zu werfen, die sich zwar schön anhören, aber deutliche Mankos haben, solltest du über deine Ideen nochmal kritisch nachdenken, evtl. Tests anstellen und Rechnungen.

    Es gibt eine Theorie, die besagt, dass das Universum sofort verschwinden und etwas noch Unerklärlicheres und Bizarres an seine Stelle treten wird, sobald jemand herausfindet, wofür es gut ist und warum es existiert.

    Es gibt eine andere Theorie, die besagt, dass das bereits geschehen ist.

  • dieser weg erscheint mir auch der beste
    weg um z.b. ntsc frequenz auf pal frequenz zu konvertieren oder mit noch höherer
    qualität zu deinterlacen als es bisher möglich ist...

    soetwas gibts schon:
    entweder als Motioncompensation (Blackmatching), so wie es Motionperfect macht
    oder als Phase-Corellation. Wobei letztere um laengen besser sein soll, als Motioncompensation.

    http://www.snellwilcox.com/knowledgecente…s/estandard.pdf
    und
    http://www.snellwilcox.com/knowledgecente…oks/emotion.pdf

  • mal ein einfaches beispiel....
    überblenden von einer szene zur anderen... dauer 25frames
    gesetzt mal den fall ausgangsbild und zielbild ändern sich nicht
    (zum einfacherem verständnis)....
    bestünde aus 2 i-frames, 2 bézierkurven im transparenzkanal
    als attribut eines rechteckigen shapes das in diesem idealfall
    das ganze bild umfasst.... das heisst das b-frame ersetzt 23 frames
    und besteht grade mal aus vielleicht 100 oder 200 bytes....
    ich hab mir das mal mit nem encoder durchgezogen....
    im moment verbraucht der encoder für jedes b-frame 6KB
    200bytes (unkomprimiert) gegen 6K*23= 141312bytes

    in diesem idealfall haben wir also eine zusätzliche kompression von 1:1000 erreicht
    wenn nun das GMC nicht nur räumliche sondern auch transparenzen und farben
    beachtet, die objekte (spritecoding) einzeln behandelt werden sind dadurch
    dort auch weitere irrelevaten daten angefallen die eingespart werden können

    sobald bei video endlich mal auch stereo eingeführt wird wird es für den encoder
    auch wesentlich leichter sein in der tiefe zu erkennen....

  • Okay, was ich erst gedacht hatte was du meinst war:


    Sehe ein das dies nicht das ist was Du gemeint hattest.


    Verstehe deine Idee jetzt so:
    --------------------------------

    Du willst nicht eindimensional sondern n-dimensionale Samples, welche einen Bildausschnitt beschreiben.
    Über diese Samples versuchst Du eine Bezierkurvendarstellung zu finden, die die Veränderung von einem Bildausschnitt zum nächsten beschreibt.

    Probleme die ich dabei sehe:
    --------------------------------
    1. Bereiche/Bildausschnitte finden auf denen dies möglich ist
    (denke das Problem ist NP-hart!=> nix polynomiell)
    2. wenn der Bereich 'größer' ist können 'hässliche' Koeffizienten auftreten
    (für kleine Bereiche (Makroblöcke) kann es vermutlich hinhauen)
    3. kleine Änderungen (über die Zeit) könnten verloren gehen und störenden Fehlern führen
    (muss man wahrscheinlich testen, was tolerierbar ist)

    => Wenn Du's Deine Idee mal ordentlich ausformulierst, kann man genauer drüber nachdenken.

    Cu Selur

  • also ich denke eigentlich garnicht mehr an makroblöcke... das ist ja ein typisches problem des DCT... sondern das komplexe strukturen durch komplexe überlagerungen
    einfacher strukturen ersetzt werden die der decoder dank grafikchip rendert
    sollten noch differenzen vorhanden sein kann hier ja noch ein deltaframe hinzugefügt werden was uns das ganze der verlustlosen komprimierung näherbringt

    wenn die bilder einzeln betrachtet werden ist das für den encoder schier unmöglich
    aber bei einer folge von bildern (die offensichtlich zusammengehören) können hier
    synergetische informationen gewonnen werden. noch wesentlich verbessert kann
    ein solcher encoderversuch wenn wir es ENDLICH mal mit Stereofilmen (nicht audiostereo sondern grafisches stereo) zu tun haben...

    bis wir es soweit haben könnte man es aber z.b. bei filmen wie matrix
    (die szene wo neo den kugeln des agenten ausweicht) ausprobieren

    stellen wir uns mal ein standbild vor wo ein scheinwerferkegel
    rumschwirrt und zudem auch noch meinetwegen im regenbogenstil
    durch die farben fadet....250 frames
    das eigentliche bild wird abstrahiert
    der helligkeitsauszug der folgenden frames zeigt uns bis auf die bewegung
    an sich keine änderung... hier kann ein globales bewegungsmuster in form
    von vielleicht 10 splines interpoliert werden... ein delta zum originalen
    bewegungsmuster wird wahrscheinlich nicht nötig
    der HUE-Abzug (bewegung wurde schon abstrahiert) zeigt uns eine wanderung
    durch den farbraum... kann mit vielleicht 3 splines interpoliert werden
    käme eigentlich auf die art und weise an wie man den farbraum definiert
    falls der scheinwerfer nicht solid sondern ein diffuses licht wirft kann ein
    alphakanal für dieses objekt (ellipsenform) erstellt werden dessen s/w-bild
    entweder wieder durch splines beschrieben werden kann oder als 4bittiges
    bild mit wavelets komprimiert werden kann..

    nun kommt der schritt das es kein standbild ist....
    wenn alle genannten lichteffekte oder schattenwürfe
    die einer veränderung unterworfen sind durch diese abtraktionsstufen
    von eigentlichem bild isoliert worden sind haben alle anderen
    kompressionsalgoritmen es wesentlich leichter weitere irrelevanzen
    aufzufinden und kommen dadurch auch zu mehr komprimierbarkeit

  • Die Idee ist gut, aber wie Du vorhandenes, nicht synthetisches Bildmaterial so analysieren willst, dass die vorgeschlagene Idee umgesetzt werden kann sehe ich nicht.

    Zitat

    ... hier kann ein globales bewegungsmuster in form von vielleicht 10 splines interpoliert werden...


    Wie dies im reelen funktionieren soll ist mir unklar, vorallem da in der Computergraphik Licht auch noch nicht ordentlich gehandelt werden kann.

    Zitat

    ..wenn alle genannten lichteffekte oder schattenwürfe
    die einer veränderung unterworfen sind durch diese abtraktionsstufen
    von eigentlichem bild isoliert worden sind...


    Ich sehe nichtmal wie Du die Licht- und Schatteneffekte automatisch, sicher identifizieren willst.

    Cu Selur

    Ps.: Im Prinzip sind wir besser Du jetzt bei ner Spritekompression über die Zeit.

  • Zitat von Selur


    Ps.: Im Prinzip sind wir besser Du jetzt bei ner Spritekompression über die Zeit.

    Noch mal in deutsch? Da spielen der encoder(du) und der decoder(ich und warscheinlich auch ein paar andere) nicht zusammen.

    AC-Chan(Robert Vincenz)

    AC-Sama(Robert Vincenz)
    (werde für das -Chan zu alt :zunge: )

  • nunja... es ist in der tat schwierig sodass man natürlich um überhaupt anzufangen
    mal einfache modelle verwenden müsste...
    ich denke z.b. daran das das GMC intern gesplittet werden muss
    das er die einzelnen kanäle nach bewegungen absucht
    hast du dir mal die DS-Filter von LEAD-Technologies angeschaut..
    da ist auch ein movedetektor drin...
    die umrisse der objekte könnte man mit einem speziellem emboss
    abstrahieren und somit die einzelnen sprites eingrenzen
    die drei kanäle (YUV) auftrennen und von allen eine art index anlegen
    der auch für die predictionsysteme des encoders informant ist
    um sinnvolle vergleichsräume stark einzugrenzen....
    von den objekten werden soetwas ähnliches wie thumbnails angelegt damit die
    suche nach ähnlichkeiten beschleunigt wird... so nach dem motto
    wenn die thumbnails sich nicht ähneln dann die originale sowieso nicht

    ich kann mir vorstellen das in der entwicklungszeit der encoder vielleicht
    interaktiv mit dem betrachter zusammen die szenen in logische gruppierungen
    aufsplittet .. so wie bei OCR-programmen die lernfunktion...

  • Zitat

    hast du dir mal die DS-Filter von LEAD-Technologies angeschaut..


    Nur sehr kurz, da ich momentan kaum Zeit hab.

    Mal davon ausgegangen, dass mit dem extrahieren/finden der interessanten Regionen klappt, dann könnte man u.a. mit den Thumbnails eine Art Laplace-Pyramide über dem Bild verwenden um Ähnlichkeiten abzuwägen.

    Cu Selur

  • also ich denke das wenn die shapes herausgetrennt worden sind von jedem shape
    auszüge gemacht werden (helligkeitsauszug... min/max-ausschlagbereinigt)
    und davon sagen wir mal 5stufige gausspyramiden erstellt werden...
    die dann der shape-Motioncompensation als suchindex dienen
    da die waveletalgorithmen (z.b. J2K) sowieso solche pyramiden einsetzt
    ist das eigentlich ganz praktisch...

    wenn sich nur in einem oder max 2 der z.b. 3 auszüge sich was ändert
    hätten wir schon mal einen sogenannten verdacht und können näher untersuchen...

    nun sagen wir mal das wir anhand einer vorletzten gaussstufe
    einen direkten zusammenhang erkennen können und nu dank SMC
    (ShapeMotionCompensation) die bewegung der "textur" mitverfolgen
    da diese textur durch das raster der auflösung gequetscht wurde
    lässt sich anhand der verbindung der folgebewegungen die unterhalb
    einer pixelbreite/höhe liegen daten der textur interpolieren die zu
    einer z.b. 4*4=16fach höheren auflösung führen....
    man kann das ganze auch umdrehen...
    beim decoden bräuchte man fuer solche minimalen bewegungen
    16fach geringer aufgelöste daten... hauptsache es bewegt sich
    bzw. programmiert einen decoder der die vorhandenen daten
    zu einer besseren qualität verhilft, sodass kompressionsartefakte
    noch weiter in den hintergrund treten... sozusagen nach deblocking
    und deringing noch ein temporaldegaussing wenn man es so nennen kann
    bei sowas wie simpsons (comic) wäre das sogar noch steigerbar...
    interpolierbarkeit auf 4*4*4=64fache auflösung
    aber ich denke mal das der DCT hier viele störfaktoren verursacht
    denkemal das DWT-daten (z.b. rududu) hier eher angebracht wären

  • Zitat

    wenn man von einem datenblock ne gausspyramide erstellt
    und dann für jeden pixel von der pyramidenspitze bis zum originalblock
    eine kurve zu einer virtuell größeren stufe interpolieren könnte
    kann man da nicht was draus machen?

    ich werd mal im videothread die idee präzisieren


    Argh,.. spontan glaub ich nicht, dass man so was erreichen kann, da man erstmal eine Art Muster/Schema entdecken müsste, die einem erlaubt, auch über die Orginalgröße zu kommen ohne 'humbug' ins Bild einzufügen. Der Unterschied zu einem normalen vergrößern des bildes durch Interpolation wäre ja, das Du neu Details über die Kurvenweiterführung erfinden willst, oder? Falls, dies der Fall ist sehe das Problem mit dem Erfinden, da gerade Details sich meiner Erfahrung nach oft nicht irgendwie aus vorherigen (niedriger aufgelösten) Bildelementen erahnen lassen. Klar wenn man weiß was man erstellen will könnte dies bei einigen Elementen hilfreich sein, aber dann sollte man sich überlegen wie man das Element durch ProgrammCode bzw. eine mathematische Formel erstellt. ;)

    Nebenbei: soweit ich mich entsinne ist im Main Profile von mpeg4 auch die kombination von Programmgenerierten 3D Objekten und normalem Videomaterial möglich, soll heißen, man könnte beim Erstellen, direkt einige Elemente als Programmcode einfügen.
    (Mainprofile ist aber leider noch weit davon entfernt mal irgendwo komplett implementiert zu werden.)

    ---

    *gig* da haste deinen Post doche ditiert während ich am tippen war :)

    Zitat

    aber ich denke mal das der DCT hier viele störfaktoren verursacht


    die in h264 verwendete DCT Variante über Integer war glaub ich auch verlustlos,...

    Bei Comics wie Simpsons&Co frage ich mich eh schon eine Weile warum noch niemand mit ner cleveren Idee um die Ecke gekommen ist wie man die z.B. nach Flash portieren könnte. ;) *gig*

    Cu Selur

  • ich hab mal überlegt wie man das verfahren sonst noch nennen könnte

    anti-anti-aliasing

    bei einem einzelnen bild führt das wirklich zu erfundenen neudaten
    aber bei bildfolgen ist die sache völlig anders!!!!
    man braucht nur daten "sammeln" von deren quantisierung
    über die bilder verteilt sich modulo-reste ergeben

    das wäre eigentlich so etwas ähnliches wie es bei AAC das HE ausmacht
    aus den verlauf der tieferen frequenzen werden höhere abgeleitet

    und ich denke mal mit diesem "suchalgorithmus" wäre es auch möglich
    aus HE-AAC daten höhere qualität (vor allem in den höhen) rauszukriegen

  • Zitat

    bei einem einzelnen bild führt das wirklich zu erfundenen neudaten aber bei bildfolgen ist die sache völlig anders!!!!


    Völlig nicht, aber Du hast recht, wenn man dies logischerweise über einige 'ähnliche' Bilder macht, so könnte man bei einigen Szenarien durchaus auch höher auflösende Versionen schaffen. Momentan vermute ich jedoch, dass solche Szenearien nicht all zu oft auftauchen.

    Das, dass mit den auf tiefen Frequenzen hohe ableiten auch bei Bildern klappen kann bezweifle ich momentan nochmal, denke aber morgen wahrscheinlich nochmal genauer drüber nach. (bin momentan etwas gerädert und kann mich nicht wirklich konzentrieren)

    Cu Selur

  • nur zur hilfe....

    wenn die bewegung bekannt ist
    und man die textur auf diesem weg mitverfolgt
    so erfasst der algoritmus details die nur in einem
    geringem prozentsatz der bildfolgen auftritt
    und überträgt diese auf die gesamte bewegung

    aus 10 ähnlichen texturen
    wo angenommen wird das es eigentlich die selbe ist
    wird eine einzige höher aufgelöste textur konstruiert
    ignoriert man einzelne besonders starke ausschläge
    kann man so sogar noch ein entrauschen draus machen

  • Was mir momentan nur im Kopf rumschwirrt ist u.a. die Gefahr da etwas falsch zu interpretieren,.. z.B. wenn man etwas Misinterpretiert als Information, vorallem Rauschen kann da Probleme machen, gerade wenn man stark vergrößern will und sich bis zu einem gewissen Grad auf Details verlassen muss. (Leider ist es ja nicht so das neuere DVDs bessere Qualität hätten, ich denke z.B. an Minority Report.)

    Cu Selur

  • auf der einen seite bräuchte man dazu einen rauschartdetektor
    auf der anderen seite ein wahrscheinlichkeitsbewertungssystem
    der rauschen und relevante details auseinanderhält...
    man kann noch weitere verbesserungen erhalten
    wenn zur bewegung noch zooms hinzukommen...
    also ich denke mal das mit x,y,z-interpolation man die
    rauschwerte (starke abweichungen von der standardabweichung)
    gut auseinanderhalten kann....
    bleibt eine textur z.b. über min. 3 frames stehen
    kann ein mittelwert errechnet werden der auch zur
    besseren wahrscheinlichkeitsbewertung herangezogen werden kann

    es ist schon schwer alle register zu ziehen und trotzdem noch
    ässer im ärmel zu haben, aber wozu haben wir denn gehirne...

    nur mal eine frage...
    wenn ein pixel gerade berauscht ist....
    und wir menschen ihm dieses recht absprechen wollen
    sollten wir erstmal unterscheiden wodurch er berauscht ist
    und wann er wie lange berauscht ist...

    tritt der rausch nur im helligkeitskanal auf
    oder auch woanders?.....

    vergleicht man die standardabweichungen aller kanäle
    untereinander ist rauschen umsomehr erkennbar...

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!