Sto sviluppando un'applicazione per iPhone usando opencv. Devo utilizzare il metodo solvePnPRansac:crea opencv camera matrix per iPhone 5 solvepnp
http://opencv.willowgarage.com/documentation/cpp/camera_calibration_and_3d_reconstruction.html
Per questo metodo ho bisogno di fornire una matrice fotocamera:
__ __
| fx 0 cx |
| 0 cy cy |
| _0 0 1 _ |
dove cx e cy rappresentano le posizioni dei pixel centrali dell'immagine e fx e fy rappresentano lunghezze focali, ma questa è tutta la documentazione che dice. Non sono sicuro di cosa fornire queste lunghezze focali. L'iPhone 5 ha una lunghezza focale di 4,1 mm, ma non credo che questo valore sia utilizzabile così com'è.
ho controllato un altro sito web:
http://docs.opencv.org/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html
che mostra come OpenCV crea matrici della fotocamera. Qui afferma che le lunghezze focali sono misurate in unità pixel.
ho controllato un altro sito:
http://www.velocityreviews.com/forums/t500283-focal-length-in-pixels.html
(circa a metà) si dice che la lunghezza focale può essere convertita da unità di millimetri di pixel usando l'equazione: fx = fy = focalMM * pixelDensity/25.4;
Un altro link che ho trovato afferma che fx = focalMM * width/(sensorSizeMM); fy = focalMM * length/(sensorSizeMM);
Non sono sicuro di queste equazioni e di come creare correttamente questa matrice.
Qualsiasi aiuto, consiglio, o link su come creare una matrice fotocamera accurata (in particolare per l'iPhone 5) sarebbe molto apprezzato,
Isaac
P.S. Penso che (fx/fy) o (fy/fx) potrebbe essere uguale al rapporto di aspetto della fotocamera, ma potrebbe essere completamente sbagliato.
UPDATE:
Pixel coordinates to 3D line (opencv)
utilizzando questo link, io riesco a capire come vogliono fx e fy essere formattati perché lo usano per scalare angoli relativi alla loro distanza dal centro. pertanto, fx e fy sono probabilmente in pixel/(lunghezza unitaria) ma non sono ancora sicuro di quale debba essere questa lunghezza unitaria, può essere arbitraria fintanto che xey sono scalati l'uno rispetto all'altro?
Grazie per la vostra risposta, l'ho trovato informativo e molto utile. Ancora una domanda veloce. Dato l'angolo del campo visivo, ho trovato online che fy = fx = cx/(tan ((orizzontaleAngle)/2)) è questa la formula che consigli? – Isaac
inoltre, posso ancora ottenere un vettore relativo alla mia macchina fotografica in questo modo se costruisco il mio fx in questo modo: http://stackoverflow.com/questions/3107771/pixel-coordinates-to-3d-line-opencv?rq = 1 – Isaac
upvote per indicare il FoV è vantaggioso come parametro dal momento che è indipendente dalla scala – hAcKnRoCk