Реализация и исследование системы распознавания трехмерных объектов с использованием видео-датчиков, расположенных под углом

Автор работы: Пользователь скрыл имя, 17 Июня 2013 в 16:36, дипломная работа

Описание работы

Задач, поставленных на дипломную работу несколько:
Подробно рассмотреть и проанализировать существующие системы, занимающиеся распознаванием трехмерных объектов;
Рассмотреть алгоритмы предварительной обработки и выбрать оптимальные из них;
Рассмотреть признаки, применяемые для распознавания трехмерных объектов, а также выбрать оптимальные из них для реализации в ИС;
Сформировать структурно-функциональную схему СТЗ для распознавания объектов;
Реализовать алгоритм вычисления оценок;
Реализовать нахождение значений признаков объектов;
Реализовать построение моделей октодеревьев объектов;

Файлы: 1 файл

PZDiplom.doc

— 7.20 Мб (Скачать файл)

Пусть дано множество M объектов; на этом множестве существует разбиение на конечное число подмножеств (классов) Ω, i = {1,m},M = Ωi (i = 1..m) . Объекты ω задаются значениями некоторых признаков xj, j= {1,N} . Описание объектаI(ω)=(x1(ω), ..., xN(ω)) называют стандартным, если xj(ω) принимает значение из множества допустимых значений.

Пусть задана таблица эталонов с условными значениями (таблица 4.1). Задача распознавания состоит в том, чтобы для заданного объекта ω и набора классов Ω1, ..., Ωm по обучающей информации в таблице обучения I0(Ω1...Ωm) о классах и описанию I(ω) вычислить предикаты: Pi(ω  Ωi)={1(ω  Ωi), 0(ω  Ωi), (ω  Ωi)}, где i= {1,m} , Δ - неизвестно.

Таблица 3.1 - Таблица эталонов

Объект

Признаки и их значения

Класс

x1

xj

xn

ω1

11

1j

1n

Ω1

     

ωr1

r11

r1j

r1n

       

ωrk

rk1

rkj

rkn

Ωm

     

ωrm

rm1

rmj

rmn


 

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

Пусть задан полный набор признаков x1, ..., xN. Выделим систему подмножеств  множества признаков S1, ..., Sk. Удалим произвольный набор признаков из строк ω1, ω2, ..., ωrm и обозначим  полученные строки через Sω1, Sω2, ..., Sωrm, Sω' .

Правило близости, позволяющее оценить  похожесть строк Sω' и Sωr состоит  в следующем. Пусть "усеченные" строки содержат q первых символов, то есть Sωr=(a1, ..., aq) и Sω'=(b1, ..., bq) . Заданы пороги ε1...εq, . Строки Sωr и Sω' считаются похожими, если выполняется не менее чем неравенств вида

|aj-bj|  εj, j=1,2,..., q.

Величины ε1...εq,  входят в качестве параметров в модель класса алгоритмов на основе оценок.

Пусть Гi(ω') - оценка объекта ω' по классу Ωi.

Описания объектов {ω'}, предъявленные  для распознавания, переводятся в числовую матрицу оценок. Решение о том, к какому классу отнести объект, выносится на основе вычисления степени сходства распознавания объекта (строки) со строками, принадлежность которых к заданным классам известна.

3.2.2 Определение принадлежности неизвестного объекта к эталону

 

Для определения, к какому эталону относится объект складываются все значения бинарной таблицы построчно. Из получившегося массива значений выбирается максимальный, то есть та проекция эталона, которая наиболее совпадает со значениями признаков объекта реального. Если таких проекций несколько, то алгоритм вычисления оценок применяется вторично. 

3.3 Программная реализация алгоритмов

3.3.1 Реализация алгоритмов предварительной  обработки изображения проекции трехмерного объекта

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

for(int i=0;i<n;i++){

        w[i]=new double[n];

    }

    for (int i =0; i < n; i++)

    {

        for (int j = 0; j < n; j++)

        {

            ss=(i*i+j*j)/r2;

            w[i][j]=1/(sqrt(M_PI*r2))*exp(ss*(-1.0));

            //cout<<w[i][j]<<endl;

            s+=w[i][j];

        }

        for (int j = 0; j < n; j++)

        {

           

            w[i][j]=w[i][j]/s;

        }

    }

    for (int yi =n; yi < height-n; yi++)

    {

        for (int xj = n; xj < width-n; xj++)

        {

                for (int i =0; i < n; i++)

                {color=0;

                    for (int j = 0; j < n; j++)

                    {

                        color+=w[i][j]*LightMap[(int)(i+yi)][(int)(j+xj)];

                    }

                }

                LightMap[(int)(yi)][(int)(xj)] =color;

        }

    }

Реализация бинаризации с методом Отсу для определения порога представлена ниже.

typedef unsigned char imageInt;

    int otsuThreshold(imageInt *image, int size)

    {

      int min = image[0];

      int max = image[0];

      for (int i = 1; i < size; i++)

      {

        int value = image[i];

        if (value < min)

          min = value;

        if (value > max)

          max = value;

      }

      int m = 0;

      int n = 0;

      for (int t = 0; t <= max - min; t++)

      {

        m += t * hist[t];

        n += hist[t];

      }

      float maxSigma = -1;

      int threshold = 0

      int alpha1 = 0;

      int beta1 = 0;     

for (int t = 0; t < max - min; t++)

      {

        alpha1 += t * hist[t];

        beta1 += hist[t];

        float w1 = (float)beta1 / n;

        float a = (float)alpha1 / beta1 - (float)(m - alpha1) / (n - beta1);

       

        float sigma = w1 * (1 - w1) * a * a;

        if (sigma > maxSigma)

        {

          maxSigma = sigma;

          threshold = t;

        }

      }

      threshold += min;

      return threshold;

    }

3.3.2 Реализация алгоритмов вычисления признаков

 

Для вычисления признаков используется класс sign, в который передается необработанное изображение типа IplImage, на выходе же выдаются значения признаков типа float. В программе используется шесть признаков, по которым идентифицируется объект. Ниже представлен типовой код для вычисления признака КДО.

KDO1=lenght_of_line(ppp.x,ppp.y,mid.x,mid.y)/lenght_of_line(lefttop.x,lefttop.y,mid.x,mid.y)

В данном примере вычисляется коэффициент  диагонального левого верхнего отрезка. Для реализации вычисления диагонального коэффициента формы значение длины диагоналей делится на значение длины объекта.

KD1 = lenght_diagonal1/max_lenght;

KD2 = lenght_diagonal2/max_lenght;

Для вычисления прямоугольного коэффициента формы делится ширина объекта на длину.

if(obj_height>obj_width)

pryam=obj_width/obj_height;

else

pryam=obj_height/obj_width;

PKF = pryam;

В данном случае, если ширина объекта меньше длины, то она является делимым, если больше, то делителем.

3.3.3 Реализация алгоритма распознавания трехмерного объекта

 

Алгоритмом распознавания трехмерного  объекта является алгоритм вычисления оценок, описанный в п. 3.2.1. Для  вычисления значений признаков проекции используется объект класса signObj, в который отправляется необработанный снимок проекции реального объекта.

signObj = new Sign();

signObj->signRes(image);

Значения признаков эталлонных объектов хранятся в базе и предоставляются к просмотру пользователю через компоненту SGDBPriz. Загрузка данных осуществляется с помощью следущего кода:

AllAvgMo = "SELECT Count(id) FROM proj_priz";

IBDSAvgMo->SelectSQL->Text = AllAvgMo;

IBDSAvgMo->Open();

CountRecordsProjPriz = IBDSAvgMo->FieldByName("Count")->AsInteger;

 

AllAvgMo = "Select TABLE_PROJ.id, PROJ_PRIZ.avg_mo, table_priz.name \

from  TABLE_PROJ join PROJ_PRIZ on TABLE_PROJ.id = PROJ_PRIZ.id_proj \

join table_priz on table_priz.id = proj_priz.id_priz";

IBDSAvgMo->SelectSQL->Text = AllAvgMo;

IBDSAvgMo->Open();

 

IBDS_TablePrizn->First();

for (int i = 0; i < CountRecords; i++)

{

NumProj = IBDS_TablePrizn ->FieldByName("ID1")->AsInteger;

IBDSAvgMo->First();

for (int j = 0; j < CountRecordsProjPriz; j++)

{

if (NumProj == IBDSAvgMo->FieldByName("ID")->AsInteger)

{

for (int z = 2; z < SGDBPriz->ColCount; z++)

{

if (SGDBPriz->Cells [z][0] == IBDSAvgMo->FieldByName("NAME")->AsString)

{

SGDBPriz->Cells [z][i + 1] =  IBDSAvgMo->FieldByName("AVG_MO")->AsFloat;

}

}

}

IBDSAvgMo->Next();

}

IBDS_TablePrizn->Next();

}

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

AllPriz = "SELECT Count(id) FROM table_priz";

IBDSpriz->SelectSQL->Text = AllPriz;

IBDSpriz->Open();

CountRecordsPriz = IBDSpriz->FieldByName("Count")->AsInteger;

 

AllPriz = "Select * from table_priz";

IBDSpriz->SelectSQL->Text = AllPriz;

IBDSpriz->Open();

 

IBDSpriz->First();

for (int i = 0; i < CountRecordsPriz; i++)

{

devMin = IBDSpriz->FieldByName("MIN")->AsFloat;

devMax = IBDSpriz->FieldByName("MAX")->AsFloat;

for (int j = 0; j < SGBin->ColCount; j++)

{

if (IBDSpriz->FieldByName("NAME")->AsString == SGBin->Cells[j][0])

{

for (int z = 1; z < SGBin->RowCount; z++)

{

if (SGDBPriz->Cells[j][z] != "")

{

if (((StrToFloat(SGDBPriz->Cells[j][z]) - devMin) <=  StrToFloat(SGPrizObj->Cells[j - 1][1])) &&

((StrToFloat(SGDBPriz->Cells[j][z]) + devMax) >=  StrToFloat(SGPrizObj->Cells[j - 1][1])))

SGBin->Cells[j][z] = 1;

else

SGBin->Cells[j][z] = 0;

}

else

SGBin->Cells[j][z] = 0;

}

}

}

IBDSpriz->Next();

}

В данном случае бинарной является таблица, отраженная в компоненте SGBin. Если значение признака про проекции является числом, входящим в доверительный интервал, то значение ячейки бинарной таблицы становится равным 1, если же есть резкое отличие от искомой величины, то ставится 0. Далее по бинарной таблице определяется по какой эталонной проекции было больше всего совпадений и по максимальному значению определяется искомая проекция. В случае существования нескольких проекций с одинаковыми значениями совпадений, строится модель октодерева для разных объектов и выявляется один искомый объект.

 

4 Экспериментальное исследование алгоритма распознавания трехмерных объектов

4.1 Проведение испытаний технологии распознавания 3D объекта на сгенерированных тестовых изображениях

Испытания на сгенерированных тестовых изображениях проводятся на первом этапе распознавания. Генерируется 1800 изображений. При распознавании на первом этапе при увеличении количества признаков вероятность распознавания увеличивается(рисунок 4.1).

 

Рисунок 4.1 – График вероятности распознавания проекции на 1 этапе

 

На графике по оси ох расположено  количество признаков. При последовательном их увеличении вероятность распознавания увеличивается. На втором этапе распознавания при построении модели октодерева вероятность распознавания возрастает до ста процентов.

4.2 Проведение испытаний технологии  распознавания 3D объекта на реальных  изображениях проекций 3D объекта

В качестве реальных рассматривается несколько объектов. В качестве снимков делаются как проекции главных видов, так и боковые проекции реальных объектов. Снимки боковых проекций произведены под углом 45 градусов к горизонту. В качестве первого теста используется проекция главного вида и косоугольная проекция объекта№5 (рисунок 4.2).

 

Рисунок 4.2 – Исходные изображения объекта №5

 

Результатом 1 этапа распознавания  является однозначное определение данного объекта. Из шести имеющихся значений признаков совпали пять.

 

Рисунок 4.3 – График совпадений значений признаков на 1 этапе(объект №5)

 

Результатом работы программы является распознанный объект под номером 5(рисунок 4.3). Если же сделать снимок не главной проекции, то количество совпадений значений признаков у разных эталонных объектов увеличится. В качестве исходных берутся два реальных изображения третьего объекта (рисунок 4.4).

 

Рисунок 4.4 – Исходные изображения объекта №3

 

На первом этапе распознавания  отсеялись некоторые объекты, которые  исключаются из рассмотрения в дальнейшем. На данном этапе совпали значения четырех признаков из шести.

 

Рисунок 4.5 – График совпадений значений признаков на 1 этапе(объект №3)

 

Из рисунка 4.5, на котором изображен график совпадений значений признаков, определяется, что к рассмотрению и построению моделей октодеревьев подходят 14 проекций объектов(рисунок 4.5). Строятся модели октодеревьев с учетом их углов поворота во всех плоскостях(рисунок 4.6).

 

Рисунок 4.6 - Таблица формирования моделей октодеревьев

 

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

Рисунок 4.7. - Модели октодеревьев. Объет№1 (а), объект№2 (б), объект№3 (в), объект№5 (г) объект№6 (д)

 

На втором этапе распознавания  используется также алгоритм вычисления оценок. В качестве входных используется вектор значений признаков, вычисленных по косоугольной проекции(рисунок 4.8), и таблица значений признаков вычисленных по моделям октодеревьев(4.9).

 

Рисунок 4.8 – Значения признаков, рассчитаных по косоугольной проекции

 

В данной таблице располагаются  все значения шести признаков, причем значения признаков КДО и КД разделяются  по отдельности.

Рисунок 4.9 – Рассчитаные значения признаков по моделям октодеревьев

 

По двум данным таблицам строится третья – бинарная(рисунок 4.10), в которой отмечаются совпадения значений признаков косоугольной проекции и сформированной проекции по модели октодерева.

Рисунок 4.10 – Бинарная таблица АВО на втором этапе

 

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

Рисунок 4.11 – Таблица совпадений значений признаков на втором этапе

 

Строится график совпадений значений, по которому определяется искомый объект(рисунок 4.12).

 

Рисунок 4.12 – График совпадений значений признаков на 2 этапе(объект №3)

 

Результатом работы программы является единственный идентифицированный объект, изображенный на рисунке 4.13.

 

Рисунок 4.13 – Распознанное изображение

 

Результатом работы программы является единственное распознанное изображение, выводится его сформированная модель, а также название. В данном случае распознанным объектом является объект№3.

4.3 Анализ результатов исследования

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

Информация о работе Реализация и исследование системы распознавания трехмерных объектов с использованием видео-датчиков, расположенных под углом