Назад в библиотеку

ОБРАБОТКА РАСТРОВЫХ ИЗОБРАЖЕНИЙ, ПРЕДСТАВЛЕННЫХ В ФОРМАТЕ DIB

Авторы: А.В. Харченко (представил д.т.н., проф. Г.П. Кулемин)

Аннотация

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

В процессе ультразвукового и радиолокационного зондирования объектов, а также сканирования изображений, получают графические изображения, которые сохраняются в памяти ПЭВМ в виде файлов на диске [1,2]. Наиболее распространенным форматом представления и хранения графической информации является аппаратно - независимый растровый формат DIB (Device Independent Bitmap). Однако при работе с данным форматом пользователь не имеет прямого доступа к битовому образу.

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

Подобные преобразования могут быть выполнены при помощи библиотечных подпрограмм в системе Windows. Например, в библиотеке языка Delphi содержится объект Timage, обеспечивающий вывод на экран изображения форматов BMP, WMF и ICO. Свойство Pixels позволяет получить доступ к каждому пикселю изображения на экране как к двумерному массиву. Однако такой способ работы с графикой может эффективно использоваться только на стадиях моделирования и проверки методик обработки изображений. Он требует достаточно больших ресурсов компьютера и плохо приспособлен для решения задач реального времени. При нехватке ресурсов существенно падает быстродействие выполнения программ.

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

Для преобразования *.bmp файла в массив данных, удобных для последующей обработки графической информации, необходимо:

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

pic1

В качестве примера рассмотрим заголовок файла, описывающего шестнадцатицветный рисунок (рис. 1а) размером 640 * 480 пикселей. Он имеет вид: 42 4D - 76 58 02 00 - 00 00 - 00 00 - 76 00 00 00.

pic2

Рис. 1. Исходное (а) и обработанное (б) изображения

Содержание заголовка интерпретируется следующим образом:

42 4D – идентификатор, он соответствует символам «BM» (Bit Map);

76 58 02 00 – файл имеет размер 153718 байт;

00 00 - 00 00 – два зарезервированных поля;

76 00 00 00 – от начала файла до начала битового образа 118 байт.

Атрибуты графического изображения и коды палитры содержатся во втором заголовке. Он находится непосредственно за первым и имеет структуру BITMAPINFO, представленную в табл. 2, которая состоит из двух частей. Первая часть BITMAPINFOHEADER описывает размеры, разрешение и другие атрибуты битового образа. Вторая содержит массив данных, соответствующих структуре RGBQUAD, определяющий цветовую палитру.

pic3

Данные этого заголовка используются в качестве параметров при инициализации графического режима. Графический режим выбирается в соответствии с возможностями используемой операционной системы и зависит от количества цветов и размера изображения. Для настройки палитры используются элементы массива структур RGBQUAD, их значения заносятся в соответствующие регистры графического адаптера. Фрагмент программы настройки палитры при использовании компилятора Borland Turbo C++ представлен на рис. 2. Для вывода на экран изображения достаточно считать битовый образ и разместить его в видеопамяти. Для большинства систем это старшие адреса оперативной памяти, к которой имеется непосредственный доступ. Фрагмент программы считывания битового образа показан на рис. 3.

pic4

Рис. 2. Фрагмент программы настройки палитры

pic5

Рис. 3. Фрагмент программы считывания битового образа

При последующей обработке графической информации (фильтрации, выделении контуров, сжатии и т.д.) все изменения будут отображаться на экране компьютера в реальном времени. В качестве примера на рис. 1 б представлены результаты оконтуривания изображения левого желудочка сердца, полученного в процессе ультразвукового сканирования. Оконтуривание было выполнено с использованием специальной процедуры интерполяции и изложенной выше методики преобразования, что обеспечило большую оперативность измерения параметров левого желудочка и формирования признаков кардиологического заболевания.

Перечень источников

  1. Кенцл Т. Форматы файлов Internet. – СПб: Питер, 1997. – 320 с.
  2. Бондарев В.Н., Трёстер Г., Чернега В.С. Цифровая обработка сигналов. – Севастополь: Изд-во СевГТУ, 1999. – 398 с.