Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
NIRS9_Tereschenko_v3.docx
Скачиваний:
28
Добавлен:
04.06.2015
Размер:
2 Мб
Скачать
☆
  1. Руководство разработчика

  1. Вводная часть

Разработанное в ходе физической реализации решение состоит из двух компонентов:

    1. Подключаемая библиотека ImgPreProcessing

    2. Программа с графическим интерфейсом NIRS9

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

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

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

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

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

Исходный код библиотеки и приложения после компиляции теоретически возможно использовать под операционными системами семейств LinuxиMacOS. Сборка, полученная в результате физической реализации, предназначена для использования на компьютерах под управлениемWindows.

Основной способ подключить библиотеку к программе – перед сборкой добавить заголовочные файлы imgpreprocessing.hиImgPreProcessing_global.hв проект программы, а файл библиотеки скопировать в ее текущий каталог. Для использования функций библиотеки в коде программы необходимо с помощью директивы #includeдобавить ссылку на заголовочный файлimgpreprocessing.h.

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

В требованиях к установленному ПО содержаться программная платформа QtFrameworkи компиляторC/C++MinGW, библиотеки которых необходимы для запуска программы. Однако, ее можно использовать даже на "чистом" компьютере, не содержащем вышеуказанные средства разработки. Для этого необходимо поместить соответствующие библиотеки в текущий каталог программы.

  1. Структура библиотекиImgPreProcessing

Весь функционал расположен в классе ImgPreProcessingс отделением описания от реализации. Исходный код библиотеки представлен в проектеQtCreator, состоящем из нескольких файлов:

  • ImgPreProcessing.pro – файл проекта Qt. Содержит данные о включаемых в проект файлах и информацию для сборки.

  • imgpreprocessing.h – файл заголовка C++. Содержит определение класса.

  • ImgPreProcessing_global.h – файл заголовка C++. Содержит макросы для импорта/экспорта класса

  • imgpreprocessing.cpp– файл исходниковC++. Содержит реализацию методов класса

Рисунок 38. Файловая структура проекта ImgPreProcessing.

Результатом сборки проекта является файл динамически подключаемой библиотеки с расширением .dll.

Определение класса ImgPreProcessing:

Подключение глобального заголовка программы

#include "ImgPreProcessing_global.h"

Подключение заголовка OpenCV

#include <opencv2/opencv.hpp>

class IMGPREPROCESSINGSHARED_EXPORT ImgPreProcessing

{

Защищенные члены класса: поля

private:

Исходное загружаемое изображение

IplImage* img;

Выходное обработанное изображение

IplImage* dst;

Исходное изображение в цветовой модели HSV (для изменения Hue)

IplImage* img_hsv;

Выходное изображение в цветовой модели HSV (для изменения Hue)

IplImage* dst_hsv;

Доступные члены класса: конструкторы и методы

public:

Конструктор по умолчанию (без параметров)

ImgPreProcessing();

Конструктор с параметром (имя файла изображения)

ImgPreProcessing(const char* filename);

Метод для вывода исходного изображения на экран

void ImgShow();

Метод для вывода выходного изображения на экран

void DstShow();

Метод для сохранения выходного изображения

void DstSave(const char* filename);

Метод для размытия изображения по Гауссу

void Gaussian(int appSize = 3);

Метод для линейного усреднения пикселей изображения по соседним

void Blur(int appSize = 3);

Метод для медианной фильтрации изображения

void Median(int appSize = 3);

Метод для фильтрации изображения фильтром Light-Sharpen

void LightSharpen();

Метод для применения наращивания

void Dilation(int appSize = 3);

Метод для применения эрозии

void Erosion(int appSize = 3);

Метод для применения размыкания

void MathOpening(int appSize = 3);

Метод для применения замыкания

void MathClosing(int appSize = 3);

Метод для изменения контраста

void ChangeContrast(double correction = 0);

Метод для изменения яркости

void ChangeBright(int correction = 0);

Метод для изменения Red

void RedCorrection(int correction = 0);

Метод для изменения Green

void GreenCorrection(int correction = 0);

Метод для изменения Blue

void BlueCorrection(int correction = 0);

Метод для изменения Hue

void HueCorrection(int correction = 0); };

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]