Existe uma maneira de abrir o formato de arquivo BSQ em IDL ?
Comentários
- idl? expanda
- Não tenho certeza se isso vai ajudar. ' Precisamos de mais informações para fornecer uma resposta melhor.
- Links adicionados para BSQ e IDL. O único diagrama decente para BSQ que pude encontrar foi na ajuda do Esri, eu ' não estou sugerindo que o software Esri seja necessário.
Resposta
Você está usando IDL com ENVI, ou sozinho?
Se você estiver usando IDL com ENVI (de longe o mais fácil se você tem ENVI), então os comandos de leitura de arquivo ENVI padrão funcionarão. Por exemplo:
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
Se você não tiver ENVI, é um pouco mais difícil. Você pode ler os dados BSQ usando comandos de leitura de arquivo binário IDL padrão (consulte http://www.msi.umn.edu/software/idl/tutorial/idl-rwd.html#Reading%20Binary%20Data , mas você “precisará conheça as dimensões da imagem (amostras, linhas e bandas) para poder dividi-la de maneira sensata. Essas informações costumam ser armazenadas em um arquivo .hdr, que o ENVI lê automaticamente quando você usa o método acima.
Resposta
IDL lê a estrutura do formato de arquivo binário Band Sequential (BSQ) como [Column, Row, 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.
Portanto, conforme observado por @robintw, você precisa saber as dimensões e a fonte / sensor de sua imagem. Além da codificação BSQ, você precisa saber quatro coisas para ler os dados em um Matriz interativa IDL. Você precisa da contagem de colunas, contagem de linhas, contagem de bandas e tipo de dados. Claro, para qualquer trabalho geoespacial fora da IDL, você precisaria saber o tamanho nominal do pixel e as coordenadas de pelo menos 3 pontos de controle para registro de imagem . E detalhes adicionais para p opule um arquivo ESRI Grid World.
Para decodificar seus dados BSQ, as opções de tipo de dados binários IDL são
0 Undefined 1 Byte 2 Integer 3 Longword Integer 4 Floating point 5 Double-precision floating 6 Complex 7 String 8 Structure 9 Double-precision complex 10 Pointer 11 Object reference 12 Unsigned Integer 13 Unsigned Longword Integer 14 64-Bit Integer 15 Unsigned 64-Bit Integer
Portanto, com o mínimo de informação em mãos: para “abrir” os dados, você cria um novo procedimento IDL
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
Comentários
- @Yudine, deve haver um anexo ou algum detalhe?
- @ Stuart, estes são os detalhes do arquivo ENVI description = {Resultado de redimensionamento do arquivo, fator de redimensionamento x: 1.000000, fator de redimensionamento y: 1.000000. [Qui 13 de janeiro de 18:15:18 de 2011]} amostras = 338 linhas = 308 bandas = 125 cabeçalho de deslocamento = 0 tipo de arquivo = ENVI Tipo de dados padrão = 2 intercalação = bsq tipo de sensor = Ordem de bytes desconhecida = 0 x início = 459 y start = 1735 Número de bandas = 125
- @Yudine, parece que você tem tudo o que precisa para ler a imagem em um array IDL. 338 amostras – > colunas, 308 linhas – > linhas, 125 bandas. Tipo de dados 2 inteiro (provavelmente 0-255). E a ordem dos bytes é 0, ou seja, Little Endian, tão diretamente lido em um PC Windows (teria que se transformar (Swap_If_Big_Endian) se um 1. Portanto, crie um novo Pro na GUI do IDLDE e siga o pseudo código. Uma leitura de Michael Todd ' s nota acima com o link para um exercício de classe em UIdaho deve ajudá-lo com a sintaxe do código. Então, seu único problema será decidir quais bandas no array exibir, 125 a combine.
Resposta
Não tenho experiência com bsq ou idl, mas como gdal suporta bsq , você pode tentar usar gdal_translate para converter seu arquivo em um geotiff. IDL parece ser compatível com a leitura de arquivos tif.