Sto usando OpenCV per calibrare le immagini scattate con le fotocamere con obiettivi fish-eye.La calibrazione del fisheye OpenCV taglia troppo l'immagine risultante
Le funzioni che sto usando sono:
findChessboardCorners(...);
per trovare gli angoli del motivo di calibrazione.cornerSubPix(...);
per rifinire gli angoli trovati.fisheye::calibrate(...);
per calibrare la matrice della telecamera ei coefficienti di distorsione.fisheye::undistortImage(...);
per non distorcere le immagini utilizzando le informazioni della fotocamera ottenute dalla calibrazione.
Mentre l'immagine risultante sembra avere un bell'aspetto (linee rette e così via), il mio problema è che la funzione taglia via troppa dell'immagine.
Questo è un problema reale, in quanto utilizzo quattro telecamere a 90 gradi tra di loro e quando viene tagliata la maggior parte dei lati, non vi è alcuna area sovrapposta che è necessaria mentre sto per cucire immagini.
Ho guardato in utilizzando fisheye::estimateNewCameraMatrixForUndistortRectify(...)
ma non ho potuto farlo a dare buoni risultati, come io non so cosa dovrei mettere in come Ingresso R
, come l'uscita di rotazione vettore di fisheye::calibrate
è 3XN (dove N è il numero di delle immagini di calibrazione) e fisheye::estimateNewCameraMatrixForUndistortRectify
richiede un 1x3 o 3x3.
Le immagini seguenti mostrano un'immagine del mio risultato di distorsione e un esempio del tipo di risultato che avrei desiderato idealmente.
Undistortion:
Esempio di risultato voluto:
ho provato, e per le immagini regolari (utilizzando le immagini nelle cartelle campioni OpenCV) ha dato il tipo di risultato che volevo, ma quando lo uso sulle mie immagini fisheye, non dà il risultato voluto – NoShadowKick
[Cartella che mostra le immagini dei miei risultati] (https://www.dropbox.com/sh/pkudy2acgqyyjc5/AAAWEWE5cMEiT6dGB0hwDnVm69a?dl=0) – NoShadowKick
Le immagini sembrano provenire da una fotocamera grandangolare (~ 180 gradi fov). Se si desidera includere tutti i pixel, si avrà un'immagine di dimensioni infinite (poiché i pixel con angolo dall'asse della telecamera principale> = 180 verranno proiettati all'infinito). Quindi dovrai scartarne alcuni per ottenere immagini di dimensioni finite. A proposito, che alpha hai usato? – alexisrozhkov