SNAP vs. GDAL vs. Orfeo - reescala de imagen, corte de histograma

14

Trabajo con una imagen Sentinel-2 .jp2 (banda roja, 10950 x 10950 píxeles). Mi objetivo es alcanzar el mismo resultado que SNAP hace con un script de Python. Consulte el método y los parámetros de SNAP:

Asíqueestaesmireferencia(resultadoconSNAP),quieroalcanzaresteresultado(representaciónenescaladegrisesdeQGIS,corteacumulativo-2/98%):

AsíqueintentéreplicarloconGDAL:

importnumpyasnpfromosgeoimportgdal,gdal_arrayinput="d:/bitbucket/cnn-lcm/T33TWM_A012703_20171127T100339_B04.jp2"
output = "d:/bitbucket/cnn-lcm/T33TWM_A012703_20171127T100339_B04_gdal.tif"

dataset = gdal.Open(input)
array = dataset.ReadAsArray()

percentile_025 = np.percentile(array, 2.5) # 349.0
percentile_975 = np.percentile(array, 97.5) # 3735.0

command = 'gdal_translate -scale ' + str(percentile_025) + ' ' + str(percentile_975)+ ' 0 255 -of GTiff -ot Byte' + ' ' + input + ' ' + output

os.system(command)

El resultado de GDAL no es el mismo, es un poco más brillante, las áreas blancas son más grandes. Los valores no son los mismos en el panel de capas (representación en escala de grises de QGIS, corte acumulativo - 2/98%):

ElcódigodeOrfeo:

importotbApplicationConvert=otbApplication.Registry.CreateApplication("Convert")
Convert.SetParameterString("in", "d:/bitbucket/cnn-lcm/T33TWM_A012703_20171127T100339_B04.jp2")
Convert.SetParameterString("out", "d:/bitbucket/cnn-lcm/T33TWM_A012703_20171127T100339_B04_hcut.tif")
Convert.SetParameterString("type","linear")
Convert.SetParameterString("hcp.high","2.5")
Convert.SetParameterString("hcp.low","2.5")
Convert.ExecuteAndWriteOutput()

Rescale = otbApplication.Registry.CreateApplication("Rescale")
Rescale.SetParameterString("in", "d:/bitbucket/cnn-lcm/T33TWM_A012703_20171127T100339_B04_hcut.tif")
Rescale.SetParameterString("out", "d:/bitbucket/cnn-lcm/T33TWM_A012703_20171127T100339_B04_orfeo.tif")
Rescale.SetParameterOutputImagePixelType("out", 1)
Rescale.SetParameterFloat("outmin", 0)
Rescale.SetParameterFloat("outmax", 255)
Rescale.ExecuteAndWriteOutput()

El resultado de Orfeo es muy similar a GDAL (solo 1-2 diferencias de valor en píxeles). Y hay franjas grandes y problemáticas en el medio (representación en escala de grises de QGIS, corte acumulativo - 2/98%):

Asíquefinalmentemispreguntas:

¿Esposibleeliminarlasdiferencias?¿EsposiblealcanzarexactamenteelresultadodeSNAP?Ycomo?

Descargarenlaceadatos: enlace

    
pregunta pnz 29.12.2017 - 22:46

0 respuestas

Lea otras preguntas en las etiquetas