Fråga:
Har min idé för en tidsinställd teknik använts tidigare?
Karl
2020-03-30 15:13:06 UTC
view on stackexchange narkive permalink

Jag tänkte nyligen på en time-lapse-teknik och vill veta om det finns något namn på den eller om den har använts ofta tidigare.

Jag vill ta en tidsfördröjning i min trädgård kl. 1 bildruta per dag under lång tid, säg ett år (liknar det här inlägget): Gör en tidsfördröjning i min trädgård i 1 år

Uppenbarligen det stora problemet med den här metoden är att det finns många saker som kommer att orsaka flimmer eller skakningar i bilden som olika ljusstyrkenivåer från moln, soluppgång och solnedgångsmönster och vind som blåser träden.

Min idé var att använda en hallon-pi för att ta tusentals bilder per dag, säg en med några sekunders rader och ta bort dem alla på en viss dag förutom en. Den som hålls är den som ligger närmast föregående dags ram.

Jag skrev ett enkelt skript för att välja den bästa ramen för dagen genom att jämföra pixel för pixel och välja ram med den minsta summan av kvadratiska skillnader.

Uppenbarligen måste den första bilden väljas manuellt.

Initialt resultat efter en vecka ser lovande ut, det har kunnat få ramar för varje dag med minimal skillnad mellan varandra.

Jag vill veta om det här är en ny teknik, eller om den har undersökts tidigare och det finns några extra tips eller tips andra människor har upptäckt om just den här metoden.

Redigera: Detta fick mycket mer uppmärksamhet än jag förväntade mig så jag gör en några anteckningar här om saker som ofta tas upp i komenterna.

  • Skuggor : Om det finns starka skuggor i scenen betyder det att bilder måste väljas nästan exakt samma tid varje dag för att undvika ryckiga skuggor orsakade av solen i olika vinklar. Jag upptäckte att jag lätt kan undvika detta genom att välja den första bilden när scenen inte tänds av direkt solljus, till exempel vid gryning eller skymning eller när det finns lätt molntäcke. Det finns i allmänhet några timmar varje dag där det finns tillräckligt med ljus för ett bra foto men inga direkta skuggor, och belysningen är i mitten av nivån så det är ganska lätt att hitta en ram med matchande ljusnivåer nästa dag.
  • Snöfall eller andra föremål som inte finns på scenen så länge . Det är helt klart att bara att jämföra med föregående dags ram i kostnadsfunktionen kan orsaka några ganska stora problem. Så för att motverka detta skulle det definitivt hjälpa till att använda mer än en tidigare ram i kostnadsfunktionen. Vad som inte är klart är exakt hur man gör det, eftersom jag kan tänka på några olika tekniker, men jag kommer att experimentera med några. Dessa kan inkludera att göra kostnadsfunktionen som summan av skillnaden mellan föregående ram och även den första bilden, eller att konstruera en konstgjord ram för dagens kostnadsfunktion med modal eller genomsnittliga pixlar från de senaste 5 dagarna (beloppet är inte säkert).
  • "Ett års tidsfördröjning av de mest likartade ramarna kan se lite tråkigt ut och tråkigt eftersom det knappt skulle bli någon" förändring "i sekvensen" . Naturligtvis kommer algoritmen att försöka dölja förändringar så långt som möjligt, såsom förändringar i ljusstyrka eller förändringar i trädens position när det blåses av vinden, men det finns saker som kommer att förändras i sekvens, som algoritmen inte kan dölja, till exempel växter som växer gradvis över tiden, vilket jag är intresserad av att se.
  • "kom ihåg att 365 bilder ger en mycket kort video med 30 bilder per sekund" : Det är väldigt sant, jag kommer antagligen gå på något som 10fps.

För de som är intresserade av att se resultaten av mitt projekt, tänker jag lägga koden på github och länka den tillbaka hit när jag har ordnat det och åtgärdat några mindre problem. Jag länkar också tillbaka till de genererade videoklippen, men det kan självklart ta lång tid att få dessa resultat.

Svaren här ger mig tillräckligt med idéer för att implementera minst tre olika algoritmer, och jag ska gör att koden placerar utgångarna i olika mappar för att hålla dem helt separata. Det blir intressant att se hur de resulterande videorna skiljer sig åt.

Om du bara har en bild per dag kan du inte ha både soluppgång och solnedgång ... IMHO ett problem med din teknik är att du kan hamna på bilder där skuggorna är i motsatta riktningar och detta kan vara ännu mer problematisktän olika ljusnivåer (som kan utjämnas).
@xenoid: Att ha skuggor i motsatta riktningar medför en kostnad, och med tillräckligt många bilder tagna per dag bör den kostnaden kunna optimeras bort.Med andra ord, det borde vara lätt nog att hitta en bild nästa dag med en skugga i samma riktning, och att ha skuggan i samma riktning kommer att minimera skillnaden, vilket resulterar i att bilden troligen väljs.
Bra ide!Planerar du att göra skriptet tillgängligt?
@kahovius: Ja, men innan jag gör det skulle det vara till stor hjälp att veta om någon annan har gjort något liknande eller inte, därför är frågan!
I så fall kan du begränsa fångstens tidsram till ett par timmar per dag, så att alla dina skuggor garanteras vara ungefär i samma riktning ändå.Men även om jag gör det har jag tarmkänslan att du kommer att få ryckiga skuggor.
@xenoid: Jag har upptäckt att det vanligtvis finns några timmar per dag där det finns tillräckligt med ljus för ett bra foto, men ljuset är inte direkt så det finns inga skuggor.Till exempel när solen är precis under horisonten eller bakom moln.
Hur kommer din algoritm att hantera det första snöfallet?:)
@ pipe: för sådana situationer tror jag att det skulle hjälpa att få kostnadsfunktionen att ta skillnaden från inte bara föregående ram utan också vissa ramar innan det, eventuellt summera skillnaden mellan föregående ram och alltid den första bilden?
Kostnad = diff (ram n, ram n-1) + diff (ram n, ram 0)
@xenoid OP: n kan fixa det genom att begränsa bilder till en fast tidsperiod varje dag, säg mellan 13:00 och 14:00 där skuggans längd och riktning inte ändras för mycket och ljusstyrkan sannolikt kommer att vara bra.Lite grundläggande exponeringskorrigering kommer att sortera alla mindre avvikelser efter det.
@Graham Har redan sagt det i en kommentar (5: e ner)
Som en dev som gillar fotografering tycker jag att ditt projekt är riktigt coolt.Jag vill dock påpeka att ett års tidsfördröjning av de mest likartade ramarna kan se lite tråkigt ut och tråkigt, eftersom det knappt skulle finnas någon "förändring" i sekvensen.Till exempel: vinter → grå och grumlig, sommar → ljus och solig;om din första bild tas på vintern kan din algoritm välja sommarbilder där ljuset inte var lika starkt, kanske de där ett ensamt moln bara råkar tona ner färgerna, så att de matchar vintern.Jag förväntar mig att en timelapse på 1 år kommer att skildra säsongsförändringar bättre än så.
Jag föreslår att du inte tar bort de "oanvända" bilderna.Om dina foton är 10 MB, skulle det totala hårddiskutrymmet för ett foto var 5: e minut under dagsljuset vara 500 GB, vilket är helt hanterbart, och du vet aldrig vilken _riktigt intressant_ sak som kan hända genom att "detta är annorlunda" bild!
Hej, jag kan inte svara på din fråga, men du kanske vill kolla [den videon] (https://www.youtube.com/watch?v=WTGmxCpo89c) av Sam Morrison.Det är en video som består av mer än tusentals bilder från Instagram.Det är "lite" som ditt projekt.
Om du väljer ett foto på morgonen och nästa dag kommer alla bilder från den tiden att bli mörkare på grund av regn, ett foto från eftermiddagen kan vara mycket närmare trots att de har skuggor i annan riktning.Det finns ingen garanti att samma skuggor kommer att väljas.
Jag är inte säker på vad du vill göra med det i slutet men kom ihåg att 365 bilder ger en mycket kort video med 30 bilder per sekund.
Skulle inte eventuellt kasta bort "oacceptabla" (dvs svart / nattliga eller mycket tidigt på morgonen) bilder och sedan ta i genomsnitt några, säg, 100 bilder _ av samma dag_ fungerar bättre?Det borde avskaffa mycket märkbara ljusförändringar och amortera skuggor för det mesta eftersom något antingen är i skugga på morgonen eller på eftermiddagen, vanligtvis inte båda.Det handlar också om rörliga föremål eller människor som går genom scenen och retuscheras bort och med buller.Det skulle också tillåta att snö faller (förutsatt att det inte smälter inom 2-3 timmar) och hanterar positivt med en timmes regn.
@user69960: Problemet med medelvärdet är att det (till exempel) kommer att få ett träd som blåses av vinden att se suddigt ut
Det stämmer, men att välja en enskild ram är inte mycket bättre, det får den att ryckas vildt och det får människor och föremål att dyka in och ut ur existensen.Jag är inte säker på att det verkligen ser bättre ut på det sättet.Se ovanstående länkade video från instagrambilder.Men gör det bara om du inte lider av epilepsi, du vet ... det är ganska störande för friska människor, till och med.
@user69960: Det är därför jag jobbar med den här "mest liknande" algoritmen som syftar till att ha fördelarna med båda.Det bör minimera ryckighet och mängder saker som dyker in och ut så långt som möjligt och inte heller vara suddiga.
Jag har hittills hittat (två veckors foton) att ryckigheten är extremt minimal.Om du tar tusentals bilder per dag hittar du så småningom en där ljus- och vindförhållandena är rätt
Sex svar:
user91253
2020-03-30 15:43:15 UTC
view on stackexchange narkive permalink

Jo, det är en så kallad girig algoritm som i onödan kan leda till återvändsgränder som är dyra att komma ut igen. Om du istället vill minimera den totala förändringen behåller du alla bilder och registrerar för varje bild a) den bästa föregående bilden för en optimal sekvens som kommer hit b) kostnaden för att komma hit via den optimala sekvensen.

Du kan beskära jämförelser genom att notera att alla sekvenser som redan är dyrare än den aktuella optimala kandidaten utan att ens lägga till det senaste avståndet kan tappas utan att göra en egentlig jämförelse. Bilder som hamnar i "döda sekvenser" som aldrig kan vara en del av en optimal sekvens oavsett vad som kommer upp nästa kan beskäras helt. På det sättet är den aktiva uppsättningen bilder som behöver hållas begränsad, men med den nära likheten mellan dina bilder kan det vara "nära tävlingar" under lång tid att hålla många kandidater aktiva.

+1 Detta är perfekt meningsfullt och är ett bra komplement till den teknik som jag inte tänkte på.Utan någon sådan begränsning kan det förekomma en drift över en lång tidsperiod till ett oönskat tillstånd, till exempel drift in i natten.Även om det inte exakt svarar på frågan: är du medveten om att denna teknik har varit känd eller studerad av andra tidigare?
Detta tillvägagångssätt är en bra kandidat för så kallad dynamisk programmering.För att hitta minimidifferensvägen för att komma till dag 10, lägg bara till stegkostnaden till minimikostnadskostnadskostnaden för varje val av dag 9. För att hitta dessa minimidifferensvägar till dag 9, lägg till stegkostnaden till det minsta-skillnad vägar kostar för dag 8, och så vidare.Med N-bilder vid var och en av T-tidpunkterna är detta O (TN ^ 2) snarare än den O (N ^ T) naiva metoden att bygga varje sekvens från grunden.
Ett motsvarande sätt (till @NuclearWang's dynamisk programmeringslösning) att tänka på det är att du bygger en graf över O (TN) noder som innehåller O (TN ^ 2) kanter och sedan hittar den kortaste vägen.Fördelen med att göra det på det här sättet är att du bara behöver beräkna grannarna till noder som faktiskt expanderas under sökningen.
Med andra ord Dijkstra-algoritmen
scottbb
2020-03-30 17:40:02 UTC
view on stackexchange narkive permalink

Det du beskriver liknar det som astrofotografer kallar lycklig avbildning (eller fläckbild). Tanken bakom lyckad avbildning är att ta flera (hundratals, till och med tusentals) mycket korta exponeringar och bara behålla de få bilder som verkar vara minst störda av atmosfäriska snedvridningar.

I allmänhet tar man mer bilder än vad som behövs för att välja de bästa senare kallas (ibland hånfullt) spray & pray . =)

När det gäller nyheten i ditt specifika användningsfall har jag sett videografer skapa tidsfördröjningar genom att spela in segment av högupplöst video för varje tidsperiod ramperiod och antingen genomsnittsramarna för varje videosegment eller välj den bästa ramen från varje segment.

Pray & Spray: Fotofotograferingsmetoden för varje kamera som lyfts i luften för att få en bild av handlingen.Fick några bra bilder av det på college under fotbollsmatcher, men kom ihåg - du hade bara 36 chanser.
@J.Hirsch tillbaka i filmdagen, du kan berätta ett proffs från hobbyisterna eftersom han tog många skott.Men i digital kan du berätta för ett proffs hur få bilder han behöver ta.Jag skäms för att säga att jag ibland bara håller ned luckan och maskingeväret tills buffertförseningen blir för irriterande ...
... eller ta de bästa * pixlarna * från varje bild, för någon definition av "bäst".Att välja det vanligaste värdet (läge) är ett tillvägagångssätt för att ta bort förgrundshinder och skapa en sammansatt bild av en bakgrund (som att ta bort turister från burst-bilder av ett berömt landmärke).I OP: s fall skulle "bäst" vara den som bäst matchar vilken likhetsfunktion de använder.
@AC: Alternativt kan du ta medelvärdet för en pixel i alla bilder, identifiera alla pixlar i alla bilder som är väsentligt olika, och ta sedan genomsnittet av alla pixlar från alla bilder, exklusive de som avviker från genomsnittet, och minska vikten påde som är nära de utestängda.
@scottbb Jag håller helt med dig.Det var alltid 3: 1 för film, och nu är det 1: 3 för digitalt.Jag hatar fortfarande redigering i digital mycket mer än jag gjorde i film.Det finns bara så mycket mer.
jpa
2020-03-31 20:28:10 UTC
view on stackexchange narkive permalink

Många tidsinställda kameror gör redan detta, men på en kortare tidsskala. Till exempel nämner GoPro i TimeWarp-dokumentation:

För bästa resultat, prova hastigheter 10x och uppåt när du tar bilder som kan bli ojämna. Högre hastighet ger ofta bättre stabilisering eftersom det finns fler ramar för TimeWarp att välja mellan

Vilket låter som att välja ramar med minst rörelse från föregående ram. På samma sätt i denna Microsoft-publikation Real-Time Hyperlapse Creation Via Optimal Frame Selection:

Vi väljer optimalt ramar från ingångsvideon som bäst matchar önskad målhastighet medan vilket också resulterar i en mjukast möjlig kamerarörelse.

Förutom likhetskriteriet väljer de för den mest stabila rörelsehastigheten mellan ramarna. När kameran rör sig kallas tekniken vanligtvis "Hyperlapse", men jag kunde inte hitta exempel på att den tillämpades på stillastående kamera och 24-timmarsintervall.

Accepterad på grund av länken till Microsoft-forskningen, som närmast matchar algoritmen jag försöker utveckla, de har precis använt en rörlig kamera istället för en stillastående.
Nat
2020-04-01 23:43:50 UTC
view on stackexchange narkive permalink

tl; dr - Det låter som om du vill ha en funktionsvekterad videoinspelning där mindre / övergående funktioner filtreras bort, vilket ger en video som visar den konceptuella utvecklingen av scen över tid.


Du vill antagligen ha en video av de viktigaste funktionernas utveckling.

Om du bara ville ha en tidsfördröjningsvideo av bilder, kan du bara göra det.

Du frågar dock om en tidsförloppssekvens med minimala förändringar mellan ramarna. Jag gissar vad du verkligen vill ha är en video som fokuserar på den övergripande berättelsen som fångats av kameran. Det här är:

  • Du gör vill fånga hur de viktigaste funktionerna i scenen förändras över tiden.

  • Du vill inte att videon ska se skakig ut, säg, det är molnigt en dag men inte nästa, eller slumpmässigt , ointressanta objekt som kommer in i bilden en dag men inte andra.

Till exempel, säg att det finns en klocka i scenen:

  • Du gör vill fånga hur klockans utseende förändras med tiden om, till exempel, färgen blir ljusare i solljuset, eller om det börjar bli repor / sprickor över tid.

  • Du Vill inte se klockans tid slumpmässigt hoppa över från ram till ram.

Gå ett steg längre:

  • Du gör vill kunna för att spela time-lapse-video med en högre bildhastighet, vilket visar klockans tid smidigt övergång som om detta var en realtidsvideo, även om kameran ne ver har faktiskt tagit bilder av klockan vid alla dessa tider.

Med andra ord vill du förmodligen inte att datorn ska spela in slumpmässiga pixlar, som i en bitmapp, utan snarare vill du en video som består av konceptuella komponenter som datorn kan visa.


Skapa en vektoriserad video genom att extrahera funktioner från de råa bitmapparna.

Funktionsextraktion isolerar funktioner från en scen.

Har du till exempel sett en av dessa " Law & Order "-tv-program där någon som bevittnar ett brott skulle beskriva en misstänkt för en polisskissartist, som sedan försöker rita den misstänkte?

Vill du ha en algoritm som bevittnar rådata från kameran och producerar sedan en videofil som beskriver vad den bevittnade snarare än att bokstavligen kopiera / klistra in pixlarna. Då vill du ha programvara som animerar en scen baserat på videofilens beskrivning, ungefär som en polis-skiss-konstnär som ritar varje ram baserat på ett vittnes minne, snarare än en traditionell videospelare som bara visar färgade punkter.

hr />

Filtrera bort de bullriga funktionerna för att få önskad video.

Om du helt vektoriserar den råa videon slutar du bara med en ny videofil som visar exakt samma sak, precis lagrat / bearbetat i ett annat format.

Magiken kommer från att kunna visa videon utan mindre funktioner. Säg till exempel att en slumpmässig person går framför kameran i ett skott; den personens närvaro i den ramen är en funktion som du antagligen vill utesluta. Så du behöver bara berätta för videospelaren vilka funktioner som ska visas - förmodligen vill du visa funktioner som smidigt sträcker sig över ett icke-trivialt antal bilder.


Tekniskt implementering: Vilken programvara ska jag använda?

Jag ska undvika att rekommendera någon specifik programvara, bibliotek osv. Delvis för att vara lat, och delvis för att detta är en framväxande praxis där saker sannolikt kommer att förändras snabbt.


Sammanfattning

Låter som att du vill skapa funktionsvektorerade videor från en tidsfördröjning av stillbilder, så att du kan se videor om den konceptuella tidsutvecklingen av scenen utan de bullriga distraktionerna.

Mycket forskning går in på detta område eftersom det är användbart i många saker; till exempel att vektorisera en massa ramar från en självkörande bils kameror kan generera en modell av världen runt bilen, vilket gör det möjligt att fatta korrekta körbeslut. Precis som du bryr sig självkörande bilar inte om bullret; de vill bara förstå de viktiga funktionerna i scenen, t.ex. där objekt är snarare än exakta data på pixelnivå från råbilder.

Det vore snyggt att se någon tillämpa detta på tidsfördröjningsvideografi!

+1 för den vältaliga beskrivningen av de saker som jag gör och inte vill ha.Även om jag inte är tillräckligt bekant med den lösningsteknik du beskriver för att göra en implementering med de begränsade tekniska detaljer som beskrivs här.
Zillakon
2020-04-01 22:26:22 UTC
view on stackexchange narkive permalink

Eftersom du använder en hallon-pi, har du funderat på att ansluta den till några påfyllningslampor. Du kan ställa in det så att lamporna bara tänds för några av bilderna om du fortfarande vill göra många bilder under dagen. Åtminstone på det sättet är din anläggning garanterad att ha någon form av standardmängd ljus oavsett vad som händer i bakgrunden av bilden.

Bra idé, men jag ville skapa en algoritm som inte behöver förlita sig på externt stöd så att den kan tillämpas på ett bredare spektrum av scenarier.Till exempel, om jag bor i en stadslägenhet med bra utsikt över vissa byggprojekt som pågår och vill ha en tidsfördröjning av skyskrapor?
Buttonwood
2020-04-02 20:35:54 UTC
view on stackexchange narkive permalink

När det gäller varaktiga tidsplaner är min hjälte i fältet Joe DiGiovanna. Från stranden av Weehawken, New Jersey, tar han var 30: e foto medan han är inriktad mot NYC (2880 bilder varje dag). Det är faktiskt ett 30-årigt projekt som han startade för mer än fyra år sedan. Med hjälp av en ardunio-baserad intervallmätare, dedikerad bärbar dator, batteribackupkraft etc. Se hans webbplats eller en rapport från CNN style om honom, inklusive exempel som 13 juli 2019 en större mörkläggning i staden) eller ökningen av skrapor.



Denna fråga och svar översattes automatiskt från det engelska språket.Det ursprungliga innehållet finns tillgängligt på stackexchange, vilket vi tackar för cc by-sa 4.0-licensen som det distribueras under.
Loading...