multibandread

Чтение полосно-перемеженных данных из двоичного файла

Синтаксис

X = multibandread(filename,size,precision,offset,interleave,byteorder)
X = multibandread(...,subset1,subset2,subset3)

Описание

X = multibandread(filename,size,precision,offset,interleave,byteorder) считывает полосно-последовательные (BSQ), полосу - перемеженные по линии (BIL) или полосы - перемеженные по пикселям (BIP) данные из двоичного файла filename. The filename вход задается как вектор символов или строковый скаляр. Эта функция определяет полосу как третью размерность в трехмерном массиве, как показано на этом рисунке.

Можно использовать параметры multibandread чтобы задать многие аспекты операции чтения, например, какие полосы данных нужно считать. Для получения дополнительной информации см. параметры».

X является 2-D массивом, если считывается только одна полоса; в противном случае это 3-D. X возвращается как массив типа данных double по умолчанию. Используйте precision параметр для сопоставления данных с различными типами данных.

X = multibandread(...,subset1,subset2,subset3) считывает подмножество данных в файле. Для задания подмножества данных по строке, столбцу и размерностям полосы данных можно использовать до трех параметров подмножества. Для получения дополнительной информации см. раздел «Параметры подсети».

Примечание

В дополнение к файлам BSQ, BIL и BIP многодиапазонные изображения могут храниться с использованием формата файла TIFF. В этом случае используйте imread функция для импорта данных.

Параметры

Эта таблица описывает аргументы, принятые multibandread.

Аргумент

Описание

filename

Вектор символов или строковый скаляр, содержащий имя файла, который будет считываться.

size

Трехэлементный вектор целых чисел, состоящий из   [height, width, N], где

  • height - общее количество строк

  • width - общее количество элементов в каждой строке

  • N - общее количество полос.

Это будут размерности данных, если они считываются полностью.

precision

Вектор символов или строковый скаляр, задающий формат считываемых данных, такой как 'uint8', 'double', 'integer*4', или любой другой точности, поддерживаемой fread функция.

Примечание: Вы также можете использовать precision параметр для определения формата выходных данных. Для примера читать uint8 данные и выход uint8 array, задайте точность 'uint8=>uint8' (или '*uint8'). Чтение uint8 данные и выход их в MATLAB® программное обеспечение с одинарной точностью, задайте 'uint8=>single'. Посмотрите fread для получения дополнительной информации.

offset

Скаляр, задающий нулевое местоположение первого элемента данных в файле. Это значение представляет количество байтов от начала файла до места начала данных.

interleave

Формат, в котором хранятся данные, заданный как одно из следующих значений:

  • 'bsq'- Полосно-последовательный

  • 'bil'- Полоса - перемежение - по линиям

  • 'bip'- Полоса-перемеженная-на-пикселе

Для получения дополнительной информации об этих методах чередования, см. multibandwrite страница с описанием.

byteorder

Вектор символов или строковый скаляр, задающий упорядоченное расположение байтов (машинный формат), в котором хранятся данные, например

  • 'ieee-le' - Little-Endian

  • 'ieee-be' - Big-Endian

Посмотрите fopen полный список поддерживаемых форматов.

Параметры подмножества

Можно задать до трех параметров подмножества. Каждый параметр поднастройки является массивом ячеек с тремя элементами, {dim, method, индекс}, где

Параметр

Описание

dim

Размерность для подмножества. Задается как любое из следующих значений:

  • 'Column'

  • 'Row'

  • 'Band'

method

Метод подмножества. Задается как одно из следующих значений:

  • 'Direct'

  • 'Range'

Если вы оставляете этот элемент массива ячеек подмножества, multibandread использует 'Direct' как значение по умолчанию.

index

Если method является 'Direct', index - вектор, задающий индексы для чтения по размерности полосы пропускания.

Если method является 'Range', index является трехэлементным вектором [start, increment, stop] задание области значений и размера шага для чтения вдоль размерности, заданной в dim. Если index является двухэлементным вектором, multibandread принимает, что значение increment является 1.

Примеры

Пример 1

Setup начальных параметров для набора данных.

rows=3; cols=3; bands=5;
filename = tempname;

Определите набор данных.

fid = fopen(filename, 'w', 'ieee-le');
fwrite(fid, 1:rows*cols*bands, 'double');
fclose(fid);

Считывайте каждую другую полосу данных в формате Band-Sequential.

im1 = multibandread(filename, [rows cols bands], ...
                    'double', 0, 'bsq', 'ieee-le', ...
                    {'Band', 'Range', [1 2 bands]} )

Считайте первые две строки и столбцы данных в формате Band-Interleaved-by-Pixel.

im2 = multibandread(filename, [rows cols bands], ...
                    'double', 0, 'bip', 'ieee-le', ...
                    {'Row', 'Range', [1 2]}, ...
                    {'Column', 'Range', [1 2]} )

Считывайте данные в формате Band-Interleaved-by-Line.

im3 = multibandread(filename, [rows cols bands], ...
                    'double', 0, 'bil', 'ieee-le')

Удалите файл, созданный в этом примере.

delete(filename);

Пример 2

Чтение int16 Данные BIL из файла FITS tst0012.fits, начиная с байта 74880.

im4 = multibandread('tst0012.fits', [31 73 5], ...
                    'int16', 74880, 'bil', 'ieee-be', ...
                    {'Band', 'Range', [1 3]} );
im5 = double(im4)/max(max(max(im4)));
imagesc(im5);

См. также

| | | |

Представлено до R2006a