2013-07-29 17 views
5

Sto facendo un progetto nel telerilevamento. Lavorare con HDF su MATLAB è molto semplice. Ma voglio implementarlo con grid computing (Ubuntu). Quindi sto provando con l'ottava. Ho file HDF4 di clorofilla. L'elaborazione normale delle immagini verrà eseguita facilmente per ottava. Ma voglio sapere di hdfread, hdftool in Octave. Sono stati aggiunti pacchetti di immagini nell'immagine di ottava. Qualcuno può dirmi come leggere e come lavorare con i dati di hdf. C'è qualche pacchetto da aggiungere. Per favore fatemi sapere questo.Come leggere i dati hdf in Octave

  • Come leggere i dati HDF
  • Come caricare i dati HDF
  • come recuperare un'immagine dai dati HDF
+0

'hdfread' e' hdftool' non sono ancora stati implementati in Octave (sto guardando alla versione 3.6.4) ... –

risposta

2

Per HDF5, Octave può caricarlo senza pacchetto aggiuntivo.

Per HDF4, è possibile convertirlo in file NetCDF utilizzando h4tonccf o OPeNDDAP hdf4_handler e quindi caricarlo tramite la chiamata NetCDF tramite il pacchetto octcdf di Octave. Forniamo un esempio completo con i codici sorgente completo di ottava qui:

http://hdfeos.org/software/octave.php

Il sotto è un esempio della NASA HDF4 trama creato da Octave tramite OPeNDAP.

Octave's plot of NASA AIRS HDF4 product

+0

Grazie per la risposta. – prabu

1

Le funzioni specifiche HDF non sono state attuate in Octave ancora. Tuttavia, Octave è in grado di gestire tale formato con il comando più standard load. Basta fare load path-to-hdf-file e dovrai caricare una struttura in memoria.

Vedere questi messaggi nell'archivio di supporto della guida: How to read HDF data e read data subsets from HDF5.

+0

Grazie per la risposta. L'ho già fatto. ma viene fornito con l'errore. Se ottava supporta hdf4 e le sue operazioni, sarà molto utile per me invece di usare matlab. – prabu

+0

@prabu devi specificare l'errore che ottieni (e la versione di Octave) se vuoi che le persone ti aiutino. – carandraug

0

Credo che si può convertire i dati hdf4 a HDF5 con appropriate conversion tools, per esempio h4toh5.

In Octave, per caricare un file .h5 (più il controllo) è semplice come:

octave:1> load secondhdf5.h5 
octave:2> whos 
Variables in the current scope: 

    Attr Name   Size      Bytes Class 
    ==== ====   ====      ===== ===== 
     dbldata  4x3       96 double 
     fltdata  4x3       96 double 
     intdata  4x3       48 int32 

Total is 36 elements using 240 bytes 

octave:3> size(dbldata) 
ans = 

    4 3 

Tra l'altro, i contenuti del 'secondhdf5.h5' sono stati i seguenti:

$ h5dump secondhdf5.h5 
HDF5 "secondhdf5.h5" { 
GROUP "/" { 
    DATASET "dbldata" { 
     DATATYPE H5T_IEEE_F64LE 
     DATASPACE SIMPLE { (3, 4)/(3, 4) } 
     DATA { 
     (0,0): 1.1, 1.2, 1.3, 1.4, 
     (1,0): 2.1, 2.2, 2.3, 2.4, 
     (2,0): 3.1, 3.2, 3.3, 3.4 
     } 
    } 
    DATASET "fltdata" { 
     DATATYPE H5T_IEEE_F32LE 
     DATASPACE SIMPLE { (3, 4)/(3, 4) } 
     DATA { 
     (0,0): 1.1, 1.2, 1.3, 1.4, 
     (1,0): 2.1, 2.2, 2.3, 2.4, 
     (2,0): 3.1, 3.2, 3.3, 3.4 
     } 
    } 
    DATASET "intdata" { 
     DATATYPE H5T_STD_I32BE 
     DATASPACE SIMPLE { (3, 4)/(3, 4) } 
     DATA { 
     (0,0): 1, 2, 3, 4, 
     (1,0): 5, 6, 7, 8, 
     (2,0): 9, 10, 11, 12 
     } 
    } 
} 
} 
1

Il supporto HDF5 in Octave < = 4.0 è destinato esclusivamente ai file scritti da Octave stessa tramite le funzioni IO file semplici. Ha molti svantaggi se i tuoi dati provengono da altrove, come non è possibile leggere un singolo set di dati arbitrario, o parte di esso.

Al momento, per le funzioni compatibili più completi e Matlab che leggono serie di dati e attributi/scrittura, vedere il modulo

https://github.com/stegro/hdf5oct

Edit: ho contribuito a questo progetto.

+0

Si prega di rivelare la propria affiliazione con il progetto da qualche parte altrimenti il ​​tuo post potrebbe essere considerato come pubblicità o spam che potrebbe essere sbagliato. – skuntsel