dissabte, 4 de juliol del 2009

Nova calibracio

He ajustat el parámetre f de l'arxiu de calibrat per a les escenes 3D perque els valors calculats s'ajusten més als reals (tots eren 0.95 voltes mes xicotets que els reals). Despres he tornat a fer les grafiques on compare els valors reals amb els calculats, i aci estan els resultats:

Monos (textura=76.3319)



Bodegó (textura=59.7778)



Planeta (textura=7.07602)



Ciutat (textura=50.5576)



Les escenes amb les mitjes més grans (en valor absolut) corresponen a imatges amb distancies molt grans, on l'algorisme sempre tendeix a acurtar-les. Pareix ser que les imatges amb una textura prop de 50 tenen el minim als valors mitjos de CW, les que tenen mes el tenen per a valors xicotets de CW i les que menys textura tenen podria dir-se que que tenen els mínims per als valors més grans, aixi que potser es podría ajustar CW en funció de la textura per afinar millor el resultat de disparitat.

divendres, 3 de juliol del 2009

Comparant Z

Per fi he conseguit llegir el format OpenEXR. Blender exporta les Z correctament (al menys pel que he comprobat fins ara), i he comparat les Zs d'aquest arxiu OpenEXR amb les calculades per l'algorisme de calcul de disparitat píxel a píxel. El que he observat es que l'algorisme SVS sempre em dona Zs menors que les reals, potser siga per l'arxiu de calibrat, o potser no...
He calculat la mitja, la varianza i la desviació típica (que no es més que l'arrel quadrada de la varianza) de la diferencia de valors de la coordenada Z.

Aci un parell de resultats:







La mitja correspon al cálcul Zcalculada-Zreal, per tant els valors negatius indiquen una distancia calculada menor a la real. Podem observar que per a la imatge dels monos tant la mitja com la varianza son molt majors que per al bodego o el planeta. Aço pot ser perque hi ha un rang de distancies molt major, i com ja sabem l'algorisme SVS produeix molts errors a les vores dels objectes, per aço, on l'algorisme calcula una profunditat de 3 hi ha una real de 200. He probat aumentant el paràmetre Uniqueness, pero no influeix significativament en els resultats. Per supost el que busquem es una mitja i una varianza (o desviació típica) mínimes, pero no ho veig molt clar.

dimecres, 1 de juliol del 2009

Mesurant la textura

Per tal d'establir un valor per a Correlation Window anem a medir la quantitat de textura que te una imatge; es d'esperar que quanta més textura tinga més detalls hi hauràn i per tant es necessitarà una finestra menor per captar-los. Aço es molt bonico, pero no sempre ha de ser així. Per exemple, si tenim una esfera amb molta textura no es necessita una finestra xicoteta, amb una gran es faria igual de be. Bueno, aci unes quantes imatges i el valor calculat (el valor es calcula aplicant un filtre pas-alt amb un kernel de 3x3 i fent la mitja per als valors de tota la imatge):

Per aquesta imatge el valor ha sigut de 15.7913.


Per aquesta de 18.9529.


Per aquesta 78.0283.


Per aquesta 64.7264.


Per aquesta 59.7778.


I per aquesta 631.724.


La mesura dona el resultat que mes o menys s'esperava. Les escenes amb més objectes i per tant més textura obtenen valors mes alts. L'ultima imatge es una prova per veure un valor alt, pero pel que s'ha vist en les imatges anteriors (n'he calculat prou mes), no es solen obtindre valors superiors a 80. Ara tan sols queda establir una relació entre Correlation Window i aquesta mesura. Una bona aproximació que he probat i dona uns resultats acceptables es asignar el valor minim per a mesures de 70-80 i el maxim per a escenes amb una mesura inferior a 20.

Ajustant Uniqueness

Despres d'ajustar Horopter i NDisp per limitar el rang de distancies que volem capturar es necesari ajustar Uniqueness per eliminar les correspondencies erronies que s'hagen detectat. Per aixo he creat unes quantes grafiques on es mostren, per a tots els valors d'Uniqueness (0-79) el nombre de pixels que donen una profunditat dins del rang elegit, els que están més profunds i els que estan massa prop. Cal destacar que com que NDisp no es pot ajustar més que en intervals de 8, alomillor un pixel que esta massa prop en realitat no es un error, sino que esta dins del rang definit per NDisp. Es deuria doncs, considerar la distancia indicada pel valor final de NDisp i no l'especificat per l'usuari... pero no tinc masa temps.

















Observem que mentre per a les imatges sintètiques no es genera cap pixel amb una Z més llunyana que la definia (que es el que s'esperava), per a les imatges reals si que hi apareixen . Potser tinga relació amb el calibrat i el fet que les càmeres no siguen perfectes. Si les cameres no estan perfectament paraleles, el calcul fet per a l'horopter i ndisp no es correcte. El que ja no se es si al rectificar les imatges aço es compensa o no, pero crec que mai ho podre saber.
Amés podem observar que la mesura de correctes-incorrectes si que presenta un màxim per a les imatges sintètiques, pero no per a les reals, en les que sempre decreix, per tant no seria correcte optimitzar aquesta mesura per trobar el valor d'Uniqueness.
Haure de buscar altra forma d'ajustar el paràmetre...