multibandread

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

Синтаксис

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

Описание

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

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

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

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

Примечание

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

Параметры

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

Аргумент

Описание

filename

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

size

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

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

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

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

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

precision

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

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

offset

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

interleave

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

  • 'bsq' — разделенный по каналам

  • 'bil' — Разделенный по строкам

  • 'bip' — Разделенный по пикселям

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

byteorder

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

  • 'ieee-le' — Прямой порядок байтов

  • 'ieee-be' — Обратный порядок байтов

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

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

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

Параметр

Описание

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);

Считайте любую полосу данных с помощью формата Разделенного по каналам.

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

Считайте первые две строки и столбца данных с помощью формата Разделенного по пикселям.

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

Считайте данные с помощью формата Разделенного по строкам.

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

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

delete(filename);

Пример 2

Считайте int16 данные БИЛА из tst0012.fits файла 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