2015-06-14 13 views
11

Sembra possibile compensare la distorsione fisheye utilizzando ffmpeg grazie al filtro lenscorrection:C'è un modo per rimuovere GoPro fisheye utilizzando ffmpeg

ffmpeg -i in.mp4 -vf "lenscorrection=cx=0.5:cy=0.5:k1=-.25:k2=-.25" out.mp4 

Quali valori per k1 e k2, in particolare per un GoPro? C'è un modo per calcolarli?

+0

doppio in in video: http://video.stackexchange.com/questions/12667/linux-command-line-option-to-do-video-lens-correction – payne

+0

@abernier penso che fornisce un esempio ** input ** image (video grab) velocizzerebbe l'ottenimento di alcune risposte. –

risposta

4

FFmpeg ha un filtro lenscorrection che può essere utilizzato per correggere la distorsione radiale nei video. Detto questo, senza più contesto, come il modello e le impostazioni della fotocamera, sarebbe difficile fornire maggiori informazioni. Sospetto che richiederebbe comunque un po 'di tentativi ed errori.

PS: hai provato a eseguire il software della videocamera sotto WINE? Alcune versioni di questo apparentemente hanno questo tipo di filtro di correzione predefinito e facilmente accessibile.

+3

Grazie per la risposta, ma sto cercando i parametri ffmpeg per lenscorrection (o altri opensource, senza usare software di terze parti). – user4223883

+0

sì, per la risposta, ma valori specifici per 'k1' e' k2' sarebbe fantastico per gopro – abernier

11

Non penso ci sia una generica impostazione (s) per coprire tutti i modelli GoPro & obiettivi. Si noti anche che le persone possono utilizzare alcuni obiettivi personalizzati/sostitutivi.

speravo in un'immagine di esempio con quello che hai da lavorare con, ma non importa ...
Speranza il sotto è utile a voi in qualche modo

controllare questo link per GoPro Hero 3 settings (vale ad altri modelli). Per avere un'idea approssimativa di migliori k1 e k2 valori, si dovrebbe trovare il rapporto di aspetto più vicino per la risoluzione dell'immagine, allora ...

Divide la H. FOV deg con la V. FOV deg e moltiplicare il risultato con Diag. FOV deg.

Esempio: dove la dimensione dell'immagine è 1920 x 1080: Ciò rende widescreen 16: 9.

Impostazione GoPro 3: 16 x 9 Widescreen :: H fov = 69,5 || V fov = 118,2 || Diag = 133,6

Così 118.2/69.5 * 133.6 = 227.216 etc

per k1 il risultato è ora numero intero 227 (cadere i punti decimali).

per k2 il valore 0.022 sembra universale (tutte le immagini di prova), quindi è possibile provare k2=-.022.

per cx e cy tenerli come: cx=0.5:cy=0.5:.

Esempio:

ffmpeg -i in.mp4 -vf "lenscorrection=cx=0.5:cy=0.5:k1=-0.227:k2=-0.022" out.mp4

Risultato: (immagine originale trovati tramite Google images di un eroe-2 GoPro).

+0

L'aritmetica può essere eseguita all'interno del comando se lo si desidera. – LordNeckbeard

+0

Eccellente! Hai appena vinto la taglia;) Tuttavia, puoi spiegare un po 'di più il valore di k2? Perché è "universale"? Grazie ancora – abernier

+1

@abernier Grazie. A proposito di 'k2' non è tanto il fatto che sia universale, ma solo che funzioni per quel tipo di lente fish-eye. Le mie foto di prova avevano tutte un tipo di immagine "immagine all'interno di un cerchio" (con bordi neri). Potrebbe non essere la soluzione migliore per obiettivi panoramici (immagine distorta ma schermo senza bordi neri). In questo momento sono in missione, ma aggiornerò con ulteriori informazioni/esempi più avanti stasera. –