Gibt es eine Möglichkeit, das Dateiformat BSQ im IDL ?
Kommentare
- idl? Bitte erweitern Sie
- Nicht sicher, ob es dies hilft. Wir ' benötigen weitere Informationen, um eine bessere Antwort zu erhalten.
- Links für BSQ und IDL hinzugefügt. Das einzige anständige Diagramm für BSQ, das ich finden konnte, war in der Esri-Hilfe. Ich ' schlage jedoch nicht vor, dass Esri-Software benötigt wird.
Antwort
Verwenden Sie IDL mit ENVI oder alleine?
Wenn Sie IDL mit ENVI verwenden (bei weitem am einfachsten, wenn Sie haben ENVI), dann funktionieren die Standardbefehle zum Lesen von ENVI-Dateien. Beispiel:
ENVI_SELECT, fid=fid, dims=dims, pos=pos ; Shows a dialog box to allow you to select a file image = ENVI_GET_DATA(fid=fid, dims=dims, pos=pos) ; Gets the data into an array called image
Wenn Sie kein ENVI haben, ist es etwas schwieriger. Sie können die BSQ-Daten mithilfe der Standardbefehle zum Lesen von IDL-Binärdateien lesen (siehe http://www.msi.umn.edu/software/idl/tutorial/idl-rwd.html#Reading%20Binary%20Data , müssen dies jedoch tun kennen die Abmessungen des Bildes (Samples, Linien und Bänder), um es sinnvoll aufteilen zu können. Diese Informationen werden häufig in einer .hdr-Datei gespeichert, die ENVI automatisch liest, wenn Sie die oben beschriebene Methode verwenden.
Antwort
IDL liest die binäre Dateiformatstruktur von Band Sequential (BSQ) als [Spalte, Zeile, Band]
BSQ, BIL and BIP are multiband encodings where: a 8-bit Grey scale image would encode 1 band of data a 24-bit RGB additive color image would be 3 bands of data a 32-bit CMYK subtractive color image would be 4 bands of data Discrete multispectral images, or contiguous hyperspectral images would have increasing numbers of bands.
Wie von @robintw angegeben, müssen Sie also die Abmessungen und die Quelle / den Sensor Ihres Bildes kennen. Abgesehen von der BSQ-Codierung müssen Sie vier Dinge wissen, um die Daten in eine zu lesen Interaktives IDL-Array. Sie benötigen die Spaltenanzahl, die Zeilenanzahl, die Bandanzahl und den Datentyp. Natürlich müssen Sie für jede räumliche Arbeit außerhalb von IDL die nominale Pixelgröße und die Koordinaten von mindestens 3 Kontrollpunkten für die Bildregistrierung kennen Und weitere Details zu p Opulieren Sie eine ESRI Grid World-Datei.
Zum Dekodieren Ihrer BSQ-Daten können Sie zwischen binären IDL-Datentypen wählen zur Hand: Um die Daten zu „öffnen“, erstellen Sie eine neue IDL-Prozedur.
make array of (columns,rows,bands) assign to working_array open the bsq_image for reading nested loops to read-in binary_values for each band for each row for each column read the binary_value of type from the bsq_image write the data to the working_array display working_array ;;ordered as needed for false color aesthetics
Kommentare
- @Yudine, sollte es einen Anhang oder einige Details geben?
- @ Stuart, dies sind die Dateidetails. ENVI description = {Ergebnis der Dateigröße, x Größenänderungsfaktor: 1,000000, y Größenänderungsfaktor: 1,000000. [Do 13 Jan 18:15:18 2011]} Samples = 338 Zeilen = 308 Bänder = 125 Header-Offset = 0 Dateityp = ENVI Standard-Datentyp = 2 Interleave = BSQ-Sensortyp = Unbekannte Bytereihenfolge = 0 x Start = 459 y start = 1735 Anzahl der Bänder = 125
- @Yudine, es sieht so aus, als hätten Sie alles, was Sie brauchen, um das Bild in ein IDL-Array einzulesen. 338 Beispiele – > Spalten, 308 Zeilen – > Zeilen, 125 Bänder. Datentyp 2 Ganzzahl (wahrscheinlich 0-255). Und die Bytereihenfolge ist 0, dh Little Endian, also direkt auf einen Windows-PC lesen (müsste transformieren (Swap_If_Big_Endian), wenn a 1. Erstellen Sie also einen neuen Pro in der IDLDE-GUI und folgen Sie dem Pseudocode. Ein Lesen von Michael Todd ' Der obige Hinweis mit dem Link zu einer Klassenübung bei UIdaho sollte Ihnen bei der Syntax des Codes helfen. Dann müssen Sie nur noch entscheiden, welche Bänder im Array angezeigt werden sollen (125 bis) kombinieren.
Antwort
Ich habe keine Erfahrung mit bsq oder idl, aber da gdal bsq unterstützt Sie könnten versuchen, Ihre Datei mit gdal_translate in einen Geotiff zu konvertieren. IDL scheint das Lesen von TIF-Dateien zu unterstützen.