zxcДоктор Пол С. Блаер

Директор, Изчислителски изследователски център
Адъюнкт-професор
Катедра по компютърни науки
Колумбийският Университет

Оригиналът:
3D Desktop Photography by Eclipse

Преглед на проекта

Членовете на екипа:

Както се вижда (от ляво на дясно) от: [Снимка 1] [Снимка 2]

Описание на проекта:

Ние бяхме отговорни за изпълнение 3D фотография на бюрото си, първоначално той стартира от Жан-Ив Буг и Пиетро Перона в Калтек. Целта на тази система е да осигури прост и евтин начин за извличане на 3D формата на обекти, като се използва слабо структурирано осветление. Единственият необходим хардуер тук е видео камера (с хост компютър), шахматна дъска, настолна лампа и молив. Използването на форма на сянката молива, системата трябва да се извлече 3D точки, съответстващи на повърхността на обекта, върху който сянката минава.

Технически Дискусии

  • За настройка: Нашата бюро беше парче бял плакат борда на бюро. Обектът трябва да бъде сканиран и поставен върху дъската. Исключване наляво и възкреси на няколко крачки е нашият източник на светлина. Нашият източник на светлина е малка настолна лампа с кръгло крушка. Това беше най-близкото сближаване, бихме могли да стигнем до точков източник. Имахме добро качество на сивата скала камера, монтирана на статив гледаше надолу към обекта. Източникът на светлина е малко по-висока от камерата. Нашата камера (Sony XC-77) е с по-високо качество, отколкото е необходимо за изпълнение на скенера в сянка. Бихме могли да са направили общо с бърз-камера. Самата камера е свързана с по-ниска цена WinTV видео заснемане карта (на стойност около $ 50). Картата на WinTV се монтира в Pentium II 400 PC тичане Linux с v4l драйверите, инсталирани на него. The v4l (видео за Linux) пакет, в допълнение към идва с драйвери за WinTV-картата, също дойде с полезна програма, наречена знаменца, което ни позволи да вземе сива скала снимки със скорост над 5 кадъра в секунда при резолюция от 640×480 пиксела. Първо, ние взехме няколко снимки на шахматна дъска модел на самолета бюро (всеки квадратен страна е 23 mm). Тези снимки са били използвани със софтуера за калибриране, обяснени по-долу, за да получите едно уравнение за самолета бюро. Следваща взехме най-малко две снимки на молив (дължина 76 mm) на различни места в самолета бюро. Тези изображения са били да се предаде на програмата светлина калибриране за извличане на координатите на източника на светлина. И накрая, ние използвахме програмата стример да улови около 60 снимки със скорост 5 кадъра в секунда, като един от членовете на нашата група махна пръчката от другата страна на обекта, който се сканира. След като ние заловен тези образи, ние след това да ги преработва отделно (подробно описани в следващите раздели).Тази настройка също ни позволи да вземе две различни сканирания на един и същ обект с различни източници на светлина. Полезно е да се сканира с различни източници на светлина, тъй като всеки източник на светлина хвърля различен набор от сенки над обекта. Тъй като ние не получите никакви данни, от части от обекта затъмнено в сянка, толкова повече сканирания, които предприемаме с различни източници на светлина колкото повече бланки можем да го попълнят. Номерът е да се вземат две сканирания с различни източници на светлина, но с камерата и обекта неподвижна. По този начин произхода на системата, както и местоположението на обекта никога не се промени и затова облаци точка, са вече регистрирани помежду си и могат да бъдат директно слива.За да се вземе нашите две сканиране светлинен източник, ние първо да настроите платформата нормално и взе нашите първоначални изображения светлинен източник и калибриране на камерата. Тогава взехме серия от снимки на пръчката, минаващи над обекта. Това беше в края на първото сканиране. След това се премества източника на светлина само на друго място, и след това се друга серия от снимки на пръчката, минаващи над обекта. И накрая, ние отстранява обекта но остави източника на светлина във втората си позиция.Ние след това взе втора серия от светлинни изображения калибриране След е взето втората сканирането. Сега имаме достатъчно информация, за да се изчисли две облаци точкови отделно.Ние можем след това просто да ги обковеш да запълни дупките с допълнителна сканирането.
  • Каоибровка:
    • Камера за калибриране: Корей Основната цел на ccalib (програма за камера калибриране) е да се намери автоматично характеристиките ъглови в образа на калибриране. След като бъдат намерени тези пикселни места те са след това се свързва с някои 3D точка и се даде на Цай калибриране камера практиката за действителните изчисления за калибриране на камерата. Стъпките за автоматично намиране ъглови характеристики са, както следва:
      1. Намиране на края
      2. Осякатяваща трасформация
      3. Вземи линии от осякатяваща трансформация
      4. Намерете пресечните линии на тези линии
      5. Уточнете пресечните точки (разгледано в раздел Анализ)

      Стъпка Намира на края е проста квартал усредняване на стойностите на пикселите по краищата на изображението определя на нула. Също така в този етап хистограма на изображението на ръб е конструиран така, че праговата стойност може да бъде изчислена за осякатяваща трансформация. Това хистограма, има структура, поглеждайки към него от ляво на дясно (тъмно пикселни стойности на ярка пикселни стойности), хистограмата започва с високи стойности за тъмните пикселни стойности. След това, докато се движите надясно това се спуска много бързо, докато се достигне локален минимум. Оттук стойности хистограмата се увеличи, както интензивността на пикселите увеличава до локален максимум е достигнат. Оттук стойности хистограмата падне до нула. Граничната стойност, че осякатяваща трансформира стъпка се интересува е на локалния максимум, който се появява след като местният минимум. Тази стойност се изчислява чрез познаването на структурата на хистограмата и търсят както от ляво и дясно.

      Изображението на ръба намерено в етапа на Edge Detection заедно с праговата стойност след това се изпраща на Осякатяваща трасформация стъпка. Осякатяваща трасформация е основния Осякатяваща трасформация алгоритъм и в действителност кодът е от компютърна визия домашното Навеед. След първата част на осякатяваща трансформация се изчислява изображение в пространството осякатяващо е създадено. Светлите петна в картинката осякатяващо представляват линии, които съществуват в ръба на изображението.

      След като изображението се изчислява и етикетирани тя след това се предоставят на етап са тези региони се трансформират обратно в линии в пространството на изображението. Центровете на маса на всяко белязано регион в картинката се изчислява и се намират крайните точки на съответните линии. След това тези крайни точки са проверени, за да се уверите, че те наистина са реални линии и ако те са, те са добавени към списъка на линии намерен. След всички крайни точки се намират те се проверяват отново, така че те са приятни линии за останалата част от обработката. Ница линии са тези, които излизат от ляво на дясно или отгоре-надолу.

      Сега, когато имаме списък на редове в рамките на изображението трябва да намерим възможни ъгли в изображението. Първата стъпка е да се раздели на списъка на линии в хоризонтални и вертикални линии. Тогава сортирате линии, така че хоризонталните линии излизат от горе-надолу и вертикални линии отидете от ляво на дясно. След това се намират пресечните точки на всички хоризонтални и вертикални линии. Тези кръстовища са възможните краища на модел на калибриране.

      Вижте раздел Анализ за дискусия за природата на тези възможни ъгъл точки и използването им.

    • Светово калибриране: Навеед find_light (програмата за светлина калибриране) приема като аргументи на Цай параметри файл изход от ccalib, измерена височината на калибриране молива в милиметри и комплект от две или повече светлинни калибриране изображения. Цялата молив сянката (горната и долната) трябва да бъде видим в тези образи. За всяка двойка светлинни входни калибриране изображения, тази програма точно следва алгоритъма, описан от Жан-Ив Буг и Пиетро Перона в тяхната хартия 3D фотография на бюрото ви. Кратко описание на това е, както следва: с неприсъщи параметри на фотоапарата и кликвания на потребителя на върха и основата на сянката молив в изображението пространство, ние можем просто да се изчисли реалното 3D координатите на двете по отделно, пресичаща на техните носители с работния плот равнина. С известна височина на молива и молив базовата точка на, изчисляване върха на молив е тривиално от който може да се заключи. Сега, ние знаем, че светлината трябва да лежи върху лъч формира от върха на молива и върха на сянката му. С две или повече такива кандидатки лъчи, можем да намерим тяхното пресичане – това е мястото на светлината. Когато има повече от две такива входни изображения, ние използваме средната стойност на местата за леки изчислени от всеки уникален чифт. Това създава N * (N – 1) / 2 двойки и съответните места на светлина, където N е броят на входните изображения. Средната стойност изглажда грешката, свързана с човешкото входа и също компенсира факта, че светлината не е перфектен точков източник. Тази програма изисква прозоръчна система X11 да функционира, графичния интерфейс е написана с помощта на тази библиотека.Когато изображението се показва на потребителя, те трябва внимателно да кликнете първо върху горната точка в сянката на молив (върха) и втора в долния точка на молив / сянката (малко двусмислено, но последователен относителна избор позиция би трябвало да работи добре ). След това интерфейсът ще продължи да покаже следващото входно изображение, и т.н., докато там не остане никой. Същият вид вход се очаква на потребителя за всяко изображение.Изходът на програмата е за 3D координатна на светлината. Това може да бъде пренасочен към файл, ако по-нататъшна употреба се изисква (например в desk_scan програмата).
  • 3D Точка Добив:
    • Прагови стойности: Пол прагова стойност се разделя на две фази:
      1. Изчислителна самолета сянка за всяко изображение (стъпка време).
      2. Изчислителна точното време, че сянката пресича всеки пиксел.

      Изчислителна самолета сянка за всяко изображение се извършва чрез намиране на трите точки, които определят равнина в сянка. Първо имаме 3D координатна на източника на светлина. Това вече е изчислена по време на фазата на светлина калибриране и всъщност е аргумент на командния ред на програмата. Другите две точки са изчислени от „референтни редовете.“ В горната и долната част на изображението вземем чифт редове, които никога не се пресичат на обекта, че ние се сканира. Затова тези редове минават през проекцията на сянката директно в самолета бюро. За всяко изображение, ние откриваме точното колоната, че краят на сянка (ние сме проследяване в левия край на сянката) пресича всеки един от тези два реда. Тъй като ние знаем, че тези две точки са в самолета бюро можем да директно прилага трансформацията дадена ни от калибрирането на камерата, за да възстанови своите 3D координати. Тези три точки са изчислени за всяко изображение (светлината координира винаги остава същото, така че ние сме наистина само изчислителна две точки на изображението).

      Ние използваме техника прагово на интензитетите на всеки пиксел покрай този референтен ред, за да се определи точната колоната, където в левия край на сянката пресича с референтния ред. Ние трябва да следим на редица различна интензивност. Това са изображения в сиви полутонове, така че интензитетът варират от 0 (черно) до 255 (бяло):

      • Imax – Максималният интензитет на сивата скала на всеки пиксел по еталонната ред.
      • Imin – минимум сивата скала интензивността на всеки пиксел по еталонната ред.
      • Icontrast – Разликата между максималната и минималната стойност. Ако тази разлика е по-ниска от прага на контраст, който задаваме (40 в нашите експерименти), тогава ние просто не може да се прави разлика между части от изображението в сянка и части, които не са в сянка по този ред. Изображенията, които не разполагат с разлика над този праг на техните референтни редове се игнорират.
      • Ishadow – прагова стойност за определяне на това дали ние сме вътре на сянка или не. Това се определя като средната стойност между минималните и максималните интензитети.

      След като сме изчислява всички тези ценности в рамките на референтния ред, ние след това се върна и да сканирате целия ред за втори път. За пиксел, който пресича Ishadow праг за първи път очакваме. (Пиксели в началото на изображението трябва да бъде над Ishadow, и ние търсим за първи пиксел, че падне под този праг). Ние след това направете проста линейна интерполация между пикселите непосредствено преди ние прекрачи прага и на пиксела веднага след прага да намерите точната пиксел, при която острието на сянка прекоси референтен ред. Тъй като ние сме интерполиране, получаваме стойност колона на ниво под-пиксел.

      Изчислителна времето, че краят на сянка пресича всеки пиксел се прави по много подобен начин на начина, по който се изчисли референтните точки. Въпреки това, в този случай ние гледаме на стойност даден пиксел с течение на времето, държейки реда и колоната фиксиран. В предишния случай ние държим на реда и времето фиксирани и варира стойността на колоната.

      Ние отново се изчисли интензивността: Imax, Imin, Icontrast и Ishadow. Качваме се на тези стойности за всеки пиксел. Ако даден пиксел никога има стойност Icontrast по-голяма от прага, определен, можем да кажем, че пикселът е било никога не е била пресечена от сянката, или е била винаги в сянка. В повечето случаи това се случва в пиксели, които са винаги в сянката на обекта, че ние се сканира. Няма данни се изчислява за пиксели, които са винаги в сянка.

      След като направите първо преминаване на изображенията и получаване на стойностите на интензитета, ние правим второ преминаване на изображението и да намерят първия кадър, в който изображението е преминал прага на Ishadow. Ние тогава интерполира между тази рамка и рамката непосредствено преди тя да се намери точното време (номера на рамата), че краят на сянка прекоси че пиксел. Ние получаваме тази стойност на ниво под-рамка.

      Вижте раздела за анализ за по-подробно описание на изпълнението на този метод и проблемите, пред.

    • Геометрия: Ленни калибрирането на камерата, имаме нормалата на бюрото равнина и перпендикулярното разстояние между бюрото равнина и оптичната центъра на камерата (произхода на нашата система). От това можем да изчисли уравнението на бюрото равнина в формат: ax + by + cz = d. За да намерите 3D координира от един пиксел в равнината, ние с нетърпение времето за сянка пропускателен за тази пиксел (изчислена по-горе за всички пиксели). След това отидете на нашия списък с референтни точки, които изчисляват за всяко изображение, за да намерите на референтните точки за точната времева рамка, че краят на сянка прекоси този пиксел. Тъй като времето е на ниво под-рамка правим друга линейна интерполация на отправните точки, които бяха изчислени само за всяка цяла конструкция.Тези референтни точки са в 2D координати изображение (ред, колона). По стрелба лъч през референтните точки за по-голям и пресичащи се, че масив с равнината, бюро, получаваме 3D координатите на две отправни точки за времевата рамка на пиксела, че ние се опитваме да се изчисли. Тези две отправни точки, заедно с леката позиция (изчислени от калибрирането на светлина) определи друг самолет, равнината на сянка. Ние се пресичат лъч прониза пиксел, че ние се опитваме да се изчисли с равнината на сянка, и това ни дава 3D координира от тази пиксел. Ние този процес се повтаря за всички пиксели в изображението, за да получите точка облак.

Резултати

  • Настройвам:Нашата 3D настройка на работния плот фотография: [План 1] [План 2] [План 3] [План 4]
  • Калибрация:
    • Камера за калибриране: Проба камера калибриране входно изображение и изходни параметри. Файлът с параметри на камерата изход е в точния формат, който се извежда от кода Цай и в него се посочва външните и вътрешните параметри на камерата.
    • Светово калибриране: Проба светлина калибриране входно изображение и изходния файл . Светлина за калибриране на изходния файл от уточнява изчислява 3D координатна на светлинния източник, по отношение на камерата координатна система.
  • 3D Точка Добив: Визуална представа за извличане на сянка край и местата на отправната точка: [Сянката на край]
    Облак от точки на топка за голф с втория от два източника на светлина: [голф2 1] [голф2 2]
    Обединения облак от точки на топка за голф с двете първи и втори светлинни източници: [golf_merge 1] [golf_merge 2]
    облак от точки на бутилка асприн: [бутилка] и неговото окото
    Облак от точки на множество обекти (asprin бутилка, голф топка и конусни) сканирани наведнъж: [Мулти]
    Забележка: Файловете на .pts са действителните облаци точка и могат да бъдат гледани с програмата ShowInvPts на SGI или с модифицирано PointCloudsShowCenter (първоначално написан от Итън Голд) зрителя, който идва с дистрибуторската ни източник.

Анализ

  • За настройка: Очаквайте с подходяща настройка на фотоапарата и светлината е един от най-големите предизвикателства на проекта, а дори и сега, тя все още може да се използва известно подобрение.Отне ни време, за да получите снимки на обекта с видими сенки върху него.И накрая, ние се свежда до сканиране в пълна тъмнина (с изключение на източник на светлина от една) и да сканирате само белите обекти.
  • Калибрация:
    • Камера за калибриране: Някои анализ на нашата схема за калибриране на камерата, чрез обсъждане на усъвършенстване на кръстовищакрачка от позициите, включени в ccalib техническа дискусия. Възможните ъглите намерени са много шумни и трябва да бъде усъвършенстван, което е следващата стъпка в преработката. Тъй като ние знаем, че тези въпроси са близки до истинския корнер точка ние просто искаме да ги придвижват, така че те са по-близо до истинската корнер точка. След предложение на Пол, ние първо се опитайте да преместите точка нагоре и надолу, за да намерите мястото, бяха съседни пиксела преминат цветове между черно и бяло. Тогава точката се премества наляво и надясно отново търси промяна в цвета.Ако точката беше успешно преместен на „по-добро“ място, се съхраняват;в противен случай точката се изхвърля. В края на краищата от точките са били преместени, те след това са рафинирани повече, за да се отървете от точки, които близо една до друга, така че само една точка е в корнер. Тези рафинирани ъгъл точки са точките, които се изпращат на Цай калибриране камера кода на игралните точки с в образа на калибриране. Тъй като ние сортирани линиите и изчислява пресечните точки в определен ред, ние знаем, че в „най-добрия“ положението, че тези въпроси са в квадратен шаблон. Ситуации, които са лоши за програмата са:
      1. Когато една (или повече) външен човек точки все още съществуват след ъглите, Това обърква последния етап, когато ъгъл точки са съчетани с компютърна 3D точка.
      2. Точката на ъгли намерено не правят квадрат, отново това причинява проблеми при съвпадение ъгъл точки за 3D точки
      3. Всички линии (или повечето от линиите) са изхвърлени, защото те не отговарят на „хубави“ линии качества (като се започне от ляво на дясно отгоре-надолу). Това води до много трудности при етапите след поради липсата на данни.
      4. Ситуация, която не съответства на направените предположения, резултат …. много лошо.

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

    • Светово калибриране: Светлинният местоположението е calculcated използвайки много проста геометрична мотиви. Единственият реален сложността натъкна внедряването на това е в метода на потребителя вход / автоматизация. Автоматичен принцип е трудно в този случай, тъй като не съществува лесен начин за получаване на координатите на горната и долната от сянката молив без някои човешка намеса. Това може да бъде един бъдещ път на проучване.Друг основен проблем е да се изберат между две или повече входни калибриране изображения. Оказва се, че облаците крайната точка са доста стабилни на светлина населено място, толкова дълго, тъй като е в близост до правилната стойност. Това се наблюдава по време на изпитването. Въпреки това, като се използва средната стойност на много места кандидатки помага да се изгладят кликане Грешки / лоши входни изображения. По този начин има по-добра оценка на светло място.Недостатък вграден в тази схема е, че този конкретен хартия и системата се опира на хипотезата, че светлината е точков източник. Това е много нереалистично, и авторите са отишли, за да разгледа този въпрос в по-късно изследвания. За бъдещи имплементаторите / модификатори на настоящата система за сканиране, това ще бъдат също много добра позиция да надникнат.
  • 3D Точка Добив: Когато се вгледате в точката облаците окончателни, което сме извлекли от данните, ще забележите, че облаците изглеждат малко по-шумни. Нашите бюро самолети имат забележим дебелина до тях и нашите обекти са много повърхностни вариация.Така например, на окото, че ние, генерирана от бутилката с лекарство е много назъбени. Ние смятаме, че този вариант се дължи основно на пропуски в метода на референтна точка екстракция.Времевият анализа работи изключително добре и в по-голямата си част, ние имаме много ясно определено в сянка ръбове за всяко изображение. Този процес е достатъчно добра, и ние не мисля, че това може да обясни шума видяхме в нашите крайни резултати. Пространственият анализ за намиране на референтните точки обаче е много по-неприятен.Ако се вгледате в някои примерни снимки от нашите сканирания (включено към дистрибуцията на сорса), ще забележите, че има често е много голям и слаб полусянка при ръба на сянка. Какво се случи в много от кадрите е, че прагът на сянка е изчислена да бъде в средата на тази много голяма полусянка. Визуално инспектиране на тези референтни точки, показват, че те често са открити в средата на полусянката и не са били, че в близост до добре дефинирани сянката.За да направим нещата по-лошо, полусянката очевидно се промени малко по размер, както пръчката прекоси обекта. Това най-вероятно се дължи на лицето, заемащо пръчката движи пръчката нагоре и надолу, а не само от ляво на дясно. Резултатът е, че референтните точки не винаги гладко се движат в рамките на базовата линия и затова самолетите сянка не са особено съвместими от една снимка към следващата. Това преместване сянка самолет лесно може да обясни шумът, който видяхме в нашите данни.

Източник на код

Тук е изходния код на нашата институция: [източник]

Ето една извадка набор от изображения, за да го тествате с: [проба]

Архив на проекта

Тук е от архива на този проект: [Архив]

Позоваването

Подобна работа