Трехмерная реконструкция объекта по двум изображениям путем задания точечных соответствий

Начало: 08 мая 2008
Конец: 25 мая 2008

Авторы задания:
Антон Якубенко, Александр Велижев

Введение

Цели задания:

  • На практике познакомиться с задачей трехмерной реконструкции по двум изображениям.
  • Научиться писать простые GUI на MATLAB.

Описание задания

  • Принимая на вход 2 скалиброванных изображения, пользователь задает пары точечных соответствий, по которым строится трехмерная полигональная текстурированная модель в формате VRML.
  • Программа должна быть реализована в виде MATLAB функции. Основная программа должна иметь GUI (графический пользовательский интерфейс).
  • Данные для работы программы здесь. Для моделирования можно выбрать либо простой объект - коробку, либо более сложный - принтер.

Постановка задачи

  • При запуске показывается форма, аналогичная показанной на рисунке 1. Пользователь загружает все необходимые для работы данные:
    • Два изображения объекта из файлов.
    • Матрицы внешней калибровки для обоих изображений. Для загрузки матриц можно воспользоваться матлаб-функцией textread.
    • Матрицу внутренней калибровки – одинаковую для обоих изображений.
    • Также должна быть предусмотрена возможность загрузки всех данных из папки. При этом предполагается следующее именование файлов:
      • Файлы изображений: “1.jpg” и “2.jpg”
      • Файлы матриц внешней калибровки: “Extrinsic1.txt” и “Extrinsic2.txt”
      • Файл матрицы внутренней калибровки: “Intrinsic.txt”
  • Пользователь должен указать на изображениях пары соответствующих точек или загрузить такие данные из файла. Для задания пар соответствующих точек пользователь нажимает кнопку “Set Matches”. Открывается новая форма, в которой имеются 2 окна с изображениями, кнопки “OK” и “Cancel” (см. рисунок 2). Кликами пользователь указывает точки на изображениях, соблюдая их последовательность и соответствия (пример расстановки точечных соответствий см. на рисунке 3). Пользователь может сохранить указанные точечные соответствия в текстовый файл.
  • Пользователь должен указать тройки точек на одном из изображений, задающих треугольники поверхности модели, или загрузить такие данные из файла. Для задания троек точек пользователь нажимает кнопку “Set Triangles”. Открывается новая форма, в которой имеются окно с выбранным изображением, кнопки “OK” и “Cancel” (см. рисунок 4). Кликами пользователь указывает последовательные точки, задающие треугольники. Пользователь может сохранить указанные точечные соответствия в текстовый файл.
  • Программа вычисляет координаты трехмерных точек, соответствующих выделенным точкам. Трехмерные точки вычисляются путем триангуляции (см. Лекцию 9 курса “Основы машинного зрения” 2006). Данные об ошибке репроекции трехмерных точек обратно на изображения должны выводиться в GUI или в консоли в MATLAB. Пусть K – матрица внутренней калибровки, C – матрица внешней калибровки для изображения I, тогда:
    • Проекция (x, y) точки (X, Y, Z, 1) на изображение I:
      A = (w*x, w*y, w)’ = K * eye(3, 4) * inv(C) * (X, Y, Z, 1)’, откуда x = A(1) / A(3), y = A(2) / A(3).
    • Трехмерная точка (X, Y, Z) на картинной плоскости изображения I, соответствующая точке (x, y) на изображении I:
      (X, Y, Z, 1) = C * [inv(K) * (x, y, 1)’; 1]
  • Программа строит трехмерную текстурированную модель объекта и экспортиует ее в формате VRML. Текстура берется из одного из изображений (текстурные координаты вычисляются путем проекции трехмерных точек модели на изображение, либо могут использоваться координаты заданных точек).

Оформление программы (содержание архива):

  • MATLAB скрипты программы.
  • Файлы, содержащие координаты выделенных точек и набор треугольников.
  • Файл VRML модели вместе с файлом текстуры.
  • ReadMe.txt, содержащий:
    ФИО: [Фамилия Имя Отчество]
    Группа: [номер группы]
    
    Система: [система программирования]
    ОС: [операционная система]
    Аппаратура: [конфигурация машины]
    
    Комментарии: [комментарии по реализации / пожелания и т.д.]
    

Материалы:

© Лаборатория компьютерной графики при ВМиК МГУ