Файлы растров BIL, BIP и BSQ

Каналы, разделенные по строкам (BIL), попикселная запись спектральных каналов (BIP) и поканальная запись (BSQ) - три основных способа организации данных в многоканальных изображениях. BIL, BIP и BSQ не являются форматами изображений, это методы записи значений пикселов в файл. Эти файлы поддерживают отображение одно- и многоканальных изображений и могут хранить черно-белые, в градациях серого, псевдоцветные, полноцветные и мультиспектральные данные изображений.

Файлы BIL, BIP и BSQ - бинарные, они должны иметь ассоциированный заголовок в формате ASCII, чтобы ArcGIS мог их прочитать. Этот файл заголовка содержит вспомогательную информацию об изображении, такую как число строк и столбцов, наличие цветовой карты, а также широту и долготу.

ПримечаниеПримечание:

Если не применяется ключевое слово «pixeltype» со значением «signedint», предполагается, что данные используют целочисленные значения без знака (unsigned integers).

Метод BIL использует способ записи многоканальных изображений, при котором строки значений для каждого канала записываются последовательно. Например, в случае трехканального изображения, все три канала данных сначала записываются в строку 1, затем в строку 2, и т.д., пока не будет записана последняя строка изображения. На следующей диаграмме показаны данные BIL для трехканального набора данных:

Каналы, разделенные по строкам

См. пример файла BIL

Метод BIP отличается от метода BIL тем, что данные для каждого пиксела записываются поканально. Например, при записи того же трехканального изображения, данные каналов 1, 2 и 3 записываются для первого пиксела столбца 1; затем данные каналов 1, 2 и 3 записываются для первого пиксела столбца 2 и т.д.

Попикселная запись спектральных каналов

См. пример файла BIP

При поканальной записи, информация для каждого канала записывается полностью. Другими словами, данные всех пикселов канала 1 записываются в первую очередь, затем записываются все пиксели канала 2 и т.д.

Поканальная запись

См. пример файла BSQ

Файлы описания изображения

Существуют три файла описаний, которые могут использоваться вместе с файлами BIL, BIP и BSQ: файл заголовка (.hdr), в котором описывается компоновка пикселов изображения, файл цвета (.clr), в котором содержится цветовая карта, и файл статистики (.stx), в котором содержится статистика каждого канала изображения. Эти ASCII файлы можно создать в обычном текстовом редакторе, используя известную информацию об изображении.

Файл заголовка

В файле заголовка описываются данные изображения. Файл заголовка должен быть создан для каждого изображения, он должен иметь то же имя, что и файл изображения, и расширение .hdr, например:

<image>.hdr

Файл заголовка содержит набор записей, каждая из которых описывает определенный атрибут изображения. Например, запись может описывать число строк и столбцов в изображении. Формат каждой записи выглядит так:

<keyword> <value>

, где <keyword> соответствует определенному заданному атрибуту, а <value> - значению данного атрибута. Записи в заголовке могут следовать в любом порядке, но каждая из них должна начинаться с новой строки. Каждая строка файла, которая не начинается с ключевого слова, рассматривается как комментарий и игнорируется.

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

nrows—Число строк изображения. Строки располагаются параллельно оси x в системе координат карты. Значение по умолчанию отсутствует.

ncols—Число столбцов изображения. Столбцы располагаются параллельно оси y в системе координат карты. Значение по умолчанию отсутствует.

nbands—Число спектральных каналов изображения. Значение по умолчанию равно 1.

nbits—Количество бит на пиксел на канал. Допустимые значения 1, 4, 8, 16 и 32. По умолчанию, используется 8 бит на пиксел на канал. Для изображения с «реальным цветом», содержащим три канала (R,G,B) с 8 битами на пиксел для каждого канала, nbits равно 8, а nbands равно 3, чем составляет всего 24 бита на пиксел. Если nbits изображения равно 1, nbands также должно быть 1.

pixeltype—Это ключевое слово означает, что используются пикселы типа целочисленный со знаком (signed integer). Если не применяется ключевое слово «pixeltype» со значением «signedint», предполагается, что данные используют целочисленные значения без знака (unsigned integers.

byteorder—Порядок байт, в котором хранятся значения пикселов изображения. Порядок байт имеет значение для 16-битовых изображений с 2 байтами на пиксел. Допустимые значения:

  • I - Порядок байтов Intel® (Silicon Graphics®, DEC Alpha™, PC) - также известен как прямой порядок байтов (little endian)
  • M - Порядок байтов Motorola® (Sun™, HP® и др.) - также известен как обратный порядок байтов (big endian)

Порядок байтов по умолчанию соответствует порядку, использующемуся на главном компьютере, выполняющем обработку.

layout—Организация каналов в файле изображения. Допустимые значения:

  • bil—Каналы, разделенные по строкам. Это значение по умолчанию.
  • bip—Попикселная запись спектральных каналов.
  • bsq—Поканальная запись.

skipbytes—Количество байт данных изображения, которые необходимо пропустить, чтобы найти начало собственно данных изображения. Это ключевое слово позволяет пропустить любую информацию в заголовке файла. Значение по умолчанию - 0 байт.

ulxmap—x координата центра верхнего левого пиксела. Если вы задаете этот параметр, также необходимо задать ulymap; иначе, используется значение по умолчанию.

ulymap—y координата центра верхнего левого пиксела. Если вы задаете этот параметр, также необходимо задать ulxmap; иначе, используется значение по умолчанию.

xdim—Размер пиксела по оси x в единицах карты. Если вы задаете этот параметр, также необходимо задать ydim, ulxmap и ulymap; иначе, используется значение по умолчанию.

ydim—Размер пиксела по оси y в единицах карты. Если вы задаете этот параметр, также необходимо задать xdim, ulxmap и ulymap; иначе, используется значение по умолчанию.

На рисунке ниже показаны значения ulxmap, ulymap, xdim и ydim, используемые по умолчанию. Координаты карты центра верхнего левого пиксела (ulxmap, ulymap) = (0, (nrows - 1)), а центр нижнего левого пиксела (0, 0). На этом рисунке, значения ulxmap и ulymap равны (0, 3). По умолчанию x и y размеры пиксела устанавливаются как xdim = 1 и ydim = 1.

На рисунке показаны значения по умолчанию для параметров ulxmap, ulymap, xdim и ydim

bandrowbytes—Число байт на канал на строку. Это значение должно быть целочисленным. Это ключевое слово используется только с файлами BIL, при наличии дополнительных битов в конце каждого канала внутри строки, которые должны быть пропущены. Bandrowbytes может рассматриваться в качестве индекса начальной точки следующего канала данных. Поскольку bandrowbytes указывает начало каждого канала строки, его изменение приводит к смещению начальной точки следующего канала.

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

bandrowbytes = image data + extra bits
bandrowbytes

Чтобы задать ключевое слово bandrowbytes, вы должны знать схему размещения данных изображения, или, более точно, количество байт, используемых для хранения значений пикселов для каждого канала в каждой строке. Если bandrowbytes не указан, используется значение по умолчанию, вычисляемое по следующей формуле:

bandrowbytes = the smallest integer(ncols x nbits) / 8

Значение по умолчанию используется в тех случаях, когда в конце каждого канала строки отсутствуют дополнительные замыкающие биты, и когда число бит на канал на строку является наименьшим целым числом байт, которое в состоянии корректно представить данные канала; например, если данным требуется 2.5 байта, 3 байта является наименьшим целым числом байт, которые могут хранить эти данные. В этих двух случаях задавать bandrowbytes не нужно. Тем не менее, если число байт на канал на строку превышает значение по умолчанию, измените значение ключа bandrowbytes.

На следующих двух примерах показано поведение ключа bandrowbytes. В первом примере описан случай, когда замыкающие биты отсутствуют, во втором - они присутствуют.

  • Если замыкающие биты в конце канала отсутствуют, bandrowbytes равен числу байт, использующихся для хранения данных.
    bandrowbytes = image data
    bandrowbytes
    Например, дано изображение 6-на-6 с тремя каналами и 8 битами (1 байт) на пиксел, для данных изображения требуется 6 байтов на канал в строке.
    bytes per band per row = ncols x nbits
    = 6 x 8
    = 48 bits or 6 bytes
    По умолчанию, bandrowbytes установлен на 6 байтов, как показано на следующей формуле:
    bandrowbytes = (ncols x nbits) / 8
    = (6 x 8) / 8
    = 48 / 8
    bandrowbytes = 6 bytes
    Т.к. число байтов на канал в строке равно bandrowbytes, значение по умолчанию является соответствующим параметром. Поэтому, bandrowbytes не нужно задавать специально.
  • Если замыкающие биты присутствуют, ключевое слово bandrowbytes не будет равен числу бит данных на канал на строку.

    Предположим, у вас имеется трехканальное изображение из 5 строк и 5 столбцов с 4 битами на пиксел. По умолчанию, bandrowbytes является наименьшим целым числом байт, которое в состоянии корректно представить данные. В этом случае значение по умолчанию равно 3. Рассчитывается следующим образом:

    bandrowbytes = (ncols x nbits) / 8
    = (5 x 4) / 8
    = 20 / 8
    = 2.5
    = 3 (when rounded up to the nearest integer)
    Однако, для данных изображения требуется только 2,5 байта, которые рассчитываются путем умножения ncols на nbits. Поэтому, число байт, которое необходимо пропустить, составляет 0.5 (4 бита), т.е. является разницей между 3 байтами (bandrowbytes) 2.5 (байты данных изображения). На рисунке ниже показан один канал данных для одной строки изображения.
    bandrowbytes

totalrowbytes—Общее количество байт данных на строку. Ключевое слово totalrowbytes используется только тогда, когда в конце строки имеются дополнительные замыкающие биты.

totalrowbytes

Для файла BIL, totalrowbytes по умолчанию вычисляется по следующей формуле:

totalrowbytes = nbands x bandrowbytes

Значение по умолчанию предполагает, что дополнительных замыкающих бит в конце строки нет. Если они присутствуют, необходимо установить соответствующее значение. Например, для трехканального изображения с bandrowbytes равным 3, totalrowbytes, по умолчанию, составит 9. Если замыкающий бит в конце строки присутствует, установите totalrowbytes равным 10.

Для файла BIP, значение по умолчанию вычисляется по другой формуле:

totalrowbytes = (ncols x nbands x nbits) / 8

Totalrowbytes округляется до ближайшего целого числа байт, которое может корректно хранить пикселные данные строки. Например, для BIP изображения из 5 строк и 5 столбцов с тремя каналами и 4 битами на пиксел, totalrowbytes по умолчанию составит:

totalrowbytes = (ncols x nbands x nbits) / 8
= (5 x 3 x 4) / 8
= 60 / 8
= 7.5
= 8 (when rounded up to the nearest integer)
всего байтов в строке для изображения BIP

На рисунке показано значение totalrowbytes по умолчанию для изображения BIP.

Если значение totalrowbytes по умолчанию не точно отражает компоновку данных, его необходимо задать, в соответствии с числом байт каждой строки.

bandgapbytes—Число байт между каналами в изображениях формата BSQ. Значение по умолчанию равно 0.

Ниже показан типичный файл заголовка, сгенерированный для спутникового изображения формата BIL (каналы, разделенные по строкам), в котором 128-битный заголовок предшествует данным изображения.

Sample BIL header file
Lines that don't begin with a keyword are treated as comments.
nrows 1024  Comments can be placed here as well.
ncols 1024
nbands 3
nbits 8
layout bil
skipbytes 128

В следующей таблице приводится список ключей, использующихся в файле .hdr:

Ключевое слово

Допустимое значение

Значение по умолчанию

nrows

Любое целое > 0

Нет

ncols

Любое целое > 0

Нет

nbands

Любое целое > 0

1

nbits

1, 4, 8, 16, 32

8

pixeltype

SIGNEDINT

Целое число без знака

byteorder

I = Intel; M = Motorola

Как на главном компьютере

компоновка

bil, bip, bsq

bil

skipbytes

Любое целое ?

0

ulxmap

Любое число

0

ulymap

Любое число

nrows - 1

xdim

Любое число

1

ydim

Любое число

1

bandrowbytes

Любое целое > 0

Минимальное целое ? (ncols x nbits) / 8

totalrowbytes

Любое целое > 0

Для bil: nbands x bandrowbytes; для bip: минимальное целое ≥ (ncols x nbands x nbits) / 8

bandgapbytes

Любое целое ?

0

Итоговая информация о ключевых словах, которые могут использоваться в файле заголовка

Цветовой файл

Цветовой файл (.clr) является дополнительным файлом, который содержит цветовую карту одноканального псевдоцветного изображения. Если этот файл отсутствует, изображение отображается в градациях серого.

Цветовой файл содержит цвета, ассоциированные со значениями пикселов изображения. Цвета определяются с помощью цветовой модели RGB, в которой воспроизведение любого цвета достигается путем сложения трех основных цветов: красного (Red), зеленого (Green) и синего (Blue). Файл состоит из группы записей, каждая из которых начинается с новой строки и описывает цвет, соответствующий значению пиксела изображения.

Каждая запись имеет вид:

<value> <red> <green> <blue>

, где <value> - значение пиксела, а<red>, <green> и <blue> значения цветовых компонент. Сортировка записей производится по значению пиксела в порядке возрастания. Если первый знак строки не является цифрой, вся строка рассматривается как комментарий и игнорируется. Любые знаки в строке после четвертого параметра (blue) игнорируются, их можно использовать в качестве комментария.

Красная, зеленая и голубая компоненты описываются значениями в диапазоне от 0 до 255. Чем больше значение, тем больше интенсивность данного цветового компонента. По умолчанию, если запись для пиксела отсутствует, ему присваивается черный цвет. Пример цветового файла растровой карты типов почв, содержащий пиксели со значениями 11, 16, 18, 19, 21, 98 и 99, показан ниже:

Color file for Soils map
Entries are sorted in ascending order by pixel value.
 11 255 0 0 (red)
 16 255 165 0 (orange)
 18 255 255 0 (yellow)
 19 0 255 0 (green)
 21 0 0 255 (blue)
 98 0 255 255 (cyan)
 99 160 32 240 (purple)

Цветовые файлы используются только с одноканальными изображениями. Любое одноканальное изображение с цветовым файлом интерпретируется как псевдоцветное. Цветовые файлы, сопровождающие многоканальные изображения, игнорируются.

Файл статистики

Файл статистики (.stx) является дополнительным файлом, описывающим статистику многоканального или в градациях серого изображения по каждому спектральному каналу. Файл состоит из серии записей, по одной на каждый канал, которые содержат минимальное и максимальное значения пикселов, среднее, стандартное отклонение, а также два линейных параметра растяжки контраста.

Каждая запись имеет следующий формат (все значения каждого канала расположены в одной строке):

<band> <minimum> <maximum> {mean} {std_deviation}
{linear_stretch_min} {linear_stretch_max}

, где <band> - номер канала, <minimum> - минимальное значение пиксела, <maximum> - максимальное значение пиксела, {mean} - среднее, {std_deviation} - стандартное отклонение, {linear_stretch_min} - минимальное значение пиксела для растяжения контраста, {linear_stretch_max} - максимальное значение пиксела для растяжения контраста.

Значения каждого параметра находятся в одной строке. Каждая запись, которая начинается не с числового значения, рассматривается как комментарий и игнорируется. Номер канала, а также минимальное и максимальное значения, являются обязательными параметрами; среднее, стандартное отклонение, минимальная и максимальная линейная растяжка контраста - дополнительными. Используйте «#» для пропуска дополнительных параметров.

Номера каналов варьируют от 1 до nbands. Параметры linear_stretch_min и linear_stretch_max используются для растяжения контраста отображаемого изображения. Пиксели, значения которых меньше параметра linear_stretch_min отображаются черным, если значения больше linear_stretch_max - белым. Пиксели, значения которых укладываются в диапазон между параметрами минимальная и максимальная растяжка контраста, отображаются с помощью оттенков серого. Чем меньше значение пиксела, тем темнее оттенок серого.

Линейная растяжка

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

Если параметры linear_stretch_min и linear_stretch_max не указаны, они определяются по умолчанию, как среднее значение минус два среднеквадратических отклонения для linear_stretch_min, и среднее значение плюс два среднеквадратических отклонения для linear_stretch_max. Если стандартное отклонение не вычислено, минимальное и максимальное значения пикселов используются в качестве параметров растяжки контраста.

Для многоканальных изображений, каждый канал растягивается перед тем, как изображение отображается. При наличии цветового файла (.clr), линейная растяжка контраста одноканального изображения в градациях серого не используется, вместо этого, изображение обрабатывается как псевдоцветное.

Ниже приведен пример файла статистики для четырехканального спутникового снимка, имеющего 8 бит на пиксел на канал:

Image statistics file
1 2 118 67 10
Band 2 has linear contrast stretch parameters:
2 23 251 112 23 80 90
3 68 91 73 4
Band 4 does not contain values for mean and standard deviation:
4 126 198 # # 135 167

Связанные темы

9/11/2013