Bilanciamento del colore e pubblicazione di grandi quantità di immagini ad alta risoluzione nel geoserver


11

Ho una grande quantità di immagini RapidEye (+300 Gb) che voglio usare come mappa di base per un'applicazione online. Finora sono riuscito a servirli come ImagePyramid nel geoserver seguendo i passaggi mostrati in una presentazione chiamata "Geoserver su steroidi". Il problema è che non sono stato in grado di fare un corretto bilanciamento del colore, quindi quando guardo l'intero set di dati, il mosaico sembra molto scarso ma quando ingrandisco, migliora (foto sotto).

Il mio processo è:

  1. Converti tutte le immagini in 8 bit, epsg 4326, interpolazione cubica usando gdal
  2. Genera un raster virtuale gdal con tutte le immagini (gdalbuildvrt)
  3. Genera la piramide di immagini (gdal_retile con compressione e geotiff) e pubblica su geoserver (usando l'istogramma nello stile del livello)

Qualche consiglio su come migliorare il processo e ottenere un migliore bilanciamento del colore?

inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine

Risposte:


6

Credo di averlo capito.

Ho forzato un allungamento medio + -2 dell'istogramma della deviazione standard in ciascuna immagine RapidEye durante la conversione in 8 bit.

Ho usato uno script Python per identificare l'immagine min, max, media e SD. Ho quindi impostato il valore di media - 2SD (o immagine min, a seconda di quale fosse maggiore) su 2 e media + 2SD (o max) su 254. E solo per sicurezza, il valore originale di zero nell'immagine era impostato su 1 e 2 ^ 16 impostato su 255. NoData è stato impostato su 0.

Questi sono i vettori della funzione di trasferimento:

original image values = [0, mean-2SD, mean+2SD, 65536]
rescaled values = [1 2, 254, 255]

Di seguito sono riportate alcune schermate. I problemi che devo risolvere ora sono

  1. Rimuovere il bordo nero attorno a imagePyramid
  2. Ottieni un'immagine dall'aspetto migliore quando ingrandito al massimo. Ora sembra una vecchia TV sintonizzata sul canale sbagliato

inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine

Modifica
Ora ho inserito il codice su GitHub. È da un po 'che non lo uso. Il codice è un po 'disordinato e lo è anche il repository. Ma dovrebbe ancora funzionare.
https://github.com/dvictori/rapideye_hist2sd


Bravo, signore. Ottieni 10 su 10 per questo. Per quanto riguarda la seconda preoccupazione (aspetto migliore se ingrandito al massimo), potresti semplicemente utilizzare immagini a grana più bassa, come LandSat o ASTER? Penso che le immagini più grossolane sembrerebbero migliori se rimpicciolite. ... per la tua prima preoccupazione, sto ancora cercando di rompere quel dado, me stesso. Mi piacerebbe vedere un articolo completo su come hai fatto, incluso lo script PY se sei disposto a condividerlo. Qualche possibilità hai intenzione di presentare il tuo approccio ovunque?
elrobis,

Non avevo intenzione di presentarlo o di scrivere un articolo. Ma ora che hai menzionato, chissà. Qualche suggerimento su un supporto appropriato per presentare questo? Per quanto riguarda lo script py, puoi scaricarlo da dropbox.com/s/1hfobfp9ymtku2n/rapideye_hist2sd.py Tuttavia, tieni presente. Mi considero un programmatore schifoso e sono sicuro che il mio programma potrebbe apportare molti miglioramenti.
Daniel,

2
Ho cambiato il link per il download dal commento sopra. Se vuoi guardare il codice Python che ho usato, puoi scaricarlo da goo.gl/ePEc7G
Daniel

Grazie @ Daniele. Tengo un blog in cui inserisco istruzioni per tali cose. Se mi imbatto in qualcosa che non è stato facile e per il quale non sono riuscito a trovare molto aiuto sul Web, farò un post sul blog per un paio di motivi. Innanzitutto, suppongo che dovrò ripetere l'attività qualche volta, quindi se consolido i passaggi in un post, posso facilmente rivederli in seguito. In secondo luogo, immagino che ci sia sempre la possibilità che qualcuno là fuori voglia fare qualcosa di simile e potrebbero trarre vantaggio dal post. Quello che hai fatto qui è molto degno del blog, anche se è il tuo unico post per un po '. :)
elrobis,

Questa è un'idea straordinaria, e sto provando ad adattarla per un frame più piccolo, una fotocamera a 3 bande che va da 8 bit a 8 bit, ma ho qualche problema con la sua implementazione. Come devo indirizzare la directory delle immagini di input a questo script? Da dove vengono chiamati? Immagino che tutto questo debba essere eseguito tramite geoserver, ma posso risolverlo ed eseguirlo da solo?
Wes,

4

Daniel, queste immagini provengono da stagioni molto diverse? O le ore del giorno? Se sono stagioni diverse, ottenere un buon bilanciamento del colore può essere piuttosto difficile. Ma se sono diverse ore del giorno, applicare una correzione per l'angolo del sole può aiutare notevolmente. Una buona approssimazione del primo ordine per l'angolo del sole è quella di moltiplicare i pixel per 1,0 / cos (angle_of_sun_off_directly_above). Quindi nessuna regolazione se il sole è direttamente sopra, aumentando a ... bene l'infinito mentre ti avvicini all'alba / al tramonto.

Ho avuto pessimi risultati in passato usando l'istogramma corrispondente tra scene su regioni sovrapposte per assemblare grandi mosaici perché si ottengono strani effetti alla deriva attraverso il mosaico. Penso che un approccio più utile potrebbe essere una sorta di istogramma corrispondente a un'immagine target di colore di base (forse un attraente mosaico di paesaggi dell'area). Sono anche interessato a come risolvere questo problema. Anche Charlie Loyd di MapBox potrebbe avere dei pensieri.


Frank, le immagini provengono principalmente dalla stagione secca, quando la copertura nuvolosa è bassa. Ma ci sono immagini di diversi mesi, come agosto, novembre, ecc. Ora sto provando a dividere le immagini in piccoli blocchi e fare un mosaico per ciascuno. Ti farà sapere come andrà a finire. Ho anche scritto uno script Python per fare una corrispondenza CDF e funziona bene (non eccezionale) quando ho un piccolo numero di immagini (20) ma quando arrivo a un numero elevato, una delle immagini è destinata ad avere valori al di fuori del mio gamma di immagini di riferimento e quindi le cose smettono di funzionare. Potrebbe essere necessario pensare a un modo migliore per selezionare l'immagine di riferimento.
Daniel,

0

A volte ho usato il linker immagine OSSIM con corrispondenza istogramma per realizzare mosaici bilanciati a colori. Il tutorial sul linker di immagini fornisce alcuni esempi di http://download.osgeo.org/ossim/docs/pdfs/ImageLinker_Tutorial.pdf Tuttavia, il linker di immagini non viene mantenuto attivamente e non so se funziona più. Ossim Geocell è il programma attuale, ma non ci sono molti documenti dell'utente al riguardo. Ricordo che per ottenere un buon risultato ho preelaborato le mie scene Landsat una ad una con OpenEV applicando un po 'di allungamento LUT per rendere le immagini visivamente simili allo stesso aspetto. Quindi è stato più facile per OSSIM effettuare la corrispondenza finale. Il prodotto finale sembrava buono come quello che ho realizzato con l'utilità di mosaico ER Mapper.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.