Domanda:
Esistono strumenti per livellare automaticamente un'immagine?
pkaeding
2010-12-07 12:28:14 UTC
view on stackexchange narkive permalink

Mi chiedo se esistono strumenti (standalone, plug-in Lightroom / Photoshop o altri) che possono scattare una foto, cercare linee quasi verticali o orizzontali (ad es. orizzonti, pali del telefono, ecc.) e ruotare automaticamente e ritagliare l'immagine?

Questo è un processo manuale per me in questo momento e sembra qualcosa che potrebbe essere automatizzato.

Esiste qualcosa di simile?

Stavo pensando che Image Magick potesse farcela, ma poi ho trovato questo: http://www.wizards-toolkit.org/discourse-server/viewtopic.php?f=1&t=13597
Tieni presente che ruotare l'immagine anche di pochi gradi è un'operazione distruttiva paragonabile all'esecuzione di un filtro di sfocatura sull'immagine. Potrebbe andare bene, ma è meglio esercitarsi a ottenere le tue immagini dritte in primo luogo. (E / o utilizzare una fotocamera che può ruotare automaticamente leggermente il sensore per adattarlo a un livello.)
se usi l'interpolazione di lanczos3 è più come farci passare un filtro di nitidezza :)
Originale, bilineare, bicubico, lanczos2: http://www.sequoiagrove.dk/images/rotateinterp.jpg
digikam sembra avere un plugin per questohttps: //www.digikam.org/node/445
Cinque risposte:
Matt Grum
2010-12-07 16:17:14 UTC
view on stackexchange narkive permalink

Potrebbero esserci programmi che tentano di fare ciò che descrivi, ma dubito che sarebbe così efficace. Se la fotocamera è leggermente inclinata verso l'alto o verso il basso, potresti avere un'immagine perfettamente livellata, nonostante non abbia una singola linea orizzontale o verticale.

Il motivo è che, a meno che la fotocamera non sia completamente piatta lungo l'asse ottico (che corre parallelo all'obiettivo), i poli del telegrafo ecc. non saranno verticali in un'immagine, anche se la fotocamera è a livello - le linee convergeranno tutte su un immaginario punto di fuga nel cielo. Allo stesso modo, se la fotocamera non è di fronte a una vera linea orizzontale, non verrà renderizzata orizzontale nell'immagine.

È possibile utilizzare un approccio più sofisticato, cercando di identificare l'orizzonte nelle immagini , o anche meglio raggruppare le linee che condividono un punto di fuga comune, stimando l'angolo di inclinazione e quindi l'angolo corretto per ruotare l'immagine, ma un tale processo sarebbe notevolmente più complicato.

Come può un programma di elaborazione delle immagini sapere cos'è il "livello"
@PatFarrell cose come orizzonte, edifici, pali o segnali, ecc. Direi che sarebbe molto più semplice del riconoscimento facciale o del rilevamento del sorriso.
Dove vivo io, raramente si vede l'orizzonte, troppi alberi. Immagino che il 99% delle mie foto non contenga un cartello, un post, ecc.
jrista
2010-12-08 00:40:08 UTC
view on stackexchange narkive permalink

Sono totalmente d'accordo con ciò che ha affermato Matt Grum ... provare a "livellare" automaticamente un'immagine sulla base di un algoritmo puramente logico sarebbe davvero efficace solo nella situazione ideale: dove hai un orizzonte perfettamente piatto in un'immagine correttamente centrata che riduce al minimo le distorsioni dell'obiettivo e della prospettiva.

Considera lo scenario in cui tu, come fotografo, hai scattato una ripresa di livello di qualcosa, come un lago, che non ha una riva perfettamente "orizzontalmente piatta" ... la riva curva e alla fine ti incontra. Un algoritmo informatico potrebbe provare a livellare un'immagine del genere rendendo la riva del lago il più piatta possibile ... ma non è corretto. La riva del lago dovrebbe essere inclinata e alla fine curvare verso di te. L'occhio umano può rilevare una cosa del genere, poiché coinvolge numerosi spunti dall'intera scena, non solo le linee primarie. Piccole cose, come l'aspetto "verticale" degli alberi (che può essere una cosa molto effimera che sarebbe difficile da adattare per un algoritmo informatico).

Penso che questo sia uno di quei buoni argomenti per fare il meglio che puoi nella fotocamera, prima di scattare la foto, per assicurarti che i tuoi scatti siano di livello. Al di là delle difficoltà tecniche di livellare accuratamente gli scatti con un algoritmo automatico, le rotazioni non di 90 gradi sono una delle modifiche più distruttive che puoi apportare, poiché richiede il ricampionamento di ogni pixel dell'immagine. Se riesci a scattare i tuoi scatti nella fotocamera in modo che siano correttamente livellati, non dovrai eseguire alcuna rotazione che causi il degrado dei dettagli dell'immagine.

RyanN
2013-02-20 01:44:05 UTC
view on stackexchange narkive permalink

Sì, non l'ho fatto ed è coinvolta un po 'di programmazione in C o Python, ma proverò presto.

La mia situazione è una telecamera montata su un albero che si trova su una boa scattare una foto che contiene sempre l'orizzonte. Questa dovrebbe essere un'applicazione più semplice della tua.

Per prima cosa, guarda OpenCV. In particolare la Hough Line Transform.

Nel mio caso, mi aspetto che l'orizzonte sarà molto più distintivo di qualsiasi altra linea, posso regolarlo per trovare solo una linea. Posso quindi ruotare in base all'angolo della linea.

Per la tua applicazione, penso che filtreresti qualsiasi linea più di X gradi dall'orizzontale o dalla verticale.

Un po 'di statistiche, e potresti essere in grado di capire quanto ruotare.

Per quanto riguarda la qualità dell'immagine degradata, convertirò i file RAW in ppm invece che in jpeg, quindi non dovrebbe esserci molto oltre al ritaglio.

John
2016-01-04 19:58:40 UTC
view on stackexchange narkive permalink

Il modulo Sviluppo di Lightroom ora ha questa opzione incorporata. Non sono necessari programmi esterni. Può livellare orizzontalmente o verticalmente o, in modalità completamente automatica, compenserà anche le linee divergenti, ecc. È ragionevolmente buono per le immagini in cui le linee verticali e orizzontali previste sono evidenti.

LogicDaemon
2017-11-26 19:52:22 UTC
view on stackexchange narkive permalink

Google Foto https://photos.google.com/ può farlo anche al giorno d'oggi. Nessun supporto RAW e nessuna elaborazione batch, e mostra solo l'opzione di livello automatico quando lo desideri.

level option auto



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 2.0 con cui è distribuito.
Loading...