Producttest · Videowisser · PRAKTISCHE GIDS

Ondertiteling, watermerken en reacties uit video verwijderen getest: acht gevallen van bedekt beeld

Een vast logo op een eenvoudige achtergrond is makkelijker dan tekst over een gezicht of stof. We publiceren alle acht gecontroleerde resultaten, ook de gevallen waarin het herstel het beeld nauwelijks verbeterde.

Dit is de daadwerkelijke browserexport van een gecontroleerd ondertitelvoorbeeld. De ondertitels zijn voor het experiment toegevoegd; ze komen niet uit het oorspronkelijke interview. Twee seconden kunnen niet representatief zijn voor willekeurige media of lange video's. Bronbeelden en testnotities

Begin bij het resultaat: de bedekte inhoud bepaalt de moeilijkheid

‘Ondertiteling verwijderen’ heeft niet één vaste moeilijkheidsgraad. Het kan gaan om een vast teken in een hoek op een egale muur, een logo over een gezicht, halfdoorzichtige tekst over stof, scrollende reacties, ondertiteling van twee regels of tekst over een wisselende scène. Het resultaat hangt af van de vraag of de onbedekte achtergrond in andere frames zichtbaar is, hoeveel van het beeld bedekt is, hoe de overlay beweegt en of de oorspronkelijke textuur na het herstel behouden blijft.

We vergeleken gewone Telea-inpainting met de STTN-configuratie die op het moment van testen in het project was geselecteerd. De resultaten verbeterden bij egale achtergronden en een klein aantal bewegende reacties. Bij een lastig watermerk over een gezicht verbeterde de PSNR met slechts 0,87 dB en bleef het herstelde gezicht zichtbaar vervormd. Halfdoorzichtige tekst over stof verbeterde met slechts 1,12 dB. Deze mislukte gevallen blijven in de tabel staan; één mooi resultaat met een hoeklogo is niet representatief voor elk fragment.

Hoe de acht scènes zijn opgebouwd

De gecontroleerde tests gebruiken dezelfde DVIDS-interviewbeelden uit het publieke domein, ingekort tot twee seconden en genormaliseerd naar 640 bij 360 pixels bij 24 fps, oftewel 48 frames. Testers voegden synthetische hoeklogo's, halfdoorzichtige tekst, ondertitels en scrollende reacties toe aan schone frames. Het oorspronkelijke beeld biedt daardoor een exacte referentie voor de bedekte pixels. Het herstelmodel ontvangt de bedekte frames en een masker, niet het schone beeld. De acht gevallen zijn variaties op één bron, geen acht afzonderlijk gefilmde fragmenten of een steekproef van gebruikersuploads.

De belangrijkste meetwaarde is de PSNR binnen het synthetisch bedekte gebied. Hogere waarden betekenen dat pixels dichter bij de bekende schone referentie liggen. De winst is de geselecteerde herstelconfiguratie min de Telea-basiswaarde. Ondertitelgevallen gebruiken STTN met maskers die nauw op de lettervormen aansluiten; de overige gevallen gebruiken STTN. PSNR meet pixelafstand, niet of kijkers een beeld natuurlijk vinden. De hoofdtabel is beoordeeld vóór de uiteindelijke videocodering; de effecten van codering worden apart vermeld.

Alle acht gecontroleerde gevallen

Synthetisch gevalPSNR Telea-basiswaardeGeselecteerde configuratieWinstMaskerdekking van overlay
Vast grafisch logo · egale achtergrond33,87 dB41,94 dB+8,08 dB100%
Vast grafisch logo · over een gezicht11,98 dB12,85 dB+0,87 dB100%
Halfdoorzichtig tekstwatermerk · egale achtergrond36,24 dB43,38 dB+7,15 dB100%
Halfdoorzichtig tekstwatermerk · stoftextuur15,52 dB16,64 dB+1,12 dB100%
Scrollende reacties · één eenvoudige regel16,49 dB33,34 dB+16,85 dB100%
Scrollende reacties · twee regels over een persoon17,44 dB28,15 dB+10,71 dB99,92%
Ingebrande ondertitels · één eenvoudige regel16,44 dB22,29 dB+5,85 dB100%
Ingebrande ondertitels · lastig geval met twee regels17,64 dB22,17 dB+4,53 dB100%

Een hoge PSNR betekent dat de bedekte pixels in deze synthetische voorbeelden dichter bij een schone referentie lagen. Het garandeert geen mooi resultaat. Het geval met het logo over een gezicht had 100% maskerdekking, maar toch zichtbaar beschadigde gezichtsdetails; alle overlaypixels detecteren is niet hetzelfde als ze correct herstellen. De vergelijking hieronder gebruikt openbare beelden met een synthetische ondertitel en een daadwerkelijk herstelresultaat uit de browser.

Het lastige geval met scrollende reacties kreeg ook een optionele test met een verfijnd masker: die scoorde 24,91 dB met 99,60% maskerdekking, tegenover 28,15 dB en 99,92% met het standaardmasker. Die variant is nuttig om de afweging tussen een strakkere begrenzing en pixelgelijkenis te onderzoeken, maar vervangt het standaardresultaat niet in de tabel met acht gevallen. Beide cijfers blijven metingen op één synthetische scène.

Vergelijking van een schoon referentiebeeld, een synthetische ondertitel en het resultaat van de browserreparatie.
Een gecontroleerd ondertitelvoorbeeld van twee seconden. De ondertitel is voor de test toegevoegd; de persoon en locatie komen uit openbare beelden met bronvermelding.
Vergelijking van een schoon referentiebeeld, synthetische scrollende reacties en het resultaat van de browserreparatie.
Bewegende reacties vereisen detectie in elk frame. Deze test met één regel kan worden hersteld; dat toont geen resultaten aan voor dicht opeengepakte reacties over het hele scherm.

Gecomprimeerde exports uit de echte browserworkflow opnieuw gecontroleerd

De belangrijkste benchmark meet de modeluitvoer vóór codering. We exporteerden ook vier testbestanden als MP4 via de lokale browserwerkwijze van QuietTake en maten de gedecodeerde bestanden, zodat het verslag niet alleen op interne modeltensoren berust. Elke uitvoer duurt twee seconden, is 640 bij 360 pixels en bevat 48 frames. Video en audio werden succesvol gedecodeerd en de export behield zijn audiospoor. Deze test gebruikte Chromium WebGPU op een Apple Silicon-apparaat met 16 GiB geheugen, waarbij het model al in de browsercache stond. De modeldownload bij het eerste gebruik, ongeveer 98,5 MB in deze versie, is niet in de tijden opgenomen.

TypePSNR bedekt gebied na coderingMAE bedekt gebied (0–255)MAE buiten gebiedVerstreken tijd in browser
Grafisch logo38,58 dB2,472,3023,4 s
Halfdoorzichtig tekstwatermerk30,25 dB4,612,3023,4 s
Ondertitels van twee regels21,99 dB14,502,3120,4 s
Scrollende reacties24,16 dB5,572,3023,0 s

Een MAE buiten het gebied van ongeveer 2,3 weerspiegelt vooral verschillen door H.264-codering. Het betekent niet dat het herstelmodel het hele frame opnieuw heeft gegenereerd. De algoritmetabel is daarentegen vóór codering op dezelfde synthetische pixels gemeten. De twee tabellen gebruiken verschillende verwerkingsfasen en mogen niet van elkaar worden afgetrokken. De browsertijden gelden voor dit apparaat, voorbeelden van twee seconden en een model dat al in de cache staat; ze zijn geen belofte van realtimeverwerking of een universele snelheid.

Invoer- en uitvoervoorbeelden en bronvermelding staan beschreven in de mediadocumentatie van het experiment. De video hierboven is een in de browser gemaakte MP4; de vergelijkingsbeelden tonen herstelde frames naast schone referenties en synthetische overlays.

Waarom een goede score toch een beschadigd beeld kan opleveren

Een vast logo op een egaal oppervlak is makkelijker omdat nabijgelegen pixels het model aannemelijke context bieden. Wanneer een logo een gezicht bedekt, verschijnen verborgen ogen, neus en huiddetails mogelijk nooit in een ander frame; het model moet ze schatten. Een hogere PSNR op dit kleine voorbeeld herstelt geen echte identiteitsdetails. Presenteer gegenereerde pixels bij nieuws, archieven of bewijsmateriaal niet als historische feiten.

Halfdoorzichtige tekst over kleding is een ander lastig geval. De markering vermengt zich met de kleur van de stof, dus het verwijderen ervan verandert ook de textuur. Een beperkt aantal bewegende reacties kan de achtergrond in andere frames zichtbaar laten worden. Als regels overlappen, een persoon snel beweegt of de achtergrond verandert, kan het herstel fragmenten, sporen of flikkeringen achterlaten. Ondertitels over kleding, bladeren of fijne patronen zijn gevoelig voor de maskerbreedte en lettervorm.

Maskerdekking heeft een beperkte noemer: deze meet hoeveel van een bekende synthetische overlay door het gegenereerde masker werd bedekt. De locatie en vorm zijn hier gecontroleerd. Echte ondertitels voegen contouren, schaduwen, compressieruis en bewegende achtergronden toe. Een dekking van 99,6% betekent niet dat ‘99,6% van de gebruikersvideo's wordt hersteld’. Het is pixeldekking in dit experiment, geen succespercentage van het product.

Zo controleer je je eigen clip

Begin met een kopie en kies een representatief gedeelte van ongeveer twee tot vijf seconden dat de lastige overlay bevat. Neem beweging, een ondertitelwisseling of een scèneovergang op als daar problemen optreden. Een voorbeeld dat alleen het eerste frame toont, is niet genoeg als het probleem aan het einde ontstaat. Controleer of het geselecteerde gebied niet ook gezichten, borden, gewone tekst in de scène of belangrijke objecten bevat; een groter gebied vraagt het model om meer pixels te verzinnen.

Kijk één keer op normale snelheid en inspecteer daarna het herstelde gebied. Pauzeer om textuur en tekstranden te bekijken; speel doorlopend af om resten, spookbeelden, flikkeringen of plotselinge vormveranderingen te zien. Controleer buiten het masker of gezichten, handen, kleding en achtergrond zijn veranderd. Inspecteer de eerste en laatste frames en spring daarna naar willekeurige posities in plaats van alleen het door de app gekozen voorbeeldframe te bekijken.

Controleer ook de audio. De gecontroleerde invoer bevat een synthetische testtoon en browserexports behielden een decodeerbaar audiospoor. Dat bevestigt de uitvoerketen in deze test; het garandeert niet dat elke browser of codec elk geluidsspoor behoudt. Speel de daadwerkelijke export af, controleer de duur en lipsynchronisatie en onderzoek een onverwacht stil resultaat in plaats van audiogedrag af te leiden uit een gedempt voorbeeld.

Om de algoritmebenchmark te reproduceren, voer je het projectscript met acht gevallen uit met dezelfde invoerbestanden, schone referenties en beoordelingsmaskers. Ruwe resultaten en de lokaal in de browser gemaakte uitvoer worden apart opgeslagen. Vermeld de modelconfiguratie, of de maskers op lettervormen zijn aangescherpt, de resolutie, framesnelheid, strategie voor referentieframes en coderingsfase. Combineer geen PSNR-cijfers uit verschillende fasen. H.264 verandert gedecodeerde pixels, dus MAE na codering is geen vervanging voor de modelvergelijking vóór codering.

De benchmarkscore is geen succespercentage voor gebruikers

PSNR voor het bedekte gebied meet de afwijking van bekende, onbedekte pixels. Dat werkt bij synthetische tests met exacte referenties. Gebruikersvideo’s bevatten zelden een onbedekte kopie van elk bedekt frame, dus dezelfde score kan niet worden berekend voor gewone uploads. Een hogere score betekent dat de pixels in deze testopzet dichter bij de referentie kwamen. Dit garandeert geen natuurlijk ogende beweging of herstel van de werkelijke verborgen scène.

Ook de maskerdekking heeft een eigen noemer: het aandeel bekende overlaypixels dat in een masker is opgenomen. Bij synthetische tests zijn locaties en vormen gecontroleerd, terwijl echte ondertitels ook omlijningen, schaduwen en compressieartefacten bevatten. Maak van een maskerdekking van 99,6% niet de claim dat ‘99,6% van de video’s met succes wordt opgeschoond’. In de praktijk gaat het erom of er tekst achterblijft, of gewone objecten zijn gewist en of het herstelde gebied flikkert tijdens het afspelen.

De exporttijd van een fragment van twee seconden in de browser is geen maat voor realtime verwerkingssnelheid. De volledige taak kan bestaan uit videodecodering, het downloaden van het model of lezen uit de cache, tekstdetectie, herstel, audiocodering en het downloaden van het resultaat. Downloads bij het eerste gebruik staan hier los van. De GPU, het stuurprogramma, de browser, de codec en het beschikbare geheugen hebben allemaal invloed op de snelheid en op het optreden van fouten. Interne hertests moeten zowel uitvoeringen met een lege cache als met een gevulde cache rapporteren en vermelden of er is teruggevallen op een andere rekenprecisie, of frames ontbreken en of er browserfouten zijn opgetreden.

Praktische tips voor makers

  • Klein, vast logo op een egale achtergrond: begin met een kort voorbeeld en controleer de randen ten opzichte van het beeld.
  • Ingebrande ondertitels of enkele reacties: controleer wisselingen van ondertitelregels, bewegingen van het onderwerp en scèneovergangen gedurende het hele interval.
  • Markeringen over een gezicht, stof of een belangrijk object: controleer of het onderliggende detail vervormd is; bewaar het origineel als het gegenereerde detail onaanvaardbaar is.
  • Een apart ondertitelspoor of reacties in de speler: schakel die laag eerst uit of verwijder deze; beeldpixels reconstrueren is onnodig en kan de kwaliteit verminderen.
  • Interviews, nieuws en archieven: bewaar de bron, markeer de herstelde kopie als bewerkt en presenteer een gegenereerde achtergrond niet als de oorspronkelijke opname.

Bekijk in de videowisser een kort voorbeeld van een interval dat het moeilijkste deel bevat. Controleer randen, mensen, beweging en de audiotrack voordat je exporteert. Goede resultaten bij eenvoudige, vaste markeringen voorspellen niet hoe de moeilijke gevallen met gezichten en stoffen in deze test uitpakken.

Methode en beperkingen

Het onderzoek met acht gevallen gebruikt Python en OpenCV voor pixelscores, plus daadwerkelijke lokale browserexports in Chromium. De meetwaarden worden binnen synthetische maskergebieden berekend ten opzichte van onbedekte referentieframes; MAE is de gemiddelde absolute fout per kleurkanaal. De herstelset gebruikt één interviewbron uit het publieke domein als basis, met synthetische overlays. De set omvat niet alle soorten shots, lettertypen, resoluties, staande video, HDR of dicht opeengepakte reacties die over het volledige scherm scrollen.

De browsertest gebruikte Chromium WebGPU op Apple Silicon met 16 GiB geheugen. Succesvolle decodering bewijst dat de bestanden qua structuur leesbaar zijn, niet dat elk frame er vlekkeloos uitziet. De modelbestanden stonden al in de cache; bij het eerste gebruik is een grotere download nodig. Een andere GPU, browser, ander stuurprogramma of andere invoercodec kan de snelheid veranderen of fouten veroorzaken.

Deze tests geven geen schatting van het succespercentage voor willekeurige huidige uploads en garanderen geen herstel van het werkelijke verborgen beeld. Dichte overlays en menselijke details moeten nog steeds worden gecontroleerd. Als gegenereerde scènedetails misleidender zouden zijn dan een zichtbare markering laten staan, bewaar dan de bron of stop het herstel.

VOLGENDE STAP

Ga verder met je media

Terug naar de gidsen voor makers