Balance de color y publique gran cantidad de imágenes de alta resolución en geoservidor

11

Tengo una gran cantidad de imágenes RapidEye (+300 Gb) que quiero usar como mapa base para una aplicación en línea. Hasta ahora he logrado servirlos como ImagePyramid en geoserver siguiendo los pasos que se muestran en una presentación llamada "Geoserver con esteroides". El problema es que no he podido hacer un balance de color adecuado, por lo que al mirar todo el conjunto de datos, el mosaico se ve muy pobre, pero a medida que hago zoom, mejora (imágenes a continuación).

Mi proceso es:

  1. Convierta todas las imágenes a 8 bits, epsg 4326, interpolación cúbica usando gdal
  2. Genere un ráster virtual gdal con todas las imágenes (gdalbuildvrt)
  3. Genere la pirámide de la imagen (gdal_retile con compresión y geotiff tilling) y publíquela en geoserver (usando el estiramiento de histograma en el estilo de capa)

¿Algún consejo sobre cómo mejorar el proceso y obtener un mejor balance de color?

ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí

Daniel
fuente

Respuestas:

6

Creo que lo tengo.

Forcé un estiramiento medio del histograma de desviación estándar + -2 en cada imagen RapidEye durante la conversión a 8 bits.

Utilicé un script de Python para identificar la imagen min, max, average y SD. Luego configuré el valor de media - 2SD (o imagen mínima, lo que sea mayor) a 2 y media + 2SD (o máxima) a 254. Y para estar seguros, el valor original de cero en la imagen se estableció en 1 y 2 ^ 16 establecido en 255. NoData se estableció en 0.

Estos son los vectores de la función de transferencia:

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

A continuación se muestran algunas capturas de pantalla. Los problemas que tengo que arreglar ahora son

  1. Elimine el borde negro alrededor de la imagen Pirámide
  2. Obtenga una imagen de mejor aspecto cuando se amplía al máximo. Ahora parece un viejo televisor sintonizado en el canal equivocado

ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí

Editar
Ahora he colocado el código en GitHub. Ha pasado un tiempo desde que lo usé. El código es un poco desordenado y también lo es el repositorio. Pero aún así debería funcionar.
https://github.com/dvictori/rapideye_hist2sd

Daniel
fuente
Bravo, señor. Obtienes 10 de 10 por esto. En cuanto a su segunda preocupación (mejor aspecto cuando se amplía), ¿podría simplemente usar imágenes de grano más bajo, como LandSat o ASTER? Creo que las imágenes más gruesas se verían mejor al alejarse. ... en cuanto a su primera preocupación, todavía estoy tratando de romper esa nuez, yo mismo. Me encantaría ver una descripción completa de cómo hiciste esto, incluido el script py si estás dispuesto a compartirlo. ¿Alguna posibilidad de que planees presentar tu enfoque en cualquier lugar?
elrobis
No estaba planeando presentar esto o escribir un artículo. Pero ahora que lo mencionaste, quién sabe. ¿Alguna sugerencia sobre un medio apropiado para presentar esto? En cuanto al script py, puede descargarlo de dropbox.com/s/1hfobfp9ymtku2n/rapideye_hist2sd.py Sin embargo, tenga cuidado . Me considero un programador malo y estoy seguro de que mi programa podría usar muchas mejoras.
Daniel
2
Cambié el enlace de descarga del comentario anterior. Si desea ver el código de Python que utilicé, puede descargarlo desde goo.gl/ePEc7G
Daniel
Gracias @Daniel. Mantengo un blog donde publico instrucciones para tales cosas. Si me encuentro con algo que no fue fácil y para el que no pude encontrar mucha ayuda en la web, haré una publicación en el blog por un par de razones. Primero, supongo que tendré que repetir la tarea en algún momento, por lo que si consolido los pasos en una publicación, puedo revisarlos fácilmente más adelante. En segundo lugar, me imagino que siempre existe la posibilidad de que alguien quiera hacer algo similar y se beneficie de la publicación. Lo que hiciste aquí es muy digno de un blog, incluso si es tu única publicación por un tiempo. :)
elrobis
Esta es una idea increíble, y estoy tratando de adaptarla para un marco más pequeño, la cámara de 3 bandas va de 8 bits a 8 bits, pero tengo algunos problemas para implementarla. ¿Cómo debo dirigir el directorio de imágenes de entrada a este script? ¿De dónde son llamados? Supongo que todo esto debe estar funcionando a través del geoservidor, pero ¿puedo romper esto y ejecutarlo de forma independiente?
Wes
4

Daniel, ¿son estas imágenes de estaciones muy diferentes? O las horas del día? Si son estaciones diferentes, entonces lograr un buen balance de color puede ser bastante difícil. Pero si son diferentes momentos del día, entonces aplicar una corrección para el ángulo solar puede ayudar notablemente. Una buena aproximación de primer orden para el ángulo solar es multiplicar los píxeles por 1.0 / cos (angle_of_sun_off_directly_above). Así que no hay ajuste si el sol está directamente arriba, aumentando a ... bueno, infinito a medida que se acerca el amanecer / anochecer.

He tenido malos resultados en el pasado usando la coincidencia de histogramas entre escenas en regiones superpuestas para ensamblar mosaicos grandes porque se obtienen extraños efectos de deriva en el mosaico. Creo que un enfoque más útil podría ser algún tipo de coincidencia de histograma con una imagen objetivo de color base (tal vez un mosaico de tierra atractivo del área). También estoy interesado en cómo resolver este problema. Charlie Loyd en MapBox también podría tener pensamientos.

Frank Warmerdam
fuente
Frank, las imágenes son principalmente de la estación seca, cuando la capa de nubes es baja. Pero hay imágenes de diferentes meses, como agosto, noviembre, etc. Ahora estoy tratando de dividir las imágenes en pequeños bloques y hacer un mosaico para cada uno. Te dejaré saber cómo resulta. También escribí un script de Python para hacer una coincidencia de CDF y funciona bien (no excelente) cuando tengo una pequeña cantidad de imágenes (20) pero cuando llego a una gran cantidad, una de las imágenes está destinada a tener valores fuera de mi rango de imagen de referencia y luego las cosas dejan de funcionar. Puede que tenga que pensar en una mejor manera de seleccionar la imagen de referencia.
Daniel
0

A veces he usado el vinculador de imágenes OSSIM con coincidencia de histogramas para hacer mosaicos de color equilibrado. El tutorial del enlazador de imágenes ofrece algunos ejemplos http://download.osgeo.org/ossim/docs/pdfs/ImageLinker_Tutorial.pdf Sin embargo, el enlazador de imágenes no se mantiene activamente y no sé si funciona más. Ossim geocell es el programa actual, pero no hay muchos documentos de usuario al respecto. Recuerdo que para lograr un buen resultado, preprocesé mis escenas Landsat primero una por una con OpenEV aplicando un poco de estiramiento LUT para que las imágenes tuvieran una apariencia visual similar. Entonces fue más fácil para OSSIM hacer la coincidencia final. El producto final parecía tan bueno como el que hice con la utilidad de mosaico ER Mapper.

usuario30184
fuente