exponenta event banner

multibandread

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

Синтаксис

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

Описание

X = multibandread(filename,size,precision,offset,interleave,byteorder) считывает из двоичного файла данные band-sequential (BSQ), band-intervaved-by-line (BIL) или band-interaved-by-pixel (BIP) filename. filename ввод задается как вектор символа или скаляр строки. Эта функция определяет полосу в качестве третьего размера в массиве 3-D, как показано на этом рисунке.

Можно использовать параметры 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 данные и вывод a uint8 массив, укажите точность 'uint8=>uint8' (или '*uint8'). Читать uint8 данные и вывод их в программном обеспечении MATLAB ® с единой точностью, указать'uint8=>single'. Посмотрите fread для получения дополнительной информации.

offset

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

interleave

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

  • 'bsq'- Диапазон-Последовательность

  • 'bil'- Чередование диапазонов по линиям

  • 'bip'- Чередование диапазонов по пикселям

Дополнительные сведения об этих методах чередования см. в разделе multibandwrite справочная страница.

byteorder

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

  • 'ieee-le' - Little-endian

  • '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

Настройка начальных параметров для набора данных.

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