3ddyIk snap je vraag niet helemaal.
RedKen je dat? Bij kapotte mpeg (vroeger vaak bij DivX3) of bij sommige codecs als je doorspoelt, dan wordt opeens de Motion Compensation toegepast op een beeld wat niet het bijbehorende keyframe is.
Dan zie je bijvoorbeeld iemand praten terwijl de vorige scène nog in beeld is, waardoor je bijvoorbeeld duidelijk een bewegend gezicht in de muur ziet.
Dat wil ik expres doen. Ik heb de Motion Estimation vectors van de bron en nu wil ik een target afbeelding distorten met die motion vectors. |-)
-offtopic-
Volgens mij krijg ik geen mailtjes bij reacties meer. ?-)
Codeik doe een gok: After Effects??-)
BasHesenHet begint al een beetje te dagen wat je precies wilt bereiken, maar ik betwijfel of het op te lossen is met knoppen klikken in AE.
Zo te horen wil je
1. een codec nabootsen
en 2. een fout die daarbij optreedt nabootsen.
M`n eerste gedachte zouden zijn om je beeld om te zetten naar YUV kleurruimte met lage UV-samples (zou je kunnen bereiken door de UV kanalen te pixelizen). Hierdoor zou het geheel in blokken opgedeeld worden. Dan moet je bepalen wanneer welke blokken worden geupdate. Als ik goed voor ogen heb wat je wil bereiken, zou ik zeggen dat de blokken refreshen (zowel luma als chroma) wanneer het verschil binnen dat blok op het huidige frame en n frames terug (afhankelijk van hoe snel je vooruit gaat) een bepaalde waarde overschrijdt.
En na dit alles het geheel weer terug zetten naar RGB.
de grootste moeilijkheid hier is het woordje "refreshen". Met wat klikken en scripten is alles vrij eenvoudig te bereiken (AE zou ik er niet voor aanbevelen, met een node-based compositer ben je veel beter af in dit geval), maar omdat de uiteindelijke waarde afhankelijk is van de waarde die het blok HAD, wordt het veel ingewikkelder.
ik wens je veel succes 😉
RedJa dat lijkt op wat ik wil. Ik wil alleen geen codec nabootsen, maar wat een goede codec doet komt het meest in de buurt, vandaar de vergelijking. Sterker nog, de formules om motion estimetion vectors te berekenen hebben hun oorsprong in mpeg (met name h.264 maakt hier extensief gebruik van).
Ik wil een afbeelding distorten met motion vectors. De motion vectors heb ik al afgeleid van een andere animatie.
Nu wil ik incrementieel een afbeelding distorten met de motionvetors van elk frame van de andere animatie.
After Effects is leuk speelgoed (ik heb een licentie L-)) maar dat doet echt niet iets waar ze niet een specifieke filter voor hebben geschreven, ik moet zelf een vdeobuffer kunnen beinvloeden op pixelbasis. Volgens mij kan dat niet. Ik zal nog even verder zoeken want op dit gebied heb ik nog niet echt naar AE gekeken omdat ik denk dat ie toch niet kan helpen. :P
Vooralsnog no ball, maar ik probeer nog even verder. 😊
RedHey leuke plugin. Ik kan hem niet gebruiken voor wat ik wil, maar het is duidelijk dat deze plugin intern ook met motion vectors werkt om motionblur neer te zetten.
MrgoodbyteZeker weten? Dit is toch wat je wil: "ability to blur one sequence using the motion from another"? Zie de features tab op diezelfde website.
-Ronald
RedJa..nee.. ehh..
Ten eerste bedankt voor het meedenken 😊 ik heb het wel over motion vectors maar nergens over motion blur. Dat is iets compleet anders dan wat ik wil.
Het zou wat zijn als alle motion estimation vectors in mpeg2 mpeg4 etc. voor motion blur zorgen 😄 dan zou geen video bekijkbaar zijn.
Heb je mijn poging tot uitleg door vergelijking met een codec gelezen?
-edit-
Stel: Filmpje van zwaaiende hand. Zie deze hand als 1 keyframe (video codec, niet 3d) met 100 motion estimation/compensation frames. Vervang de keyframe met een plaatje van een smiley, en je ziet een hand zwaaien alsof de smiley erop geplakt is.
BasHesenAh, volgens mij begrijp ik nu wat je wilt. Ik had eerder het verkeerde effect voor me.
Wat je daar volgens mij voor nodig hebt is niet motion vector data, maar uv data. Als je deze data vanuit een 3d prog wilt halen, zul je 2 gradients (horizontaal en verticaal) moeten camera-mappen op het eerste frame. Maar daarmee ben je nog niet geholpen als je AE gebruikt, omdat die volgens mij geen uvmapping ondersteunt. Wellicht zou je daarvoor blender kunnen gebruiken.
Een andere optie, die wellicht nog ingewikkelder is, is op een of andere manier de integraal van je motionvectors berekenen (dus de waarde op elk frame is de som van alle voorgaande frames) en die in AE in het effect "displacement map" voeren. Hoewel, bij nader inzien twijfel ik of dit zal werken. Je hebt namelijk grote kans dat je waardes niet netjes tussen de 0 en de 1 in komen. Wat inhoudt dat je floats nodig zult hebben om dit te laten werken. En volgens mij laat AE het daar weer afweten.
Als je vector data niet vanuit 3d komt is dit volgens mij wel je enige keus.
RedDie laatste oplossing klinkt alsof het zoiets zal moeten, maar volgens mij is de AE displacement filter te beperkt om zo 'ver' te kunnen displacen.
De eerste oplossing klinkt interessant maar ik snap niet helemaal wat je bedoelt. Hoe helpt uv data me hierbij en wat doen die gradients? Heb je misschien een linkje naar wat uitleg voor mij? Ik ken dat woord alleen van texture mapping maar weet geloof ik niet eens wat het is aangezien ik het niet voor me zie. ?-)
BasHesenIk heb zo direct helaas niet een link voor je. Uv is eigenlijk niks meer of minder dan een coordinatensysteem. Bij traditioneel uv-mapping, vouw je een 3d model uit en koppel je 2d coordinaten aan de polygonen. Dit maakt het mogelijk om er een 2d texture op te plakken. Stel een punt op een model met uv(0.5;0.6), dan zoekt de renderer welke kleur daar opgeplakt moet worden in de texture-file op dat gegeven coordinaat. De waarden liggen dan altijd tussen 0 en 1. Als je dus als texture twee gradients gebruikt, 1 in de U richting en de ander in de V richting, kun je die waarden dus zichtbaar maken en zijn ze ook beschikbaar in de post. Voor het beste resultaat moet je wel naar een zo hoog mogelijke bitdiepte renderen, bij voorkeur 32 floats.
Als je de uvs camera mapped op frame 0 komen de uv coordinaten en de scherm coordinaten dus overeen, maar als ze gaan bewegen veranderen ze zoals jij voor ogen hebt.
Je kunt misschien beter een stap overslaan zelfs. Wanneer je de uvs aan de camera hebt gemapped kun je ook je tweede filmpje er als texture aan plakken...dan ben je meteen klaar en heb je een veel betere kwaliteit.
Het probleem met de displacement map in AE is niet het bereik. Je kunt bijvoorbeeld instellen dat een pixel 100 pixels op moet schuiven. Als er dan in de uv map 0.5 gelezen wordt, schuift de pixel dus 50 op. Maar dit gaat maar in een richting. Als een pixel eerst naar rechts gaat en daarna naar links (negatieve verschuiving) lukt dat niet. De uv map werkt dus als een soort multiplier, maar de waardes kunnen alleen maar tussen de 0 en de 1 zitten.
RedWat interessant en stom dat ik dat niet eens wist. Ik vouw vaak modellen uit om die texture erop te krijgen, maar heb er eigenlijk nooit over nagedacht hoe dat zit. Ik had ook helemaal niet gedacht om zo te werk te gaan maar het klinkt heel geschikt.
Ik zou dus mijn vectors om moeten zetten naar UV data. Nu heb ik wel het probleem dat ik macroblock vectors heb. Het is vrijwel onmogelijk om pixelprecies vectors van een willekeurig filmpje. Dus ik moet de rest interpoleren. Ik denk dat ik hiervoor wel een oplossing kan vinden.
Maar als ik het goed begrijp moet ik ook voor deze manier de integraal van elk frame zien te berekenen. Ik zal even een rondje googlen om te zien of ik hier een oplossing voor kan vinden.
ArnoBbeter laat dan nooit 😄
volgens mij zoek je Furnace van the Foundry.
Furnace is de vector techniek waar ook MPEG op is gebaseerd.
Dit is echter zeker niet heilig en levert in het beste geval zo'n 80% resultaat op.
Als je materiaal zo slecht is dat gewone trackers als niet blijven staan dan geef ik je weinig kans met vectoren maar misschien is 't beter dan niks.
Heb je trouwens met 3D Equalizer geprobeerd te tracken?
Ralf4 jaar geleden kwam deze topic, 2,5 jaar geleden maakte jij je account... en nu geef je hierop je eerste post....
....
hmmmm
....
Ben jij misschien een soort tijdreiziger, Arno? :P
,
,
3ddyArno is Compositor in Nuke en werkt onder andere bij de Film Academie in Amsterdam. Hij is heel druk 😄
RedZo, ik had even nodig voordat ik mijn wachtwoord weer wist!
Misschien is Furnace precies wat ik 4 jaar geleden zocht. :P Maar als ze 20 kilometer text en een paar afbeeldingen die totaal niet aangeven wat deze plugin doet op de productpagina hebben staan, dan wordt ik er niet warm van.
Ik denk trouwens dat motion vector distortion niet iets is waar we een commerciële oplossing voor moeten willen zoeken. De beste detectie zit in open source codecs als X264. Er zijn prachtige plugins voor AviSynth, alleen haast geen documentatie en support. En het opzoeken van de vectors gaat tegenwoordig zo ogenschijnlijk makkelijk, mijn Philips HD TV zet 25 FPS om naar 100 FPS. Dat is tegenwoordig niets nieuws, en het is discutabel of de films er fijner van worden wat het 'filmgevoel' ontbreekt. Maar wat daar in slowmotion gebeurt, 3 frames interpoleren op de motionvector tussen twee frames, gebeurt *blijkbaar* zo makkelijk en ik betrap dat ding nooit op duidelijke foutjes.
Bij belachelijk veel beweging zie je dan weer wel dat hij er even geen 100FPS van kan maken.
Maar goed, ik zoek even niets nu, ben nu even aan het werk in de schoenen van een programmeur. 😊