Mosaico algunas imágenes con gdal y me gustaría mejorar el resultado final mediante el uso de una capa alfa desvanecimiento / gradual hacia el borde de cada imagen para eliminar los bordes afilados en el medio del mosaico. El problema que tengo es que la parte de cada imagen individual con la capa alfa gradual está enmascarando las imágenes debajo de ella en el mosaico final, en lugar de ser semitransparente, como se muestra a continuación:
Idealmente, me gustaría que una imagen se desvanezca en la siguiente usando esta transparencia gradual.
Los pasos que realizo para generar el mosaico son los siguientes:
Agregue gcps a las imágenes originales para geolocalizarlas y orientarlas adecuadamente (hecho a su vez en cada imagen):
gdal_translate -of GTiff -a_srs EPSG:4326 -a_srs EPSG:4326 -gcp 1616 0 -88.2728612066 40.5175787437 -gcp <etc., etc.> <original_image_with_gradual_alpha>.tif <image_with_gradual_alpha_and_gcps>.tif
Deforma las imágenes en nuevos geotiffs que estén orientados correctamente (hecho a su vez en cada imagen):
gdalwarp -s_srs EPSG:4326 -t_srs EPSG:4326 -dstnodata 0 <image_with_gradual_alpha_and_gcps>.tif <warped_geotiff_with_alpha>.tif
Combina todas las imágenes deformadas en un solo mosaico:
gdalbuildvrt -srcnodata 0 mosaic.vrt <warped_geotiff_with_alpha_root>*.tif
gdal_translate mosaic.vrt mosaic.tif
La imagen que vinculé es mosaic.tif.
gdalinfo para un archivo de entrada de muestra:
Driver: GTiff/GeoTIFF
Files: dsc00562.tif
Size is 1616, 1080
Coordinate System is `'
Metadata:
TIFFTAG_RESOLUTIONUNIT=2 (pixels/inch)
TIFFTAG_XRESOLUTION=350
TIFFTAG_YRESOLUTION=350
Image Structure Metadata:
INTERLEAVE=PIXEL
Corner Coordinates:
Upper Left ( 0.0, 0.0)
Lower Left ( 0.0, 1080.0)
Upper Right ( 1616.0, 0.0)
Lower Right ( 1616.0, 1080.0)
Center ( 808.0, 540.0)
Band 1 Block=1616x1 Type=Byte, ColorInterp=Red
Mask Flags: PER_DATASET ALPHA
Band 2 Block=1616x1 Type=Byte, ColorInterp=Green
Mask Flags: PER_DATASET ALPHA
Band 3 Block=1616x1 Type=Byte, ColorInterp=Blue
Mask Flags: PER_DATASET ALPHA
Band 4 Block=1616x1 Type=Byte, ColorInterp=Alpha
gdalinfo para el geotiff deformado con capa alfa gradual:
Driver: GTiff/GeoTIFF
Files: geo_dsc00603.tif
Size is 1944, 1356
Coordinate System is:
GEOGCS["WGS 84",
DATUM["WGS_1984",
SPHEROID["WGS 84",6378137,298.257223563,
AUTHORITY["EPSG","7030"]],
AUTHORITY["EPSG","6326"]],
PRIMEM["Greenwich",0],
UNIT["degree",0.0174532925199433],
AUTHORITY["EPSG","4326"]]
Origin = (-88.275727919349990,40.518829195724997)
Pixel Size = (0.000001599004942,-0.000001599004942)
Metadata:
AREA_OR_POINT=Area
TIFFTAG_RESOLUTIONUNIT=2 (pixels/inch)
TIFFTAG_XRESOLUTION=350
TIFFTAG_YRESOLUTION=350
Image Structure Metadata:
INTERLEAVE=PIXEL
Corner Coordinates:
Upper Left ( -88.2757279, 40.5188292) ( 88d16'32.62"W, 40d31' 7.79"N)
Lower Left ( -88.2757279, 40.5166609) ( 88d16'32.62"W, 40d30'59.98"N)
Upper Right ( -88.2726195, 40.5188292) ( 88d16'21.43"W, 40d31' 7.79"N)
Lower Right ( -88.2726195, 40.5166609) ( 88d16'21.43"W, 40d30'59.98"N)
Center ( -88.2741737, 40.5177451) ( 88d16'27.03"W, 40d31' 3.88"N)
Band 1 Block=1944x1 Type=Byte, ColorInterp=Red
NoData Value=0
Band 2 Block=1944x1 Type=Byte, ColorInterp=Green
NoData Value=0
Band 3 Block=1944x1 Type=Byte, ColorInterp=Blue
NoData Value=0
Band 4 Block=1944x1 Type=Byte, ColorInterp=Alpha
NoData Value=0
gdalinfo para el mosaico final:
Driver: GTiff/GeoTIFF
Files: mosaic.tif
Size is 5702, 6846
Coordinate System is:
GEOGCS["WGS 84",
DATUM["WGS_1984",
SPHEROID["WGS 84",6378137,298.257223563,
AUTHORITY["EPSG","7030"]],
AUTHORITY["EPSG","6326"]],
PRIMEM["Greenwich",0],
UNIT["degree",0.0174532925199433],
AUTHORITY["EPSG","4326"]]
Origin = (-88.278946072799997,40.524561377550008)
Pixel Size = (0.000001509761581,-0.000001509761581)
Metadata:
AREA_OR_POINT=Area
Image Structure Metadata:
INTERLEAVE=PIXEL
Corner Coordinates:
Upper Left ( -88.2789461, 40.5245614) ( 88d16'44.21"W, 40d31'28.42"N)
Lower Left ( -88.2789461, 40.5142255) ( 88d16'44.21"W, 40d30'51.21"N)
Upper Right ( -88.2703374, 40.5245614) ( 88d16'13.21"W, 40d31'28.42"N)
Lower Right ( -88.2703374, 40.5142255) ( 88d16'13.21"W, 40d30'51.21"N)
Center ( -88.2746417, 40.5193935) ( 88d16'28.71"W, 40d31' 9.82"N)
Band 1 Block=5702x1 Type=Byte, ColorInterp=Red
NoData Value=0
Band 2 Block=5702x1 Type=Byte, ColorInterp=Green
NoData Value=0
Band 3 Block=5702x1 Type=Byte, ColorInterp=Blue
NoData Value=0
Band 4 Block=5702x1 Type=Byte, ColorInterp=Alpha
NoData Value=0
He incluido una imagen de muestra después de cada etapa del proceso y el mosaico final en un enlace de Dropbox aquí : puedo proporcionar el conjunto de imágenes completo si es necesario.
fuente
Respuestas:
El problema con su flujo de trabajo no está vinculado a la capa alfa, sino al hecho de que solo se usa la última imagen cuando crea un vrt.
doc gdalmerge
gdalbuildvrt doc:
De hecho, el área transparente es simplemente transparente y no hay nada que ver debajo.
Si desea utilizar alguna combinación, debe hacerlo utilizando gdalwarp: maneja las bandas alfa y la combinación en función de una distancia dada en píxeles (-cblend distance)
fuente