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, индексируйте}, где

Параметр

Описание

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 Данные BIL из 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