|
| Image Baseret Rendering / Raytracing Fra : Michael Vittrup |
Dato : 28-11-02 12:46 |
|
| |
Morten F. Hansen (28-11-2002)
| Kommentar Fra : Morten F. Hansen |
Dato : 28-11-02 13:34 |
|
> Lad os gå ud fra at vi har to billeder (I1, I2), taget af
> to forskudte kameraer (K1, K2) af en scene (S):
Hvis du har dybde-informationer for hver pixel i I1 og I2, samt
kameraets projektions-informationer, kan man jo regne hver pixel
om til et 3D punkt. Man kan så opfatte hver pixel (sammen med
dens naboer) som to trekanter, og derved lave en approximering
af geometrien, som derefter kan tegnes fra hvilken vinkel man
måtte ønske. Hvis man arbejder med en forholdsmæssig komplex
model, med mange overlap der kan skjule pixels, skal man regne
med at bruge mere end to dybde-billeder, for at fange geometrien;
hvis en del af modellen er skjult på begge dybde-billeder, men
ikke på det nye billede man laver, er der jo ikke informationer
nok.
En udbygning af denne metode bruges ofte til hurtigt at lave
bløde skygger (som ikke afhæger af kompleksiteten) i en 3D
scene, udfra et par dybde billeder. Metoden kaldes LDI
(Layered Depth Images). Hvis du søger på www.google.com eller
http://citeseer.nj.nec.com kan du sikkert finde en masse
publikationer om LDI-metoden.
Håber det hjælper lidt
| |
Martin Bundgaard (28-11-2002)
| Kommentar Fra : Martin Bundgaard |
Dato : 28-11-02 13:40 |
|
"Michael Vittrup" <vittrup@ima.auc.dk> wrote in message
news:Pine.GSO.4.21.0211281241490.28176-100000@dumbo.servers.ima.auc.dk...
> Lad os gå ud fra at vi har to billeder (I1, I2), taget af to forskudte
> kameraer (K1, K2) af en scene (S):
>
> \ \
> \ \
> S >K1 >K2
> / /
> / /
> I1 I2
>
> (skal ses i fixed width font) - er der så nogen der har en brilliant idé
> til hvordan man kan beregne hvorledes scenen sandsynligvis vil tage sig
> ud, set fra en tredje position midt imellem de to kameraer (jeg kender den
> præcise position af K1 og K2). Man kunne selvfølgelig beregne en
> skaleringsfaktor, og bare resize et af billederne - men mit problem er at
> jeg skal have perspektivet med.
Rent teoretisk set skal du jo kunne genskabe nok af 3D modellen til, at du
kan beregne billedet fra en tredie vinkel.
Jeg tror nok, at der findes et emneområde der kaldes "epipolær geometri" der
tager sig af den slags, men mit gæt er, at i de specialtilfælde hvor noget
sådant kan lade sig gøre, så må det kræve det massive beregninger. Eftersom
du nok skal bruge det til noget (tæt på) realtime halløj (korrekt?), er det
nok ikke nemt.
Det er da muligt, at det kan lade sig gøre at interpolere på en måde, men
jeg kan ikke forestille mig at det kan blive kønt, selv med moderat
forskellige kameravinkler.
I øvrigt undrer det mig lidt, hvordan den situation med det tredie kamera
opstår. Gider du forklare?
-mb
| |
Mikkel Christensen (28-11-2002)
| Kommentar Fra : Mikkel Christensen |
Dato : 28-11-02 14:11 |
|
"Martin Bundgaard" <noway@noway.noway> skrev i en meddelelse
news:as52pd$25d$1@sunsite.dk...
> "Michael Vittrup" <vittrup@ima.auc.dk> wrote in message
> news:Pine.GSO.4.21.0211281241490.28176-100000@dumbo.servers.ima.auc.dk...
> > Lad os gå ud fra at vi har to billeder (I1, I2), taget af to forskudte
> > kameraer (K1, K2) af en scene (S):
> >
> > \ \
> > \ \
> > S >K1 >K2
> > / /
> > / /
> > I1 I2
> >
> > (skal ses i fixed width font) - er der så nogen der har en brilliant idé
> > til hvordan man kan beregne hvorledes scenen sandsynligvis vil tage sig
> > ud, set fra en tredje position midt imellem de to kameraer (jeg kender
den
> > præcise position af K1 og K2). Man kunne selvfølgelig beregne en
> > skaleringsfaktor, og bare resize et af billederne - men mit problem er
at
> > jeg skal have perspektivet med.
>
> Rent teoretisk set skal du jo kunne genskabe nok af 3D modellen til, at du
> kan beregne billedet fra en tredie vinkel.
>
> Jeg tror nok, at der findes et emneområde der kaldes "epipolær geometri"
der
> tager sig af den slags, men mit gæt er, at i de specialtilfælde hvor noget
> sådant kan lade sig gøre, så må det kræve det massive beregninger.
Eftersom
> du nok skal bruge det til noget (tæt på) realtime halløj (korrekt?), er
det
> nok ikke nemt.
>
> Det er da muligt, at det kan lade sig gøre at interpolere på en måde, men
> jeg kan ikke forestille mig at det kan blive kønt, selv med moderat
> forskellige kameravinkler.
>
> I øvrigt undrer det mig lidt, hvordan den situation med det tredie kamera
> opstår. Gider du forklare?
>
Er det i princippet ikke det er sker i enhver given situation i moderne 3D
spil?
Som spiller bevæger man sig rundt om en formation alt imens den nye position
af hvert objekt beregnes og visualiseres.
(imponerende at disse totalberegninger af ethvert objekts placering samt
visualisering af dette kan foretages op til 400 gange i sekundet med et
midelmådigt graffikkort på en moderne computer med en opløsning på 1024*768)
Hvis du skal beregne hvordan scenen ser ud fra den nye position skal du jo
kende alle relavante fixpunkters placering i et tredimentionalt
koordinatsystem...
Derefter kan du vel beregne deres projektion på et fast punkt der så er
obsavatøren, dit kamera nummer 2.
Så er det bare tilbage at tegne noget visuelt ind på dine punkter så man
også kan se resultatet med menneske øjne.
Man kunne vel også bare merge billederne så man får gennemsnittet af de to.
Det burde vel svare til en obsavatør midt mellem de to kameraer...
--
------> END <------
Mikkel Magnus Christensen
barefoot@jaha.dk, www.startfirma.dk, www.starthotel.dk
------> END <------
| |
Martin Bundgaard (28-11-2002)
| Kommentar Fra : Martin Bundgaard |
Dato : 28-11-02 14:22 |
|
Hej.
> Er det i princippet ikke det er sker i enhver given situation i moderne 3D
> spil?
> Som spiller bevæger man sig rundt om en formation alt imens den nye
position
> af hvert objekt beregnes og visualiseres.
Nej. I et spil renderes billederne, rigtigt nok i forvejen, men dette sker
udfra 3D modellen.
Hvor det her, sådan som jeg har forstået det, drejer sig om at rendere et
billede udfra to 2D billeder, uden nogen form for dybdeinformation.
> (imponerende at disse totalberegninger af ethvert objekts placering samt
> visualisering af dette kan foretages op til 400 gange i sekundet med et
> midelmådigt graffikkort på en moderne computer med en opløsning på
1024*768)
Det må jeg give dig ret i. Rart det ikke skal gøres i hånden.
[...]
> Man kunne vel også bare merge billederne så man får gennemsnittet af de
to.
> Det burde vel svare til en obsavatør midt mellem de to kameraer...
Ja, det er nok noget i den stil man skal have fat i. Det var det jeg mente
med interpolation, men (afhængigt af hvor forskellige de to kameraer er
orienteret) bliver det nok svært at undgå en forvrængning af perspektivet,
samtidig med at billedet let vil kunne blive mudret eller uklart pga.
skalering.
-mb
| |
Michael Vittrup (29-11-2002)
| Kommentar Fra : Michael Vittrup |
Dato : 29-11-02 09:39 |
|
| |
Martin Bundgaard (29-11-2002)
| Kommentar Fra : Martin Bundgaard |
Dato : 29-11-02 15:36 |
|
Hej.
Jeg forstår ikke helt, hvad det er du her kommenterer?
> >Nej. I et spil renderes billederne, rigtigt nok i forvejen, men dette
sker
> >udfra 3D modellen.
> >Hvor det her, sådan som jeg har forstået det, drejer sig om at rendere et
> >billede udfra to 2D billeder, uden nogen form for dybdeinformation.
>
> Korrekt. At vise fine 3D polygoner fra en arbitrær vinkel er ikk' svært,
> men det her med at genskabe et 2D billede ud fra to (eller flere) 2D
> billeder er ikke helt så ligetil. Der er tale om så komplekse scener at
> det ikke vil kunne lade sig gøre at rekonstruere et 3D objekt ud fra
> billederne; jeg ønsker at gå direkte fra billeder til billede uden
> mellemledet.
Det er jo det jeg skriver.
> >Ja, det er nok noget i den stil man skal have fat i. Det var det jeg
mente
> >med interpolation, men (afhængigt af hvor forskellige de to kameraer er
> >orienteret) bliver det nok svært at undgå en forvrængning af
perspektivet,
> >samtidig med at billedet let vil kunne blive mudret eller uklart pga.
> >skalering.
>
> Det kan IKKE klares vha alm. interpolering - der skal (så vidt jeg er
> kommet frem til, og som en venlig sjæl i tråden også her bekræftet mig i
> (tak Torben :)) anvendes en avanceret form for (invers) raytracing, hvor
> man kigger på de enkelte pixels i det billede jeg ønsker beregnet, og
> finder ud af hvor den pixel skal tages fra i min database (de allerede
> skudte 2D billeder).
Det kan fint "klares", men det bliver grimt.
-mb
| |
Lasse Westh-Nielsen (28-11-2002)
| Kommentar Fra : Lasse Westh-Nielsen |
Dato : 28-11-02 17:02 |
|
"Mikkel Christensen" <barefoot@jaha.dk> wrote in message
news:as54nm$kov$1@sunsite.dk...
>
> Er det i princippet ikke det er sker i enhver given situation i moderne 3D
> spil?
> Som spiller bevæger man sig rundt om en formation alt imens den nye
position
> af hvert objekt beregnes og visualiseres.
Njaa... Den regner nok ikke alt på alle tidspunkter. Den starter nok med at
regne ud, hvad den ikke behøver at regne ud - fx ting der ligger bag andre
ting. Så sparer man en del.
> (imponerende at disse totalberegninger af ethvert objekts placering samt
> visualisering af dette kan foretages op til 400 gange i sekundet med et
> midelmådigt graffikkort på en moderne computer med en opløsning på
1024*768)
Man kan vel næppe heller kalde et moderne grafikkort for middelmådigt, i og
med de vel alle sammen har specielle hardwarekomponenter der håndterer
forskellige ting.
400 frames pr. sekund lyder egentlig lidt vildt, hvor mange frames kan det
menneskelige øje skelne overhovedet? Jeg mener at TV'et bruger 25 frames, og
der kan man jo ikke se noget "flimmer" eller "hakken"?
- Lasse
| |
Bjarke Dahl Ebert (28-11-2002)
| Kommentar Fra : Bjarke Dahl Ebert |
Dato : 28-11-02 20:44 |
|
"Lasse Westh-Nielsen" <lasse@daimi.au.dk> wrote in message
news:as5ek7$s8p$1@sunsite.dk...
> menneskelige øje skelne overhovedet? Jeg mener at TV'et bruger 25 frames,
og
> der kan man jo ikke se noget "flimmer" eller "hakken"?
Jo, det kan man altså godt
Især på stor afstand, vil jeg mene. Når jeg tråder ind i Electronic World i
Viby, kan jeg på lang afstand skelne traditionelle 25Hz fjernsyn fra 100Hz
ditto. Det er især når man bevæger øjnene, at man kan se at førstnævnte
flimrer.
Eller hvis man fylder munden med bolcher og knaser dem, så ryster hele
kraniet så gevaldigt, at man også tydeligt kan se en interferens med
fjernsynets 25Hz
Bjarke
| |
Morten F. Hansen (28-11-2002)
| Kommentar Fra : Morten F. Hansen |
Dato : 28-11-02 21:52 |
|
> Eller hvis man fylder munden med bolcher og knaser dem, så ryster hele
> kraniet så gevaldigt, at man også tydeligt kan se en interferens med
> fjernsynets 25Hz
Hehe... Simpel men meget effektiv metode
| |
Mikkel Christensen (29-11-2002)
| Kommentar Fra : Mikkel Christensen |
Dato : 29-11-02 01:26 |
|
Hey, denne tråd kører både i dk.videnskab og dk.edb.programmering
Jeg får pludselig at vide at jeg ikke kan poste svar til dk.videnskab fordi
kategorien ikke findes mens der ikke var noget proglem tidligere i dag.
Er jeg den eneste med det problem?
--
------> END <------
Mikkel Magnus Christensen
barefoot@jaha.dk, www.startfirma.dk, www.starthotel.dk
------> END <------
| |
Martin Bundgaard (29-11-2002)
| Kommentar Fra : Martin Bundgaard |
Dato : 29-11-02 15:36 |
|
"Mikkel Christensen" <barefoot@jaha.dk> wrote in message
news:as6c8j$9qb$1@sunsite.dk...
> Hey, denne tråd kører både i dk.videnskab og dk.edb.programmering
> Jeg får pludselig at vide at jeg ikke kan poste svar til dk.videnskab
fordi
> kategorien ikke findes mens der ikke var noget proglem tidligere i dag.
>
> Er jeg den eneste med det problem?
Jeg har ikke oplevet det.
-mb
| |
Prankster Kineses (28-11-2002)
| Kommentar Fra : Prankster Kineses |
Dato : 28-11-02 14:28 |
|
"Martin Bundgaard" <noway@noway.noway> wrote in message
news:as52pd$25d$1@sunsite.dk...
> Jeg tror nok, at der findes et emneområde der kaldes "epipolær geometri"
der
> tager sig af den slags, men mit gæt er, at i de specialtilfælde hvor noget
> sådant kan lade sig gøre, så må det kræve det massive beregninger.
Eftersom
> du nok skal bruge det til noget (tæt på) realtime halløj (korrekt?), er
det
> nok ikke nemt.
>
Epipolar geometri er der ganske rigtigt noget som hedder. Det er et
delområde af projektiv geometri, som netop ofte benyttes til 2D->3D
beregninger.
Her en en tutorial bygget på Marc Pollefeys Ph.d (som basalt set er en
opsummering Hartley og Zissermans arbejde tilsat autokalibrering), som
beskriver hvordan man kan beregne 3D-modeller udfra billeder:
http://www.esat.kuleuven.ac.be/~pollefey/tutorial/
Andre tilgangsvinkler er et Kalman-filter som Soatto gør det (virker kun for
en lang serie af (typisk real-time) billeder) og dense depth map hvis
"ophavsmand" jeg har glemt...
Kasper
| |
Torben Ægidius Mogen~ (28-11-2002)
| Kommentar Fra : Torben Ægidius Mogen~ |
Dato : 28-11-02 14:54 |
|
Michael Vittrup <vittrup@ima.auc.dk> writes:
> Hej alle, lige et lille spørgsmål angående billeder og billedgenerering;
> Image Based Rendering.
>
> Lad os gå ud fra at vi har to billeder (I1, I2), taget af to forskudte
> kameraer (K1, K2) af en scene (S):
>
> \ \
> \ \
> S >K1 >K2
> / /
> / /
> I1 I2
>
> (skal ses i fixed width font) - er der så nogen der har en brilliant idé
> til hvordan man kan beregne hvorledes scenen sandsynligvis vil tage sig
> ud, set fra en tredje position midt imellem de to kameraer (jeg kender den
> præcise position af K1 og K2). Man kunne selvfølgelig beregne en
> skaleringsfaktor, og bare resize et af billederne - men mit problem er at
> jeg skal have perspektivet med.
>
> Jeg ved jo hvorledes de enkelte pixels ser ud fra K1 hhv K2 (dvs de
> enkelte linjer der kan tegnes fra kameraernes fokalpunkt og ud igennem
> billedplanet("skærmen") og videre ud i verden), så måske en form for
> (reverse) raytracing, eller noget i den stil?
Det er ikke helt ved siden af: Et punkt i det ene billede svarer til
en linie i det andet billede. Hvis du kan genkende et af de punkter,
der er på denne linie som værende identisk med punktet fra det første
billede, har du information nok til at finde dets rumlige placering.
Dette vil give dig information nok til at placere det på
midterbilledet (med interpoleret farve). Der er dog følgende
problemer:
1) Hvordan finder man ud af hvilke punkter, der er ækvivalente? Det
kan kan kun i begrænset omfang gøre, f.eks. for punkter på
farvegrænser.
2) Nogle punkter på midterbilledet kan være skjulte i både I1 og I2.
3) Metoden bryder sammen, hvis der er spejlende eller gennemsigtige
objekter.
Man betragter 3D rekonstruktion som et vanskeligt problem, så det vil
nok være hurtigere at raytrace midterbilledet på almindelig vis
(såfremt man har scenebeskrivelsen).
Torben Mogensen
| |
Rune Andersen (06-12-2002)
| Kommentar Fra : Rune Andersen |
Dato : 06-12-02 22:48 |
|
> Nogle go'e idéer? Eller bare nogle strøtanker?
Hej
Alt efter hvordan du har optaget billederne, kan du tage forskellige
udgangspunkter. Hvis de er taget med en stereo-rig, dvs. du har de eksterne
parametre og har kalibreret kameraet så du kender de interne parametre
(fokallængde, pixelstørrelse, billede centrum og evt. forvrængning), så kan
du via otte punktsalgoritmen (8 kendte korrespondancer) og derefter med
epipolærgeometri søge efter de resterende korrespondancer og opnå en
3d-rekonstruktion. Det er den traditionelle metode. Der er ikke løsning til
hvordan man løser korrespondance/rekonstruktions problemet generelt ved
meget komplekse/naturlige scenerier, som fx en skov med mange blade eller
lign.
Til det vil du kunne finde algoritmer og det hele i:
Trucco, E. & Verri, A. (1998) "Introductory techniques for 3-D computer
vision", Prentice Hall, ISBN 0-13-261108-2
Det er en rigtig god bog om emnet (jeg vil sige BOGEN)
Hvis det drejer sig om image based rendering (IBR), i lige dette tilfælde
hvor noget geometri er taget med (der er forskel på hvor meget geometri man
medtager i de forskellige IBR metoder) er view morphing nok sagen, se fx:
Seitz, S.M. & Dyer, C.R. (1996) "View Morphing" in Proceedings of
SIGGRAPH96, 1996, pp.21-30
(at finde på researchindex, eller søgning på forfattere)
View morphing er implementeret i openCv (se
http://sourceforge.net/projects/opencvlibrary/)
Viewmorphing benytter også epipolærgeometri til at finde korrespondancer,
men konstruerer ikke en 3D model for at generere andre, mellemliggende,
betragtninger.
Der findes en stribe IBR metoder, hvor forskellige typer kameraoptagelser
(fx drejeskive) og antagelser (fx Parallel projektion) benyttes, men de er
vist ikke relevante her.
Udover tanken om ståler, så har det ikke meget med raytracing at gøre
venlig hilsen
Rune
| |
|
|