Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПЗ.docx
Скачиваний:
130
Добавлен:
01.06.2015
Размер:
1.85 Mб
Скачать

4.3 Классы и функции используемые в работе

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

Каждый пиксель кадра с камеры находится в некоторой окрестности окружающих его точек, влияющих на его значение. Такая закономерность характерна как для точек фона, так и для точек объектов препятствий. Некоторые точки могут являться характерными или ключевыми для объектов. Их физическая природа может быть различной: центр массы объекта, его геометрический центр, якорная точка контура и т.п. Эти точки часто используются в некоторых методах анализа изображений или их распознавания. На рисунке 10 показана окрестность характерной точки объекта.

Рисунок 10 – Матричное представление участка кадра с камеры

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

Пример представления матрицы кадра с камеры показан на рисунке 11.

Рисунок 11 – Представление кадра с камеры в виде изображения в серых тонах

В библиотеке OpenCVприняты два стандарта представления изображений:

  1. IplImage;

  1. CvMat.

Класс IplImageпредставлен следующим прототипом:

typedef struct _IplImage

{

int nSize;

int ID;

int nChannels;

int alphaChannel;

int depth;

char colorModel[4];

char channelSeq[4];

int dataOrder;

int origin;

int align;

int width;

int height;

struct _IplROI *roi;

struct _IplImage *maskROI;

void *imageId;

struct _IplTileInfo *tileInfo;

int imageSize;

char *imageData;

int widthStep;

int BorderMode[4];

int BorderConst[4];

char *imageDataOrigin;

}

IplImage;

Класс CvMatпредставлен следующим прототипом структуры:

class CV_EXPORTS Mat

{

public:

// ... a lot of methods ...

...

/*! includes several bit-fields:

- the magic signature

- continuity flag

- depth

- number of channels

*/

int flags;

//! the array dimensionality, >= 2

int dims;

//! the number of rows and columns or (-1, -1) when the array has more than 2 dimensions

int rows, cols;

//! pointer to the data

uchar* data;

//! pointer to the reference counter;

// when array points to user-allocated data, the pointer is NULL

int* refcount;

// other members

...

};

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