Domanda:
Come posso allineare centinaia di immagini?
Nathaniel
2016-11-12 15:54:49 UTC
view on stackexchange narkive permalink

Ho diverse raccolte di circa 400 foto che ho scattato utilizzando lo scatto a intervalli. A volte la telecamera si muove leggermente durante la ripresa. Il mio obiettivo è allineare tutte le immagini a piena risoluzione in modo da poterle combinare in un'unica immagine. (La combinazione verrà eseguita nel software che ho scritto io.)

Di solito uso la funzione di allineamento automatico di Photoshop per allineare le immagini, che produce risultati eccellenti, ma con così tante immagini sembra che non funzioni o essere estremamente lento. Photoshop ha smesso di rispondere e stava ancora impiegando il 100% di CPU giorni dopo quando l'ho ucciso. Ho provato a cambiarlo solo in trasformazione prospettica (piuttosto che automatico) ma non sembrava aiutare.

Da un po 'di ricerca su Google alcune persone dicono che puoi eseguire l'allineamento in Photoshop in batch. Tuttavia, per quanto ne so, questo non è possibile. Se allineo le prime venti immagini separatamente dalle venti successive, le due serie di immagini non saranno allineate l'una con l'altra. A meno che non esista un modo per velocizzare la funzione di allineamento automatico di Photoshop, sto cercando un software progettato per l'allineamento di così tante immagini.

Un'opzione che ho provato è align_image_stack , che fa parte di Hugin. Tuttavia, questo aveva dei problemi. Nel mio tentativo più recente, ci sono voluti giorni per eseguire e non allineava correttamente le immagini; salva anche i file in un formato scomodo. (Vedi la cronologia delle modifiche per i dettagli.) Sospetto che sia Hugin che Photoshop siano ottimizzati per allineare al massimo poche dozzine di immagini e non siano realmente progettati per grandi batch.

Questi sono file RAW usciti direttamente da la mia Pentax K50 e sono circa 14-15 Mb ciascuno, quindi sono molti dati quando li metti tutti insieme - non possono entrare tutti nella memoria, e sto cercando uno strumento progettato pensando a questo .

Devo anche dire che sono su un Mac.

Non allineare le immagini in set, utilizzare uno principale come riferimento e allineare il resto con questo di base o provare a utilizzare l'ultimo del set precedente.
@Rafael come si fa, però? Photoshop non sembra darmi la possibilità di impostare un livello come riferimento per allineare il resto. L'unica opzione è scegliere i tipi di trasformazione consentiti, quindi cerca di allineare tutti i livelli tra loro.
puoi provare le macro (registrando l'azione) per automatizzarlo
Ho lo stesso problema di te; tuttavia, non ho trovato alcuna risposta. Hai risolto il problema? Come?
@Daniel Non ricordo cosa ho fatto alla fine, ma penso che sia stato più sulla falsariga di aggirare il problema piuttosto che risolverlo. Mi piacerebbe comunque una buona soluzione. Mi dispiace di non poter essere più utile.
@Rob (scusa non ho visto il tuo commento prima) - Li sto allineando per fonderli insieme in un'unica immagine, usando un algoritmo che ho inventato io stesso. Essenzialmente tinge ciascuno di un colore diverso, prima di eseguire un'operazione di fusione logaritmica. (Vedi esempi su https://nathanielvirgo.deviantart.com/gallery/61269036/Spectral-time-lapse)
Otto risposte:
yuval herrmann
2019-05-07 22:57:03 UTC
view on stackexchange narkive permalink

Non sono riuscito a trovare una soluzione con i file raw, so che la versione recente di hugin dovrebbe supportare i file raw usando dcraw ma non posso testarlo da solo. La prossima buona soluzione secondo me è convertire tutti i tuoi raw in file tif o altri formati di immagine senza perdita di dati e usarli.

Per il mio metodo io principalmente hugin_tools sul terminale ma Uso anche la GUI, quindi tieni presente che entrambi devono essere installati. Puoi trovare l'abito hugin qui per il download. Inoltre sto usando Ubuntu sulla mia macchina ma la procedura su Mac dovrebbe essere la stessa.

Per prima cosa devi mettere tutte le foto in una cartella, questo è principalmente per comodità, ma ti aiuterà con i comandi in seguito.

Genera un pto file

Successivamente è necessario generare un file pto, ovvero il file in cui vengono salvati tutti i dati di trasformazione dell'immagine. Puoi farlo digitando:

  pto_gen * .jpg  

nel terminale in cui si trovano tutte le foto.

Ritaglio in un'area fissa

Ora devi trovare le corrispondenze tra tutte le tue immagini, prima di farlo c'è una parte opzionale che ridurrà notevolmente gli errori se ci sono oggetti in movimento ts nel tuo set.

Apri il progetto hugin che hai generato e cambia l'interfaccia in avanzata.

interface changing

In la finestra che si è aperta vai alla scheda maschere e lì scegli la scheda di ritaglio e seleziona la tua prima immagine. Ora assicurati che "tutte le immagini dell'obiettivo selezionato" sia spuntato, quindi trascina dai bordi dell'immagine e ritaglia l'area con la minima o nessuna quantità di movimento. Ciò restringerà il cercatore di fiammiferi a quell'area e ridurrà l'errore nella fase di rimappatura. Ora puoi salvare ed uscire dal programma.

image cropping

Trovare punti di controllo

Ora puoi trovare le corrispondenze, digita:

  cpfind --linearmatch * .pto  

nel terminale, questo troverà corrispondenze tra coppie di immagini. Puoi anche trovare corrispondenze tra tutte le immagini semplicemente omettendo l'opzione 'linearmatch', ma se hai centinaia di immagini ci vorrà molto tempo e probabilmente non è necessario. Puoi saperne di più su cpfind qui.

Successivamente devi pulire i punti di controllo che hai trovato, ci sono due comandi per questo scopo:

  celeste_standalone -i default.pto -o default.pto  

proverà a cancellare i punti di controllo sulle nuvole (Maggiori informazioni qui). E

  cpclean -o default.pto default.pto 

rimuoverà i punti di controllo con un alto valore di errore. ( pagina della guida di cpclean)

Reimposta ritaglio

Ora che abbiamo finito con i punti di controllo, apri il nuovo progetto generato chiamato default e torna alla scheda maschere come prima, qui seleziona nuovamente la scheda di ritaglio e fai clic sul pulsante di ripristino, questo disabiliterà il ritaglio da tutte le immagini.

Ottimizzazione

Dopo di che devi ottimizzare i punti di controllo. Digita:

  pto_var --opt = "y, p, r, TrX, TrY, TrZ" -o default.pto default.ptoautooptimiser -n -o default.pto default.pto  codice> 

Ciò ottimizzerà la posizione e la distorsione del set di immagini, puoi saperne di più su questo processo qui.

Hai quasi finito, ora basta digitare:

  pano_modify -o default.pto --projection = 0 --fov = AUTO --center --canvas = AUTO --crop = AUTOHDR --output-type = REMAPORIG default .pto  

per modificare la configurazione del progetto.

Rimappatura

Infine basta digitare:

  nona - m TIFF_m -o remapped default.pto  

per produrre le immagini rimappate.Se vuoi anche impilare le immagini insieme puoi anche usare:

  hugin_stacker --output = median --mode = median rimappato * .tif  

Ulteriori informazioni sugli strumenti da riga di comando di hugin sono disponibili qui.

Ecco, questa è la mia opinione sul tuo problema, ci sono alcuni collegamenti mancanti perché questa è la mia prima risposta quindi ero limitato a 8. Se ci sono errori o hai problemi per favore fammelo sapere, anche il mio inglese non è il massimo quindi mi dispiace se ho fatto errori di grammatica o ortografia. Salute!

Benvenuto! Questa è una risposta ben formattata e abbastanza dettagliata. Molto bene. Continuate così.
Sembra fantastico, grazie mille per aver incluso istruzioni dettagliate. Proverò a seguire queste istruzioni la prossima volta che avrò bisogno di farlo e ti farò sapere come va. (Non sono sicuro di quando accadrà.)
Chris H
2017-03-01 20:01:26 UTC
view on stackexchange narkive permalink

ImageJ è stato sviluppato per l'elaborazione di immagini per microscopia e astronomia, dove questo problema si presenta frequentemente.

Ecco un tutorial che si basa sull'importazione di tutto le immagini in una "pila" prima e allineandole a una caratteristica. Probabilmente può anche fare la tua "combinazione" (l'ho usato per aggiungere più immagini in condizioni di scarsa illuminazione estrema, ad esempio).

Un fork più moderno è Fiji, che potrebbe essere più facile da usare. Entrambi sono gratuiti / opensource e multipiattaforma.

Sembra che ImageJ sia limitato ai set di dati che possono entrare nella memoria, il che lo rende inadatto per le mie immagini. O mi sbaglio su questo? Per favore correggimi se è così!
@Nathaniel potrei credere che l'intero stack debba entrare nella memoria (compreso lo swap, ma sarebbe stupidamente lento). Potrebbe essere necessario eseguirlo o scriptarlo per eseguire un batch alla volta, come ho fatto io quando avevo bisogno della media di 1000 immagini
Alister Ling
2020-02-04 04:33:32 UTC
view on stackexchange narkive permalink

RISOLTO! Ho trovato la soluzione di Bruno Postle ( https://groups.google.com/forum/#!searchin/hugin-ptx/nona-deshake%7Csort:date/hugin-ptx/yFE6VF-mtGk/U8OYAuNYCgAJ ) e implementato su Windows . https://sites.google.com/site/alistargazing/home/image-processing/time-lapse-deshake. Occorrono 4 secondi per immagine su un vecchio laptop e meno di 5 minuti per avviare un nuovo progetto [una volta completata la configurazione preliminare] Il mio problema di utilizzo è stato che durante il time-lapse, il mio treppiede si è spostato molto gradualmente. Quando ho impilato le oltre 500 immagini, non erano allineate. Ora posso tornare indietro di un decennio e salvare alcuni altri progetti!

Fantastico, grazie per aver postato questo!Sono su un Mac, ma potrei provare a far funzionare lo script originale per un po 'di tempo.
Martien
2016-11-12 18:32:59 UTC
view on stackexchange narkive permalink

Importa in After Effect come sequenza, stabilizza, esporta come immagini. Non conosci i dettagli esatti, ma sarai in grado di trovarli online. Non saprei come farlo automaticamente in PS, dubito che sia possibile ..

Funzionerà a piena risoluzione? Alla fine li sto combinando in un'unica immagine, quindi dovrei mantenere la piena risoluzione dei fotogrammi. (Non ho After Effects.)
Devi fare i test, perché sei quello che ha le tue foto. Ad esempio, non so quale sia la risoluzione completa o quanto sia veloce il tuo computer. : o (So che il programma ha limitazioni sulla risoluzione ma quando si usa il video perché il codec. Ma non sono sicuro delle immagini fisse.
Jeffrey Michael
2016-11-18 03:11:52 UTC
view on stackexchange narkive permalink

Ho usato Canon Photo Stitch e ho avuto successo con molte immagini. Potresti voler elaborare piccoli gruppi di foto e quindi elaborare i gruppi.

Se hai accesso a un computer con giga e giga di RAM e dovresti essere in grado di elaborare in Photoshop.

Sherwood Botsford
2016-12-01 12:23:48 UTC
view on stackexchange narkive permalink

Non un esperto di Photoshop.

Prova questo: apri un'immagine. Impostalo come sfondo e blocca.

Importa N immagini. Allinearli. Nascondi i livelli dei risultati.

Importa un altro N. Align.

Scopri il primo batch.

Riproduci il tuo intervallo impostato.

Se non funziona ci saranno 2 scatti: uno subito dopo il primo scatto, (perché l'allineamento con il secondo lotto lo ha cambiato) e uno tra N e N + 1

Per risparmiare tempo, inizierei con N uguale a circa 10 o 20, e fai solo 2 lotti.

Se funziona, puoi giocare aumentando la dimensione di N. In questo scenario, continui ad aggiungere lotti e nascondere / bloccare il non- batch corrente.

Grimaldi
2017-03-20 00:22:35 UTC
view on stackexchange narkive permalink

Stai cercando un software di cucitura panaroma, che sia in grado di fare Gigapixel.

Se cerchi su Google "Come creare un'immagine gigapixel", i soliti sospetti che si presentano sono (in nessun ordine particolare):

  • PTgui
  • Hugin
  • Gigapan Stitch
  • Microsoft ICE (Image Composite Editor)

Questo elenco probabilmente non è completo. YMMV.

La cucitura panoramica non è esattamente quello che voglio fare. Le immagini sono tutte più o meno la stessa scena (il movimento della fotocamera è stato accidentale / inevitabile), e voglio mantenerle tutte come file separati, basta allinearle. (Li combinerò quindi in un'unica immagine utilizzando uno speciale algoritmo che ho scritto io stesso.) Tuttavia, forse alcuni di questi software possono svolgere questo compito.
Per l'allineamento è possibile utilizzare il setaccio automatico o strumenti simili per identificare i punti di controllo e utilizzarli per calcolare l'inclinazione e lo spostamento necessari. Può essere fatto, ma richiede una conoscenza approfondita degli strumenti e di come modificarli per farli fare, cosa vuoi che facciano. Chiederei nelle rispettive mailing list di questi strumenti.
Hugin lavorerà sicuramente per questo.
@cegaton Ho menzionato Hugin nella domanda: a volte produce file "tif" non corretti, motivo per cui sto cercando un'altra soluzione.
Count Iblis
2018-03-22 03:22:27 UTC
view on stackexchange narkive permalink

Per allineare correttamente le immagini in batch è necessario includere una particolare immagine come immagine di ancoraggio per tutti i batch. Quindi, se prendi l'immagine nr. 1 come immagine di ancoraggio, quindi è possibile allineare le immagini da 1 a 20 in un batch e per il batch successivo scegliere le immagini 1, 21, 22, ..., 39. Il batch successivo è costituito dalle immagini 1, 40, 41, ... 59. In questo modo tutte le immagini saranno allineate all'immagine nr. 1.

Presumo tu stia parlando di Photoshop? In tal caso, potresti dirmi come impostare un'immagine come immagine di ancoraggio per l'allineamento? Non voglio dire che sono certo, ma credo che non sia possibile. Allinea tutte le immagini l'una all'altra, non a un'immagine specificata.
@Nathaniel Avevo in mente Hugin, ma in generale, se hai N immagini, ci sono allineamenti N-1 da fare in quanto puoi sempre spostare, ruotare ecc. Tutte le N immagini della stessa quantità senza influenzare l'allineamento. Un programma che non vincola gli allineamenti ancorando una delle immagini rischierà di ruotare o tradurre tutte le immagini di una quantità incontrollata.
Ok, ma allora potresti dirmi come impostare un'immagine di ancoraggio in Hugin? Non c'è niente nelle [istruzioni] (https://wiki.panotools.org/Align_image_stack) per `align_image_stack` (il backend che usa per l'allineamento) che indichi che ciò è possibile.
@Nathaniel Con Hugin ti basta caricare le immagini, cliccando con il tasto destro sulla voce di un'immagine si apre un menu dove puoi selezionarla come ancoraggio per la posizione.
Vedo! Non avevo nemmeno pensato di provarlo tramite la GUI, poiché avevo pensato che ogni opzione sarebbe stata disponibile utilizzando `align_image_stack` dalla riga di comando. Ci proverò stasera.
`align_image_stack` presume che le prime immagini siano l'ancora.Quindi potresti usare la riga di comando: `align_image_stack -a allineato Anchor.jpg image000 [0-9] .jpg` per esempio, se vuoi usare` align_image_stack` in batch.


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