Построение карт стереодиспаратности

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

Рубрика Программирование, компьютеры и кибернетика
Вид лабораторная работа
Язык русский
Дата добавления 20.05.2014
Размер файла 5,7 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Лабораторная работа

Построение карт стереодиспаратности

Цель работы: изучить корреляционные методы стереозрения для получения плотных карт глубины, установить особенности и ограничения их использования; исследовать влияние используемых размеров окна корреляции и диапазона допустимых стереодиспаратностей.

Задачи:

1. Изучить теоретическую часть работы.

2. Реализовать корреляционный алгоритм стереозрения с использованием корреляции Пирсона.

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

Экспериментальная часть:

Листинг программы, реализующей построение карты диспаратности подаваемой на вход стереопары, представлен в приложении 1. На рис. 1-5 представлены примеры исходных стереопар.

Рис. 1. Исходная стереопара. Статуя льва

Рис. 2. Исходная стереопара. Березовая роща

Рис. 3. Исходная стереопара. Трехмерные фигуры

Рис. 4. Исходная стереопара. Смотровая башня

Рис. 5. Исходная стереопара. Помещение

стереозрение корреляция стереодиспаратность

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

На рис. 6-10 представлены результаты построения карт стереодиспаратностей для представленных выше стереопар при различных размерах корреляционного окна при нулевом пороге допустимого для сопоставления точек значения коэффициента корреляции.

Исходное изображение Окно: 20Ч2. Порог: 0

Окно: 20Ч4. Порог: 0 Окно: 20Ч10. Порог: 0

Окно: 20Ч20. Порог: 0 Окно: 40Ч4. Порог: 0

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

Исходное изображение Окно: 10Ч2. Порог: 0

Окно: 20Ч2. Порог: 0 Окно: 10Ч10. Порог: 0

Окно: 20Ч4. Порог: 0 Окно: 20Ч10. Порог: 0

Окно: 20Ч20. Порог: 0 Окно: 40Ч4. Порог: 0

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

Исходное изображение Окно: 10Ч2. Порог: 0

Окно: 20Ч2. Порог: 0 Окно: 10Ч10. Порог: 0

Окно: 20Ч4. Порог: 0 Окно: 20Ч10. Порог: 0

Окно: 20Ч20. Порог: 0 Окно: 40Ч4. Порог: 0

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

Исходное изображение Окно: 10Ч2. Порог: 0

Окно: 20Ч2. Порог: 0 Окно: 10Ч10. Порог: 0

Окно: 20Ч4. Порог: 0 Окно: 20Ч10. Порог: 0

Окно: 20Ч20. Порог: 0 Окно: 40Ч4. Порог: 0

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

Исходное изображение Окно: 20Ч2. Порог: 0

Окно: 20Ч4. Порог: 0 Окно: 20Ч10. Порог: 0

Окно: 20Ч20. Порог: 0 Окно: 40Ч4. Порог: 0

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

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

Наилучшие результаты были получены при длине окна (размер по оси абсцисс), равный 20 пикселям. При меньшем размере окна по оси абсцисс результаты построения карты стереодиспаратностей для некоторых изображений теряют репрезентативность. Это происходит из-за того, что расстояние между одними и теми же точками на двух изображениях больше размера корреляционного окна по оси абсцисс. Можно заметить, что дальнейшее увеличение размера корреляционного окна по оси абсцисс ведет к падению разрешения на восстановленной карте стереодиспаратностей.

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

Следует отметить, что меньший размер корреляционного окна так же способствует разрешению на карте стереодиспаратностей мелких деталей (например, деревья на заднем плане на рис. 9).

На рис. 11-15 представлены результаты построения карт диспаратности при учете только тех точек, коэффициент корреляции которых при сопоставлении, превышает некоторый порог.

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

Окно: 20Ч4. Порог: 0 Окно: 20Ч10. Порог: 0

Окно: 20Ч4. Порог: 0.5 Окно: 20Ч10. Порог: 0.5

Окно: 20Ч4. Порог: 0.9 Окно: 20Ч10. Порог: 0.9

Рис. 11. Исходное изображение и набор карт стереодиспаратностей, полученных при различных порогах допустимого значения коэффициента корреляции

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

Окно: 10Ч2. Порог: 0 Окно: 10Ч10. Порог: 0

Окно: 10Ч2. Порог: 0.5 Окно: 10Ч10. Порог: 0.5

Окно: 10Ч2. Порог: 0.9 Окно: 10Ч10. Порог: 0.9

Окно: 20Ч4. Порог: 0 Окно: 20Ч10. Порог: 0

Окно: 20Ч4. Порог: 0.5 Окно: 20Ч10. Порог: 0.5

Окно: 20Ч4. Порог: 0.9 Окно: 20Ч10. Порог: 0.9

Рис. 12. Исходное изображение и набор карт стереодиспаратностей, полученных при различных порогах допустимого значения коэффициента корреляции

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

Окно: 10Ч2. Порог: 0 Окно: 10Ч10. Порог: 0

Окно: 10Ч2. Порог: 0.5 Окно: 10Ч10. Порог: 0.5

Окно: 10Ч2. Порог: 0.9 Окно: 10Ч10. Порог: 0.9

Окно: 20Ч4. Порог: 0 Окно: 20Ч10. Порог: 0

Окно: 20Ч4. Порог: 0.5 Окно: 20Ч10. Порог: 0.5

Окно: 20Ч4. Порог: 0.9 Окно: 20Ч10. Порог: 0.9

Рис. 13. Исходное изображение и набор карт стереодиспаратностей, полученных при различных порогах допустимого значения коэффициента корреляции

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

Окно: 10Ч2. Порог: 0 Окно: 10Ч10. Порог: 0

Окно: 10Ч2. Порог: 0.5 Окно: 10Ч10. Порог: 0.5

Окно: 10Ч2. Порог: 0.9 Окно: 10Ч10. Порог: 0.9

Окно: 20Ч4. Порог: 0 Окно: 20Ч10. Порог: 0

Окно: 20Ч4. Порог: 0.5 Окно: 20Ч10. Порог: 0.5

Окно: 20Ч4. Порог: 0.9 Окно: 20Ч10. Порог: 0.9

Рис. 14. Исходное изображение и набор карт стереодиспаратностей, полученных при различных порогах допустимого значения коэффициента корреляции

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

Окно: 20Ч4. Порог: 0 Окно: 20Ч10. Порог: 0

Окно: 20Ч4. Порог: 0.5 Окно: 20Ч10. Порог: 0.5

Окно: 20Ч4. Порог: 0.9 Окно: 20Ч10. Порог: 0.9

Рис. 15. Исходное изображение и набор карт стереодиспаратностей, полученных при различных порогах допустимого значения коэффициента корреляции

Полученные результаты показывают, что выбор порога допустимого коэффициента корреляции зависит от параметров изображений. Высокий порог, как показано на рис. 12 и 15 в значительной мере сократить влияние шумов и оставить только полезную информацию на восстановленной карте стереодиспаратностей. Однако данные на рис. 11, 13 и 14 показывают, что такой же высокий порог ведет и к отсечению полезной информации и значительно уменьшает плотность восстановленной карты стереодиспаратностей.

Вывод

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

Показано, что для различных сцен необходим адаптивный выбор размера корреляционного окна по оси абсцисс, который зависит от размера стереобазы и расстояния до объектов, диспаратность которых вычисляется. Рассмотрен эффект уменьшения разрешения построенной карты стереодиспаратностей при излишнем увеличении размера корреляционного окна по осям абсцисс и ординат (рис. 6-10). Рассмотрено положительное влияние увеличения размера корреляционного окна по оси ординат на плотность и качество построенной карты стереодиспаратностей (рис. 6-10).

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

Приложение

Листинг программы, реализующей построение карты стереодиспаратностей подаваемой на вход стереопары на языке программирования C++ с использованием библиотеки OpenCV версии 2.3.1

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

Файл «opencv2.h» (Содержит объявления некоторых общих вспомогательных функций и вход в пространство имен cv. Включен в каждый файл программы)

#ifndef OPENCV2_H_

#define OPENCV2_H_

#include «opencv\cv.h»

#include «opencv\highgui.h»

using namespace cv;

void fillMat (Mat &mat, float color); // Закрасить матрицу типа float одним цветом

#endif

Файл «opencv2.cpp» (Содержит реализацию вспомогательных функций, объявленных в «opencv2.h»).

#include «opencv2.h»

#include <stdio.h>

#include <vector>

#include <math.h>

// Реализация вспомогательных функций, объявленных в opencv2.h

void fillMat (Mat &mat, float color)

{

for (int y = 0; y < mat.rows; y++)

for (int x = 0; x < mat.cols; x++)

mat.at<float>(y, x) = color;

}

Файл «correlation.h» (Содержит объявления функции вычисления коэффициента корреляции и вспомогательных функций)

#ifndef CORRELATION_H

#define CORRELATION_H

#include «opencv2.h»

#include <stdio.h>

#include <windows.h>

#include <math.h>

float getCorrelationCoef (const Mat &mat1, const Mat &mat2);

float var (const Mat &mat);

float getMax (const Mat &mat);

#endif

Файл «correlation.cpp» (Содержит определения функции вычисления коэффициента корреляции и вспомогательных функций, объявленных в «correlation.h»).

#include «correlation.h»

#include «opencv2.h»

#include <stdio.h>

#include <windows.h>

#include <math.h>

float getCorrelationCoef (const Mat &mat1, const Mat &mat2)

{

float m1 = 0;

float m2 = 0;

for (int y = 0; y < mat1.rows; y++)

{

for (int x = 0; x < mat1.cols; x++)

{

m1 += mat1.at<float>(y, x);

m2 += mat2.at<float>(y, x);

}

}

m1 /= mat1.rows*mat1.cols;

m2 /= mat2.rows*mat2.cols;

float d1 = 0;

float d2 = 0;

float c = 0;

for (int y = 0; y < mat1.rows; y++)

{

for (int x = 0; x < mat1.cols; x++)

{

float tmp1 = (mat1.at<float>(y, x) - m1);

float tmp2 = (mat2.at<float>(y, x) - m2);

d1 += tmp1*tmp1;

d2 += tmp2*tmp2;

c += tmp1*tmp2;

}

}

d1 = sqrt(d1);

d2 = sqrt(d2);

c /= d1*d2;

return c;

}

float var (const Mat &mat)

{

float m = 0;

for (int y = 0; y < mat.rows; y++)

for (int x = 0; x < mat.cols; x++)

m += mat.at<float>(y, x);

m /= mat.rows*mat.cols;

float d = 0;

for (int y = 0; y < mat.rows; y++)

for (int x = 0; x < mat.cols; x++)

d += (mat.at<float>(y, x) - m)*(mat.at<float>(y, x) - m);

d /= mat.rows*mat.cols;

return d;

}

float getMax (const Mat &mat)

{

float d = -100000000;

for (int y = 0; y < mat.rows; y++)

for (int x = 0; x < mat.cols; x++)

if (d < mat.at<float>(y, x))

d = mat.at<float>(y, x);

return d;

}

Файл «main.cpp» (Содержит основной код программы и функцию, строящую карту стереодиспаратностей с учетом заданных параметров).

#include «opencv2.h»

#include <stdio.h>

#include <windows.h>

#include «correlation.h»

Mat makeDispMap (Mat &mat1, Mat &mat2, int x_size, int y_size, float treshold)

{

Mat res (mat1.rows, mat1.cols, CV_32FC1);

for (int y = y_size/2; y < res.rows-y_size/2-1; y++)

{

printf («\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b%.2f%%», (double) (y - y_size/2)/(res.rows-1)*100);

for (int x = x_size; x < res.cols-x_size-1; x++)

{

float max_value = -1;

int max_shift_x = 0;

float c = 0;

int dy = 0;

//for (int dy = - y_size/2; dy < y_size/2; dy++)

// {

for (int dx = - x_size; dx < 0; dx++)

{

c = getCorrelationCoef (

mat1 (Rect (x, y-y_size/2, x_size, y_size)),

mat2 (Rect(x+dx, y-y_size/2, x_size, y_size)));

//imshow («img1», mat1 (Rect(x, y-y_size/2, x_size, y_size)));

//imshow («img2», mat2 (Rect(x+dx, y-y_size/2, x_size, y_size)));

//waitKey(1);

//printf («%d % d % f\n», x, dx, c);

if (max_value < c)

{

max_value = c;

max_shift_x = dx;

}

}

// }

//printf («%f\n», max_value);

//imshow («img1», mat1 (Rect(x, y-y_size/2, x_size, y_size)));

//imshow («img2», mat2 (Rect(x+max_shift_x, y-y_size/2, x_size, y_size)));

//waitKey(1);

if (max_value > treshold)

res.at<float>(y, x) = - max_shift_x;

else

res.at<float>(y, x) = 0;

}

//imshow («map», res);

waitKey(1);

}

cvDestroyWindow («map»);

printf («\n»);

return res;

}

void main()

{

Mat img = imread («1.jpg», CV_LOAD_IMAGE_GRAYSCALE);

Mat img1 = img (Rect(0, 0, img.cols/2, img.rows));

Mat img2 = img (Rect(img.cols/2, 0, img.cols/2, img.rows));

Mat mat1;

Mat mat2;

img1.convertTo (mat2, CV_32FC1, 1./255);

img2.convertTo (mat1, CV_32FC1, 1./255);

imshow («img», mat1);

waitKey(0);

imshow («img», mat2);

waitKey(0);

cvDestroyWindow («img»);

Mat res = makeDispMap (mat1, mat2, 20, 4, 0);

normalize (res, res, 0, 1, CV_MINMAX);

imshow («res», res);

imshow («img», mat1);

normalize (res, res, 0, 255, CV_MINMAX);

normalize (mat1, mat1, 0, 255, CV_MINMAX);

imwrite («res.bmp», res);

imwrite («left.bmp», mat1);

waitKey(0);

}

Размещено на Allbest.ru


Подобные документы

  • Особенности создания цифровых топографических карт и планов. Используемые технические средства, программное обеспечение. Создание цифровых карт по материалам полевых измерений. Цифрование картографических изображений. Прикладные задачи картографии.

    курсовая работа [5,3 M], добавлен 31.05.2014

  • Опис додаткового обладнання персонального комп'ютера, що дозволяє обробляти звук. Порівняння основних технічних характеристик звукових карт різних виробників. Аналіз особливостей вбудованих, мультимедійних, напівпрофесійних та професійних звукових карт.

    курсовая работа [1,9 M], добавлен 08.01.2014

  • Рынок карт памяти стандарта SD. Накопители стандарта SD как незаменимые "помощники" в сфере информации. Рост объема памяти и скорости передачи данных. Классы скорости, вид и размер карт памяти. Рейтинг карт памяти по разным техническим показателям.

    реферат [1,6 M], добавлен 05.06.2015

  • Создание элемента управления для отображения карт, представляющих собой векторные изображений в формате Encapsulated PostScript. Поддержка использования программных интерфейсов. Разработка элемента управления, вписывание изображения в область компонента.

    дипломная работа [1,1 M], добавлен 11.11.2010

  • Ознакомление с комплектацией и классификацией звуковых карт; рассмотрение их основных характеристик - частоты дискретизации, разрядности, динамического диапазона, коэффициента нелинейных искажений, поддерживаемых спецэффектов. Диапазон цен на аудиоплаты.

    презентация [647,5 K], добавлен 17.11.2011

  • Навигационно-информационная компьютерная система ECDIS - отображение картографической и навигационно-гидрографической информации, необходимой для безопасного судовождения. Используется как эквивалент бумажных навигационных карт и пособий для плавания.

    книга [4,5 M], добавлен 13.05.2009

  • Общие характеристики смарт-карт. Архитектура микросхемы: компоновка элементов микрокомпьютера смарт-карты, размещение процессора, памяти, периферийных модулей, блока ввода-вывода. Комплексный подход к обеспечению информационной безопасности смарт-карт.

    курсовая работа [423,9 K], добавлен 26.11.2013

  • Модели звуковых карт, их возможности, качество звука и размеры. Устройство звуковых карт и принципы их функционирования. Методы генерации звука, применяющиеся в звуковых платах. Особенности системы пространственного звуковоспроизведения Dolby Digital.

    реферат [34,8 K], добавлен 13.03.2011

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

    дипломная работа [3,5 M], добавлен 22.11.2015

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

    курсовая работа [457,2 K], добавлен 12.04.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.