Смекни!
smekni.com

Разработка программного обеспечения для фильтрации растровых изображений (стр. 1 из 6)

РЕФЕРАТ

Розробка програмного забезпечення для фільтрації растрових зображень. Дипломний проект з дисципліни «Технології програмування ГКС». Пояснювальна записка - Харків: ХНУРЕ. - 2009. – 62 с.

Предмет дослiдження: растровi зображення.

Мета проекту – систематизацiя, поглиблення i застосування знань по технологiям программування, отриманих на лекцiйних та лабораторних заняттях.

Метод дослiдження – вивчення лiтератури, написання i тестування програми на комп’ютерi.

Програма призначена для фільтрації растрових зображень.

В роботi розглядаються питання розробки програмного забезпечення для фільтрації растрових зображень. ПЗ виконує корекцію кольорів відкритих растрових зображень за допомогою фiльтрiв. Графiчнi фiльтри реалiзованi на основi точечних i просторових (матричних) перетворень.

Програмне забезпечення реалізовано у системі програмування Microsoft Visual С++ 6.0.

Ключові слова:

Растрове зображення, DDB, DIB, BMP, матриці перетворень, MDI-інтерфейс, графічні фільтри


The abstract

Development of the program maintenance for filtration of raster’s images. The course project on discipline “The Technology of Programming the FKS”. An explanatory note - Kharkiv:KNURE.-2009.- 62 р.

Object of research: raster images.

The purpose of the course project – the ordering, deepening and application of the knowledge on technologies of the programming, received on lectures and laboratory researches.

The method of research – studying the literature, writing and testing the program on the computer.

The program is assigned for filtration of raster’s images.

In this work, the questions of development of a program maintenance for filtration of raster’s images are considered. The PM realizes the correction of a color of opened raster images, with the help of a filters. Graphic filters are realized on the basis of a dot and spatial (matrix) transformations.

The program maintenance is realized in the system of programming Microsoft Visual C ++ 6.0.

Key words:

The raster image, DDB, DIB, BMP, matrixes of transformations, the MDI-interface, graphic filters.


ВВЕДЕНИЕ

Компьютерная графика объединяет довольно широкий круг операций по обработке графической информации с помощью компьютера. Компьютерной графике отводится огромная роль в современном мире.

В компьютерной графике можно выделить несколько основных направлений:

- Визуализация научных (расчетных или экспериментальных) данных. Большинство современных математических программных пакетов (например, Мар1е, Маtlab, МаthCAD) имеют средства для отображения графиков, поверхностей и трехмерных тел, построенных на основе каких-либо расчетов. Кроме того, графическая информация может активно использоваться в самом процессе вычислений.

- Геометрическое проектирование и моделирование. Это направление компьютерной графики связано с решением задач начертательной геометрии - построением чертежей, эскизов, объемных изображений с помощью программных систем, получивших название САD-системы, например АutoCAD. Существует большое количество специализированных САD-систем в машиностроении, архитектуре и т. д.

- Распознавание образов. Способность распознавать абстрактные образы считают одним из важнейших факторов, определившим развитие мыслительных способностей человека. Задача распознавания и классификации графической информации является одной из ключевых и при создании искусственного интеллекта. Уже в наши дни компьютеры распознают образы повсеместно (анализ аэро- и космических фотоснимков; системы сортировки, наведения и т. д.). Возможно, самый известный пример распознавания образов - сканирование и перевод "фотографии" текста в набор отдельных символов, формирующих слова. Такую операцию позволяет выполнить программное обеспечение многих современных сканеров.

- Изобразительное искусство. К этому направлению можно отнести разнообразную графическую рекламу: от текстовых транспарантов и фирменных знаков до компьютерных видеофильмов, обработку фотографий, создание рисунков, мультипликацию и т. д. В качестве примера популярных и довольно востребованных программ из этой области компьютерной графики можно назвать АdobePhotoshop (обработка растровых изображений), СогеlDraw (создание векторной графики), 3DS Мах (трехмерное моделирование).

- Виртуальная реальность. Реальность, даже виртуальная, подразумевает воздействия на всю совокупность органов чувств человека, в первую очередь на его зрение. К компьютерной графике можно отнести задачи моделирования внешнего мира в различных приложениях: от компьютерных игр до тренажеров.

- Цифровое видео. Все более широкое распространение получают аними-рованные изображения, записанные в цифровом формате. Это фильмы, передаваемые через компьютерные сети, цифровое, кабельное и спутниковое телевидение.


1. АНАЛИЗ ТЕХНИЧЕСКОГО ЗАДАНИЯ

В данной работе разрабатывается ПО для фильтрации растровых изображений. Графический формат BMP является аппаратно-независимым (devise-independent bitmap DIB) и наиболее удобным для данного вопроса. Для разработки программ работы с битовыми изображениями необходимо разработать свой собственный класс, поддерживающий файлы *.bmp. Кроме открытия растровых изображений программа должна выполнять цветокоррекцию открытых изображений. Цветокоррекция выполняется при помощи графических фильтров.

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

Для обработки изображений при помощи фильтров необходимо предусмотреть, как они будут уживаться между собой и взаимодействовать с остальными модулями программы. Фильтры можно реализовать в виде классов, производных от какого-то одного базового класса. В базовом классе следует определить набор методов, общих для всех фильтров. Процесс преобразования изображения выносится в отдельный поток выполнения программы. Это дает возможность контролировать не только область применения фильтра, но и продолжительность выполнения операции, т.е. возможность остановить выполнение преобразования.


2. ОПИСАНИЕ ГРАФИЧЕСКОГО ФОРМАТА

2.1 Общая информация о графическом формате

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

Графические данные обычно разделяются на два класса: векторные и растровые. Векторные данные используются для представления прямых, многоугольников, кривых и т. п., с помощью определенных в числовом виде базовых точек. Растровые данные представляют собой набор числовых значений, определяющих яркость и цвет отдельных пикселов. Пикселами (или пикселями - от английского pixel) называются минимальные элементы (цветные точки), из которых формируется растровое изображение.

Далее под растром будем понимать массив пикселов (массив числовых значений). Для обозначения массива пикселов часто используется термин bitmap (битовая карта). В bitmap каждому пикселу отводится определённое число битов (одинаковое для всех пикселов изображения). Это число называется битовой глубиной пиксела или цветовой глубиной изображения, т.к. от количества битов, отводимых на один пиксел, зависит количество цветов изображения. Наиболее часто используется цветовая глубина 1, 2, 4, 8, 15, 16, 24 и 32 бита.

Растровый формат используется для хранения растровых данных. Файлы такого типа особенно хорошо подходят для хранения изображений реального мира, например оцифрованных фотографий. Растровые файлы содержат битовую карту изображения и ее спецификацию. Наиболее распространенные растровые форматы: ВМР, ТIFF, GIF, РСХ, JРЕС.

В данном проекте будет использоваться ВМР формат.


2.2 Общее описание формата ВМР

Microsoft Windows Bitmap (ВМР) - собственный растровый формат операционной системы Windows. Формат основан на внутренних структурах представления растровых данных Windows. Формат совершенствовался и развивался по мере появления новых версий Windows. Первоначально был очень простым, содержал лишь растровые данные и не поддерживал сжатие. Растровые данные представляли собой индексы в цветовой палитре, которая была фиксированной и определялась графической платой. Поэтому этот формат называют аппаратно-зависимым (Device Dependent Bitmap, DDB), он был ориентирован на графические платы для IВМ РС (СGА,EGA, НERCULES) и другие.

Развитием формата ВМР стало введение в него поддержки изменяемой цветовой палитры. Это позволило хранить информацию о цветах вместе с растровыми данными. Такое изменение формата позволило сделать хранимые изображения аппаратно-независимыми (Devise Independent Bitmap, DIB). Иногда аббревиатуру DIВ используют как синоним ВМР.

2.3 Структура файла ВМР

Файлы ОБВ исходного формата ВМР содержали два раздела: заголовок файла и растровые данные (рис. 2.3.1).

Заголовок файла
Растровые данные

Рисунок 2.3.1 - Структура файла DDВ исходного формата ВМР

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



Заголовок файла
Заголовок растра
Палитра цветов
Растровые данные

Рисунок 2.3.2 - Структура ВМР-файла

Рассмотрим в деталях структуру данных файла формата ВМР версии 3.x, появившегося с операционной системой Microsoft Windows 3.x. Этот формат поддерживается большинством существующих в настоящее время приложений.

Все версии формата ВМР начинаются с 14-байтового заголовка-структуры.

Листинг 2.3.1 - Структура данных файла формата ВМР версии 3.x

BITMAPFILEHEADER :

Typedef struct tagBITMAPHEADER

{ WORD bfType; //тип файла, должен быть 4d42h («ВМ»)

DWORD bfSise //размер файла в байтах

WORD bfReserved1; //зарезервировано, должен быть 0

WORD bfReserved2; // зарезервировано, должен быть 0

DWORD bfOffBits; //смещение в байтах до начала растровых данных

} BITMAPFILEHEADER;

// За заголовком файла следует заголовок растра. Его длина составляет 40 байтов.

Typedef struct tagBITMAPINFOHEADER

{DWORD biSize; //размер этого заголовка в байтах

LONG biWidth ; //ширина изображения в пикселах

LONG biHeight; //высота изображения в пикселах

WORD biplanes; //количество цветовых плоскостей

WORD bibitCount; //количество битов на пиксел

DWORD biCompression; //используемые методы сжатия