"komische" Idee zur Logoentfernung ;-)

  • Hi,

    Also...

    ich habe hier einen HDTV-Mitschnitt mit buntem MGM-Logo.
    Den selben Film habe ich auch nochmal als normalen DVD-Rip.

    Wie könnte ein Script aussehen, welches den Bereich des Logos im HDTV-Mitschnitt mit dem passenden Ersatz aus dem jeweiligen Frame des DVD-Rips ersetzen würde?

    Machbar wäre doch so etwas, da bin ich mir (fast) sicher. Und das Ergebnis wäre auf alle Fälle besser als der IST-Zustand. Eventuell könnte man ja den Übergang noch irgendwie filtern.

    Jedenfalls bin ich für die Umsetzung solcher komplexen Dinge zu doof :D
    Aber so als Anregung?

  • Zitat

    Jedenfalls bin ich für die Umsetzung solcher komplexen Dinge zu doof


    sollte nicht so wild sein,..

    Mal davon ausgegangen die sind farblich identisch usw. dann sollte es im Prinzip grob so gehen,...
    1. DVD Version auf die Größe des HDTV Mitschnittes resizen, so dass die beiden Versionen deckungsgleich sind
    2. Die DVD Version so zurechtschneiden, dass nur noch das Logo übrig ist
    3. Mit Overlay den Ausschnitt über den HDTV-Mitschnitt platzieren

    Cu Selur

    Ps.: etwas automatisierter geht es eventuell auch wenn man mit den Inpainting Filter rumspielt,.. aber das ist vermutlich am Ende zu langsam um wirklich brauchbar zu sein

  • Ich mache sowas auch öfter, du musst halt drauf achten das beide Versionen Frame-gleich sind, da SD und HD Versionen manchmal nicht ganz übereinstimmen.
    Ich leg mir dann immer beide Versionen mit Layer nebeneinander und schneide es dann zuecht bis alles stimmt.

  • Ich mache sowas auch öfter, du musst halt drauf achten das beide Versionen Frame-gleich sind, da SD und HD Versionen manchmal nicht ganz übereinstimmen.
    Ich leg mir dann immer beide Versionen mit Layer nebeneinander und schneide es dann zuecht bis alles stimmt.

    Ich denke, die Frames sind an sich gleich, nur am Anfang wird wohl ein Versatz sein, wegen der Aufnahme.
    Poste doch mal bitte ein Beispielscript.

    (dachte ich mir schon, daß sicher schon mal jemand auf diese Idee gekommen ist)

  • Also meine sehen z.B. das etwa so aus:

    Code
    LoadPlugin("M:\dgdecnv2038\DGDecodeNV.dll")
    HD = DGSource("M:\Video\DeLogo\HD.dgi").ConvertToYUY2
    SD = DGSource("M:\Video\DeLogo\SD.dgi", resize_w=1920, resize_h=1080).ConvertToYUY2
    SD = Trim(SD,299,0)
    
    
    Logo = Crop(SD,1700, 8, 176, 82)
    Layer(HD, Logo, "add", 256, 1700, 8)
    ConvertToYV12()
  • tach auch !

    Im Prinzip wie Selur und Ratbert sagt, nur würde ich nur den Bereich des Logos hochskalieren,
    denn das braucht weniger Strom ;)

    Gruss BergH

  • Dann zeig' doch mal den genauen Code dafür. Wenn man das so macht "wie es sich anbietet", dann baut man mit ziemlich großer Wahrscheinlichkeit einen Registrationsfehler (subpixel shift) mit ein. :)

    Stromkosten sind da wohl eher zu vernachlässigen ... kann man ausrechnen, bringt etwa 0,017 Cent Ersparnis. :zunge:

  • Guten Abend,

    Habe mich nun mal näher mit meinem Problem beschäftigt und folgendes gebastelt:
    (danke an Ratbert für das Beispielscript! :) )

    Code
    LoadPlugin("D:\Tools\MeGUI\tools\dgindexnv\DGDecodeNV.dll")
    LoadPlugin("D:\Tools\MeGUI\tools\ffms\ffms2.dll")
    HD = DGSource("O:\Temp\Video A (HDTV, x264, AAC).dgi",fieldop=0).crop( 0, 0, 0, -8).ConvertToYUY2
    SD = FFVideoSource("O:\Video B (XviD, DUAL-AC3 2.0 DE-EN).avi").LanczosResize(1920, 1038, 8, 0, 720, 384).AddBorders(0, 21, 0, 21, $000000).AssumeFPS(25,1).ConvertToYUY2
    SD = Trim(SD,228,0)
    
    
    Logo = crop(SD, 1632, 880, -96, -64)
    Layer(HD, Logo, "add", 255, 1654, 882)
    ConvertToYV12()

    Die komische Auflösung und das AddBorders-Gedöns bei SD hat damit zu tun, daß HD und SD-Version nicht 100% das gleiche Aspect Ratio haben und bei der HD-Version außerdem oben und unten ein paar mehr Pixel vorhanden sind.

    Sieht auch soweit ganz gut aus. Nur sind an manchen Stellen die Farben nicht ganz gleich.
    Vielleicht hat da jemand noch eine Idee, was man da tun könnte.

    Die Positionierung stimmt eigentlich: (unten rechts)

    http://www.abload.de/img/screen016n9f.png

    aber an einigen Stellen sieht es dann so aus:

    http://www.abload.de/img/screen04gu0k.png
    http://www.abload.de/img/screen02guib.png

    Muss ich da irgendwas am Gamma schrauben?
    EDIT:
    oder hat es wohl irgendwas mit dem Farbraum zu tun? Tritt ja hauptsächlich bei Rot auf.
    Kenne mich aber da zu wenig aus, um nun zu wissen, WELCHE Schraube da nun gedreht werden muss.

    ...und vielleicht kann man irgendwie noch etwas Schärfe faken?:

    http://www.abload.de/img/screen052ud2.png
    http://www.abload.de/img/screen06luua.png

    3 Mal editiert, zuletzt von c4rD1g4n (3. Juli 2011 um 02:21)

  • Dann probier' das doch mal mit
    Wird bestimmt spitze. :D


    Ja, bunte Logos sind wirklich ein Problem, hab es mit 3sat versucht.
    Bei 3 Sendern mit farblosen Logos sind sie nachher auch nicht ansatzweise zu erkennen.
    Andererseits, das mdr-Logo beseitigt man auch nicht einwandfrei mit Delogo, hier kann man gleich Logoaway nehmen.

  • ...und das wollte mir nun niemand verraten?: ;)

    Code
    ColorMatrix(clip, mode="Rec.601->Rec.709")

    Das fertige Script sieht nun so aus:

    Code
    LoadPlugin("D:\Tools\Ripping\MeGUI\tools\dgindexnv\DGDecodeNV.dll")
    LoadPlugin("D:\Tools\Ripping\MeGUI\tools\ffms\ffms2.dll")
    HD = DGSource("O:\Temp\Cherry 2000 (HDTV, x264, AAC).dgi",fieldop=0).crop( 0, 0, 0, -8).ConvertToYUY2
    SD = FFVideoSource("O:\!Filme (DVD)\Cherry 2000 (XviD, DUAL-AC3 2.0 DE-EN).avi").LanczosResize(1920, 1038, 8, 0, 720, 384).AddBorders(0, 21, 0, 21, $000000).AssumeFPS(25,1).ColorMatrix(mode="Rec.601->Rec.709").sharpen(1.0).ConvertToYUY2
    SD = Trim(SD,228,0)
    
    
    Logo = crop(SD, 1632, 880, -96, -64)
    Layer(HD, Logo, "add", 255, 1654, 882)
    ConvertToYV12()

    Das Ergebnis ist nahezu perfekt.
    Nur an Stellen wie auf dem Screenshot mit der grünen Strickjacke (s.o.) sieht man noch einen minimalen Unterschied, was den Detailgrad betrifft, wenn man sich die Nase am Monitor plattdrückt.

    Ansonsten sieht es nun so aus:

    http://www.abload.de/img/screen02_neu9709.png
    http://www.abload.de/img/screen04_neub7zv.png

    Vorher sah es ja eben so aus:

    http://www.abload.de/img/screen02_xx7iy.png

    Was 3Sat und MDR betrifft, da bin ich Pragmatiker: ich lasse einfach alles so, wie es ist :rolleyes: :D

    2 Mal editiert, zuletzt von c4rD1g4n (7. Juli 2011 um 13:29)

  • Ich habe ein Konzertmitschnitt, der zeitgleich live auf 3sat (Logo links) und rbb ( Logo rechts) übertragen wurde. Beide Sender habe ich aufgezeichnet. Nun möchte ich die rbb-Aufzeichnung verwenden, aber den Logobereich rechts durch einen Ausschnitt der 3sat-Aufzeichnung ersetzen. Wie sieht denn hier das Grundskript aus?

  • Ich habe ein Konzertmitschnitt, der zeitgleich live auf 3sat (Logo links) und rbb ( Logo rechts) übertragen wurde. Beide Sender habe ich aufgezeichnet. Nun möchte ich die rbb-Aufzeichnung verwenden, aber den Logobereich rechts durch einen Ausschnitt der 3sat-Aufzeichnung ersetzen. Wie sieht denn hier das Grundskript aus?

    Das ist ja auch mal eine coole Idee!

    Das Script sollte eigentlich nicht viel anders als meines aussehen (oder die anderen hier geposteten).
    Nur, daß man sich eben noch vieles sparen kann (resize, colormatrix, sharpen).

    Also die zwei sourcen (meinetwegen SD1=, SD2=, oder rbb=, 3sat=)

    und dann

    Logo = crop(rbb, x, x, x, x)
    Layer(3sat, Logo, "add", x, x, x)
    ConvertToYV12()

    Und "Trim", um die Laufzeit anzupassen

    Hoffentlich sind BEIDE Aufnahmen störungsfrei *daumendrück*
    Wenn irgendwo ein Glitch drin ist, passt es dann natürlich ab dieser Stelle nicht mehr :(

    6 Mal editiert, zuletzt von c4rD1g4n (24. August 2011 um 13:00)

  • Nachdem es Probleme mit der Übergabe der Variablen gibt, funktioniert es auch so:

    LoadPlugin("C:\Program Files\megui\tools\dgindexnv\DGDecodeNV.dll")
    Layer(DGSource("D:\Video\Berliner_rbb.dgi",fieldop=0).convertToYUY2, DGSource("D:\Video\Berliner_3sat.dgi",fieldop=0).crop(576, 0, -0, -464).trim(36, 0).convertToYUY2, "add", 255, 576, 0)

    Kurzes Durchnudeln mit VirtualDub des 1. Teils der Aufzeichnung ergibt ein einwandfreies Bild.

Jetzt mitmachen!

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