Praca dyplomowa v2 - repo.pw.edu.pl

68
Rok akademicki 2013/2014 Politechnika Warszawska Wydzial Elektroniki i Technik Informacyjnych Instytut Informatyki PRACA DYPLOMOWA INŻYNIERSKA Jakub Dawid Barejka Rozpoznawanie obiektów 3D Opiekun pracy: dr inż. Piotr Garbat Ocena: ..................................................... ................................................................ Podpis Przewodniczącego Komisji Egzaminu Dyplomowego

Transcript of Praca dyplomowa v2 - repo.pw.edu.pl

Page 1: Praca dyplomowa v2 - repo.pw.edu.pl

Rok akademicki 2013/2014 Politechnika Warszawska

Wydział Elektroniki i Technik Informacyjnych Instytut Informatyki

PRACA DYPLOMOWA INŻYNIERSKA

Jakub Dawid Barejka

Rozpoznawanie obiektów 3D

Opiekun pracy: dr inż. Piotr Garbat

Ocena: .....................................................

................................................................

Podpis Przewodniczącego Komisji Egzaminu Dyplomowego

Page 2: Praca dyplomowa v2 - repo.pw.edu.pl

Kierunek: Informatyka

Specjalność: Inżynieria Systemów Informatycznych

Data urodzenia: 1991.09.24

Data rozpoczęcia studiów: 2010.10.01

Życiorys

Urodziłem się 24 września 1991 roku w Kwidzynie. W 2007 roku przeprowadziłem się

do Gdyni, gdzie dostałem się do III Liceum Ogólnokształcącego

im. Marynarki Wojennej RP – klasa o profilu matematyczno – fizyczno -

informatycznym. W 2010 roku zdałem egzamin maturalny, a następnie rozpocząłem

studia na Wydziale Elektroniki i Technik Informacyjnych Politechniki Warszawskiej.

Kształcę się na specjalności Inżynieria Systemów Informatycznych.

..............................................

Podpis studenta EGZAMIN DYPLOMOWY

Złożył egzamin dyplomowy w dniu ........................................................................ 20__ r

z wynikiem .........................................................................................................................

Ogólny wynik studiów: ......................................................................................................

Dodatkowe wnioski i uwagi Komisji: ...............................................................................

............................................................................................................................................

............................................................................................................................................

Page 3: Praca dyplomowa v2 - repo.pw.edu.pl

STRESZCZENIE

W pracy dokonano analizy problemu segmentacji chmur punktów – w pełni

automatycznej detekcji płaszczyzn. Rozpoznawanie przeprowadzono w oparciu o dane,

pochodzące z kamer strukturalnych, w szczególności z czujnika Kinect. Dokonano przy

tym przeglądu i oceny wybranych algorytmów pod kątem otrzymywanych wyników

oraz szybkości działania. Dużą uwagę zwrócono na algorytm RANSAC, który

umożliwia iteracyjną detekcję płaszczyzn w zbiorze cechującym się znacznym

poziomem szumu pomiarowego i ilością punktów odstających. W celu optymalizacji

procesu detekcji zaproponowano kilka metod poprawy, w tym podział chmury

na podzbiory reprezentujące połączone ze sobą elementy, a także wykorzystanie

normalnych do powierzchni, liczonych dla danego podzbioru punktów.

Słowa kluczowe: chmura punktów, Kinect, segmentacja, RANSAC, wykrywanie

obiektów.

3D Object Recognition

SUMMARY

This thesis describes matter of point clouds segmentation – fully automatic processing

of detecting planes. The paper presents results on object recognition which is conducted

by the Kinect 3D camera. Classification of object detection algorithms is shown.

Proposed algorithms are based on RANSAC estimator, which is an iterative method

to estimate parameters of a mathematical model and was designed to cope with a large

proportion of outliers in the input data. Some modifications for this algorithm,

like using Euclidean clusters extraction and estimating surface normals, are introduced.

These methods show significant improvements in accuracy and speed over original

RANSAC estimator.

Keywords: point cloud, Kinect, segmentation, RANSAC, object detection.

Page 4: Praca dyplomowa v2 - repo.pw.edu.pl

Spis treści

1 Wprowadzenie .................................................................................................................. 6

1.1 Cel pracy oraz jej układ ............................................................................................... 8

2 Pozyskiwanie danych ...................................................................................................... 9

2.1 Format PCD ................................................................................................................ 9

2.2 Pozyskanie chmury punktów ...................................................................................... 11

3 Wykrywanie obiektów ................................................................................................. 14

3.1 Etap przetwarzania wstępnego .................................................................................. 14

3.2 Strategie rozpoznawania obiektów ............................................................................ 15

3.2.1 Strategie optymalne ............................................................................................... 15

3.2.2 Strategie heurystyczne ........................................................................................... 16

3.3 Estymator RANSAC – wykrywanie płaszczyzn .......................................................... 18

3.3.1 RANSAC ............................................................................................................... 18

3.3.2 PROSAC ............................................................................................................... 21

3.3.3 MSAC.................................................................................................................... 22

4 Implementacja ............................................................................................................... 24

4.1 Narzędzia ................................................................................................................... 24

4.2 Program ..................................................................................................................... 25

5 Testy ................................................................................................................................. 28

5.1 Weryfikacja słuszności próbkowania chmury ............................................................ 28

5.2 Porównanie estymatorów .......................................................................................... 32

5.2.1 Jedno pudełko ........................................................................................................ 32

5.2.2 Dwa pudełka .......................................................................................................... 35

5.2.3 Trzy pudełka .......................................................................................................... 36

5.2.4 Większa liczba pudełek ......................................................................................... 38

5.3 Problem drugiego planu ............................................................................................ 42

5.4 Wnioski ...................................................................................................................... 45

Page 5: Praca dyplomowa v2 - repo.pw.edu.pl

6 Próba poprawy wyników ............................................................................................ 46

6.1 Szukanie płaszczyzn prostopadłych ........................................................................... 46

6.2 Podział chmury na podzbiory .................................................................................... 47

6.2.1 Drzewo kd ............................................................................................................. 48

6.3 „Lokalne” normalne .................................................................................................. 49

7 Porównanie zmodyfikowanych metod ..................................................................... 51

7.1 Większa liczba pudełek .............................................................................................. 51

7.2 Problem drugiego planu ............................................................................................ 57

8 Podsumowanie ............................................................................................................... 65

8.1 Wnioski ...................................................................................................................... 65

8.2 Możliwości rozwoju pracy ......................................................................................... 66

Bibliografia ............................................................................................................................. 68

Page 6: Praca dyplomowa v2 - repo.pw.edu.pl

6

1 Wprowadzenie

Rekonstrukcja trójwymiarowych obiektów odgrywa w ostatnich latach coraz większą

rolę. Rozwój technologii, a także wprowadzenie na rynek zupełnie nowych kategorii

urządzeń, takich jak inteligentne telefony czy tablety, otworzył nowe horyzonty badań,

zawłaszcza w temacie modelowania obiektów na podstawie nieuporządkowanej chmury

punktów.

Co więcej, ostatnio modnym tematem stało się hasło rzeczywistość rozszerzona, która

to jest systemem łączącym świat rzeczywisty ze światem generowanym komputerowo.

Zazwyczaj wykorzystywany jest obraz z kamery, na który nakłada się generowaną

w czasie rzeczywistym grafikę 3D. Przykładowo, użytkownik może za pomocą

półprzeźroczystych okularów obserwować życie toczące się na ulicach miasta,

jak również elementy wytworzone przez komputer nałożone na rzeczywisty świat.

Wykrywaniem obiektów oraz wykorzystaniem rzeczywistości rozszerzonej

zainteresowane są już w tej chwili wielkie firmy: zarówno technologiczne (Google

ze swoimi szumnie zapowiadanymi okularami), jak i branżowe (choćby IKEA

z ostatnio wydaną aplikacją prezentującą katalog produktów z wykorzystaniem właśnie

rzeczywistości rozszerzonej). Nietrudno jednak wyobrazić sobie kolejne obszary

zastosowań tego zagadnienia. Przykładowo, możliwość wykrycia wszystkich ścian

i podłóg w lokalu, a następnie zaprezentowania klientowi mieszkania po potencjalnym

remoncie, byłaby dużą wartością dodaną dla firm wykończeniowych. Należy więc

spodziewać się utrzymania tego trendu, a także jeszcze większego znaczenia tematyki

wykrywania obiektów w życiu codziennym.

Co się zaś tyczy samej detekcji obiektów, to istotnym jej etapem jest segmentacja,

mająca na celu wyodrębnienie fragmentów o tym samym znaczeniu semantycznym.

Wiele prac poruszało już tematykę segmentacji, jednak zwykle odnosiła się ona do

Page 7: Praca dyplomowa v2 - repo.pw.edu.pl

7

obrazów 2D. Natomiast otaczający nas świat nie jest dwuwymiarowy, więc

przetwarzanie dwuwymiarowych obrazów zawsze będzie w pewnych okolicznościach

prowadziło do niepoprawnych wniosków, bądź będzie co najmniej niewystarczające.

Oto dowód: jedna z najczęściej używanych metod 2D, mianowicie algorytm SIFT

(Scale Invariant Feature Transform) znajduje stabilne cechy lokalne (punkty

charakterystyczne) poprzez stworzenie piramidy obrazów o coraz mniejszej

rozdzielczości. Obrazy tworzące piramidę są obrazami różnicowymi, tzn. uzyskiwane

są w wyniku odjęcia dwóch obrazów powstałych przez zastosowanie na obrazie

początkowym filtrów Gaussa o różnych parametrach. Cechami lokalnymi są

odnalezione w obrazach piramidy ekstrema, spełniające następujące warunki:

• jasność punktów musi przekraczać zadaną wartość,

• punkty nie mogą leżeć wzdłuż linii prostej.

Dla tak wyznaczonych punktów oblicza się wektor cech, będący rodzajem histogramu

gradientów liczonych w ich otoczeniu. Takie cechy są w dużej mierze niewrażliwe na

natężenie oświetlenia (ze względu na użycie gradientów), obrót (kierunek gradientów

zapisuje się względem kierunku gradientu punktu charakterystycznego) i skalę (dzięki

stosowaniu piramidy DOG – Difference of Gaussian).

Uzyskane w ten sposób wektory cech stanowią pewien opis obrazu. Porównując opisy

dwóch obrazów można znaleźć wspólne cechy (punkty charakterystyczne) obrazu

wzorcowego z obrazem przeszukiwanym (Pawlik, Mikrut, 2006 [1]).

Rys. 1.1 Przedstawienie niepoprawnego wykrycia obiektu. Obraz pochodzi z [2]

Page 8: Praca dyplomowa v2 - repo.pw.edu.pl

8

Jednak jak pokazano na Rys. 1.1, ten mechanizm często bywa zawodny. Wykryte

punkty charakterystyczne z lewego obrazu zostały połączone z punktami

charakterystycznymi obrazu drugiego, choć nie powinny. Lewy obraz to butelka,

podczas gdy prawy obraz to tylko kubek z nadrukiem tejże butelki. Niestety, detektory

dwuwymiarowe nie są w stanie wykryć tej różnicy, co dowodzi słuszności postawionej

tezy. Z tego właśnie powodu niniejsza praca będzie dotyczyła problemu wykrywania

obiektów w przestrzeni trójwymiarowej.

1.1 Cel pracy oraz jej układ

W świecie rzeczywistym znaczna część obiektów jest w istocie pewną kombinacją

wielu płaszczyzn. W związku z tym w niniejszej pracy przeprowadzam analizę

problemu segmentacji chmur punktów – w pełni automatycznej detekcji płaszczyzn.

Dokonuję przy tym przeglądu i oceny wybranych algorytmów pod kątem

otrzymywanych wyników oraz szybkości działania. Prezentuję także pomysły mające

na celu optymalizację działania tych algorytmów. Celem pracy jest zaproponowanie

rozwiązania, które jest w stanie rozpoznawać obiekty (będące kombinacją wielu

płaszczyzn), z różnej odległości, z różnych punktów widzenia oraz o różnym stopniu

skomplikowania, w możliwie najkrótszym czasie.

W dalszej części pracy (rozdział drugi) omawiam sposoby pozyskiwania danych

wejściowych dla problemu rozpoznawania obiektów. W rozdziale trzecim prezentuję

algorytmy wykorzystywane przy wykrywaniu płaszczyzn. Rozdział czwarty

poświęcony został omówieniu implementacji i architektury powstałego programu,

w tym narzędzi użytych w trakcie powstawania pracy. Rozdział piąty to prezentacja

otrzymanych wyników. Z kolei rozdział szósty zawiera pomysły, mające na celu

poprawę rozwiązania. Pomysły te są następnie weryfikowane w rozdziale siódmym.

Ostatni rozdział to końcowe wnioski oraz proponowane kierunki rozwoju.

Page 9: Praca dyplomowa v2 - repo.pw.edu.pl

9

2 Pozyskiwanie danych

W celu przeprowadzenia rozpoznawania obiektów potrzebujemy dostarczyć zbiór

danych, z którym będziemy pracować. W niniejszej pracy przeprowadzam

rozpoznawanie obiektów w oparciu o tzw. chmurę punktów (ang. point cloud).

Chmura punktów to struktura zawierająca zbiór punktów w odniesieniu do danego

układu współrzędnych. W moim przypadku będzie to trójwymiarowy układ

współrzędnych, więc punkty będą musiały mieć określone współrzędne X, Y, Z. Oprócz

tego chmura może zawierać także inne informacje, takie jak:

• ilość punktów,

• szerokość/wysokość chmury,

• barwę punktów,

• położenie względem urządzenia rejestrującego.

2.1 Format PCD

Przechowywane chmury punktów zapisywane są w formacie PCD [3]. Przykładowy

plik wygląda następująco:

# .PCD v.7 - Point Cloud Data file format VERSION .7 FIELDS x y z r g b SIZE 4 4 4 4 TYPE F F F F COUNT 1 1 1 1 WIDTH 213 HEIGHT 1 VIEWPOINT 0 0 0 1 0 0 0 POINTS 213 DATA ascii

Page 10: Praca dyplomowa v2 - repo.pw.edu.pl

10

0.93773 0.33763 0 59 59 59 0.90805 0.35641 0 57 57 57 0.81915 0.32 0 59 59 59 (…) 0.944 0.29474 0 57 57 57 0.98111 0.24247 0 56 56 56 0.93655 0.26143 0 56 56 56 0.74459 0.32192 0 59 59 59 0.69927 0.32278 0 59 59 59 0.8102 0.29315 0 57 57 57

Gdzie poszczególne pola oznaczają:

• VERSION – wersja formatu PCD.

• FIELDS – określa nazwę każdego pola, które może mieć punkt. Przykłady:

o FIELDS x y z # tylko dane o położeniu

o FIELDS x y z r g b # dane o położeniu, a także kolor

• SIZE – specyfikuje rozmiar każdego wymiaru (w bajtach).

• TYPE – określa typ każdego wymiaru. Możliwe wartości:

o I - reprezentuje typy ze znakiem (signed): int8 (char), int16 (short) oraz

int32 (int).

o U - reprezentuje typy bez znaku (unsigned): uint8 (unsigned char),

uint16 (unsigned short), uint32 (unsigned int).

o F – float.

• COUNT – określa ilość elementów w każdym wymiarze (pola reprezentujące

położenie x, y, z będą miały wymiar 1, ale np. histogramy miałyby więcej).

• WIDTH - szerokość chmury określona jako liczba punktów w wierszu.

• HEIGHT – wysokość chmury określona jako liczba punktów w kolumnie.

• VIEWPOINT – określa położenie względem urządzenia rejestrującego.

Zapisana jest jako wektor translacji (tx ty tz) + kwaternion (qw qx qy qz).

Domyślną wartością jest: VIEWPOINT 0 0 0 1 0 0 0.

Page 11: Praca dyplomowa v2 - repo.pw.edu.pl

11

• POINTS – całkowita liczba punktów w chmurze (tak naprawdę nadmiarowe).

• DATA – właściwe dane nt. chmury punktów. Mogą być w ASCII lub zapisane

binarnie.

2.2 Pozyskanie chmury punktów

Chmury punktów mogą być tworzone m.in. z wykorzystaniem:

• kamer strukturalnych (RGB-D),

• stereo kamer,

• skanerów 3D,

• kamer wykorzystujących metodę czasu powrotu wiązki (ToF).

W mojej pracy wykorzystałem czujnik ruchu dla konsoli Xbox 360, mianowicie

urządzenie Kinect, które to jest przykładem prostej kamery

strukturalnej.

Rys. 2.1 Czujnik Kinect. Obraz pochodzi z [4]

Wydanie Kinect’a w 2010 r. zrewolucjonizowało świat widzenia komputerowego

i znacząco przyspieszyło jego rozwój. Oto bowiem wreszcie można było nabyć kamerę

RGB-D za stosunkowo niewielkie pieniądze. Korzystając z Kinect’a mamy możliwość

pozyskiwania informacji o scenie od razu w trzech wymiarach.

Jak to jest zrealizowane? Otóż urządzenie posiada dwie kamery. Pierwsza z kamer to

standardowa kamera wizyjna RGB, o rozdzielczości 640x480, wykorzystywana do

Page 12: Praca dyplomowa v2 - repo.pw.edu.pl

12

przetwarzania obrazu wizyjnego (m.in. rozpoznawanie twarzy) oraz nanoszenia

kolorów i tekstur na obiekty wirtualne. Działa podobnie jak kamera internetowa, a więc

przesyła serie obrazów do komputera z prędkością 30 klatek na sekundę. Z kolei druga

kamera jest częścią podsystemu sensora, zwracającego informację o głębokości.

Podsystem ten działa na zasadzie pomiaru odległości za pomocą światła strukturalnego.

Promiennik podczerwieni wyświetla przed kamerą chmurę punktów, których położenia

rejestrowane są przez kamerę z filtrem podczerwonym. Uzyskana rozdzielczość

informacji o głębi z kamery to 300x200 i dalej jest programowo interpolowana do

rozdzielczości kamery wizyjnej (640x480).

Zakres działania czujnika odległości to w teorii 0,4-6,5 m. Praktyka pokazuje, że jest to

nieco mniej, ale dla naszych zastosowań wciąż wystarczająco dużo. Z kolei

zastosowanie metody światła strukturalnego pozwala na bezbłędne działanie sensora

tylko w pomieszczeniach – odczyt jest wrażliwy na zbytnie nasłonecznienie. To także

należy mieć na uwadze. Generalnie jednak do naszych zastosowań Kinect nadaje się

doskonale.

W Tab. 1 oraz na Rys. 2.2 zaprezentowano budowę i architekturę urządzenia.

Rys. 2.2 Budowa sensora Kinect. Obraz pochodzi z [5]

Page 13: Praca dyplomowa v2 - repo.pw.edu.pl

13

1. Zestaw mikrofonów Zawiera 4 mikrofony, które wykorzystywane są przez funkcje

rozpoznawania mowy. Mikrofony te posiadają funkcję filtruj ącą zakłócenia.

2. Emiter podczerwieni Emituje wiązkę promieni podczerwonych, które odbijając się od powierzchni zniekształcają się i następnie są odczytywane przez

kamerę głębokości.

3. Kamera głębokości Analizuje zniekształconą przez obiekt wiązkę promieni

podczerwonych, tworząc model 3D pomieszczenia i obiektów znajdujących się w nim.

4. Automatyczny kontroler nachylenia

Dostosowuje położenie sensora w sposób automatyczny w zależności od rozmiarów śledzonych obiektów.

5. Kabel połączeniowy Nie jest to zwykły kabel z gniazdem USB. Z tego względu do

połączenia sensora Kinect z komputerem potrzebny jest dodatkowy zasilacz z kablem USB.

6. Kolorowa kamera RGB

Działa podobnie jak kamera internetowa, przesyła serie obrazów do komputera z prędkością 30 klatek na sekundę.

Tab. 1 Opis architektury Kinect. Tabela pochodzi z [5]

Na następnych stronach przechodzę do istoty problemu, a więc samego zadania

wykrywania obiektów i problemów z tym związanych.

Page 14: Praca dyplomowa v2 - repo.pw.edu.pl

14

3 Wykrywanie obiektów

W rozdziale omówiony został cały proces prowadzący do wykrycia obiektu.

Na początku prezentuję sposób na ograniczenie liczebności zbioru danych

wejściowych, następnie przedstawiam strategie rozpoznawania obiektów, a w ostatniej

części omawiam najciekawsze metody, które służą do realizacji tego celu. Jak zostało

wspomniane we wstępie, znaczna część obiektów codziennego użytku to pewne

kombinacje płaszczyzn, dlatego większość treści odnosi się do wykrywania właśnie

nich.

3.1 Etap przetwarzania wstępnego

Zanim przejdę do omówienia samego wykrywania płaszczyzn, należy zmierzyć się

z pierwszym napotkanym problemem. Otóż trójwymiarowa chmura punktów,

którą otrzymujemy z urządzenia Kinect zawiera ponad 300 000 punktów. Nie jest to co

prawda liczba tak duża, jaką można by uzyskać korzystając z nowoczesnych

skanerów 3D, jednak pomimo tego faktu, musimy zacząć od zmniejszenia ilości

punktów. Należy bowiem wziąć pod uwagę następujący aspekt: po całej takiej chmurze

punktów będziemy iterować wiele razy. Co więcej, rzeczywiste chmury punktów

pozyskiwane poprzez urządzenia stereowizyjne są nieco zaszumione i Kinect nie jest tu

wyjątkiem.

W celu rozwiązania tego problemu, tj. zmniejszenia ilości punktów, a więc

przyspieszenia obliczeń, a także poprawy jakości wykrywanych płaszczyzn, zastosuję

próbkowanie uzyskanej chmury punktów przy użyciu siatki wokseli. Innymi słowy,

podzielę chmurę punktów na siatkę złożoną z wokseli. W moim przypadku przyjąłem

rozmiar woksela jako 1 cm x 1 cm x 1 cm. Po owym podziale, wszystkie punkty

znajdujące się w ramach danego pojedynczego woksela zastępuję jednym punktem,

Page 15: Praca dyplomowa v2 - repo.pw.edu.pl

15

będącym środkiem ciężkości dla punktów znajdujących się w tym obszarze (czyli

wyznaczam centroid). Takie podejście jest nieco wolniejsze aniżeli przybliżanie

poprzez zwykły środek woksela, ale za to obarczone mniejszym błędem. Należy przy

tym także zauważyć, że wspomniany przeze mnie rozmiar woksela jest jedynie sugestią,

rozwiązaniem, które w moim przypadku dało najlepsze wyniki. Stosując mniejszy

rozmiar woksela uzyskalibyśmy obiekty lepszej jakości, jednak kosztem zwiększenia

czasu wykonywanych obliczeń.

3.2 Strategie rozpoznawania obiektów

Samo rozpoznawanie obiektu to zadanie polegające na znalezieniu znanego obiektu

w obrazie bądź scenie. To zadanie, choć łatwe dla człowieka, dla systemów wizyjnych

wciąż stanowi wyzwanie, wymaga bowiem dokonania:

• detekcji – wykrycia w obrazie zbioru segmentów,

• klasyfikacji – określenia najlepszego dopasowania zbioru segmentów

ze zbiorem elementów reprezentacji modelu obiektu,

• lokalizacji – określenia położenia wykrytego obiektu w przestrzeni

trójwymiarowej lub na płaszczyźnie. Dla obiektu sztywnego o znanych

rozmiarach występuje od 3 do 6 stopni swobody: dla trójwymiarowego obiektu

wymaga to wyliczenia 6 parametrów (3 translacji i 3 kątów obrotu), natomiast

dla obiektu płaskiego – 3 parametrów (2 translacji i 1 kąta).

Problem wykrywania obiektu 3D ze względu na metody przeszukiwania zbioru modeli

oraz segmentów danych możemy podzielić na strategie optymalne oraz strategie

heurystyczne (Kasprzak, 2009 [6]).

3.2.1 Strategie optymalne

Wyróżnić tu możemy przede wszystkim dwa podejścia:

1. Systematyczne przeszukiwanie – wyznaczenie wszystkich możliwych instancji

dla wszystkich możliwych obiektów modelu i aktualnego zbioru segmentów,

następnie ocena jakości tych instancji i wybór najlepszej z nich.

Page 16: Praca dyplomowa v2 - repo.pw.edu.pl

16

2. Klasyfikator Bayesa dla instancji obiektów

Wyznaczamy rozkłady a priori:

• instancji obiektów p(Mk(Rk, tk)),

• zbioru segmentów pod warunkiem instancji obiektów p(A|Mk(Rk, tk)).

Klasyfikacja Bayesa oznacza poszukiwanie maksimum prawdopodobieństwa

a posteriori instancji obiektu:

(Mk, Rk, tk) = argmax(Mk, Rk, tk) p(Mk(Rk, tk)|A),

gdzie

p(Mk(Rk, tk)|A) ~ p(A|Mk(Rk, tk)) p(Mk(Rk, tk)).

W obu przypadkach strategia optymalna sprawia trudności w realizacji.

W systematycznym przeszukiwaniu problemem jest liczba możliwych instancji, która

w praktyce może być bardzo duża, czego konsekwencją jest duża złożoność

obliczeniowa. Z kolei w klasyfikatorze Bayesa wymiar zmiennej losowej jest bardzo

wysoki, a w związku z tym proces uczenia klasyfikatora jest bardzo skomplikowany.

3.2.2 Strategie heurystyczne

Z powodów wymienionych wyżej, w praktyce częściej stosuje się strategie

heurystyczne, które prowadzą do znalezienia „wystarczająco dobrych” rozwiązań

w akceptowalnym czasie. Wyróżniamy trzy główne sposoby:

1. Strategia „dopasowanie sterowane danymi”

Dla metod tego typu ogólny schemat wygląda następująco:

Dla każdego segmentu znalezionego w zbiorze danych wykonuj:

• wybierz segment (np. długa linia),

• znajdź model o podobnych segmentach,

• zwiększ ocenę modeli, które zawierają wybrany segment.

Przyjmij, że instancje istnieją wówczas, gdy ich modele oceniono powyżej

pewnego progu.

Page 17: Praca dyplomowa v2 - repo.pw.edu.pl

17

2. Strategia „dopasowanie sterowane modelem”

Tę strategię można z kolei sprowadzić do następującego schematu:

Dla każdego modelu wykonuj:

• wybierz model i spróbuj go odnaleźć w scenie (np. szukając części

modelu w obrazie),

• określ wartość podobieństwa modelu i obrazu.

Przyjmij, że instancje istnieją wówczas, gdy ich ocena leży powyżej pewnego

progu.

3. Połączenie obu podanych strategii prowadzi do algorytmu generacji

i weryfikacji hipotez .

Algorytm składa się z dwóch etapów:

Etap „generacji hipotez”

• Określ jedną lub więcej początkowych hipotez, wynikających

z dopasowania niewielu części modelu do niewielu segmentów danych.

• Dla każdej instancji oszacuj wartość wektora parametrów lokalizacji

modelu oraz nieznanej lokalizacji.

Etap „weryfikacji hipotez”

Dla każdej hipotezy:

• Generuj pełną listę dopasowani segmentów

• Jeśli liczba dopasowań jest wystarczająco duża, przyjmij, że w obrazie

istnieje instancja obiektu o tych dopasowaniach. Oszacuj ostateczną

wartość wektora parametrów lokalizacji, a następnie usuń z listy

segmentów segmenty dopasowane teraz.

Powyższe kroki są powtarzane dopóki istnieje wystarczająca liczba segmentów.

Praktyka pokazuje, że algorytm generacji i weryfikacji hipotez sprawdza się najlepiej,

a najpopularniejszą jego realizacją, stosowaną m. in. do odnajdywania macierzy

Page 18: Praca dyplomowa v2 - repo.pw.edu.pl

18

fundamentalnej dla odpowiadających sobie obrazów, jest algorytm RANSAC, któremu

zostały poświęcone następne strony.

3.3 Estymator RANSAC – wykrywanie płaszczyzn

Na następnych stronach prezentuję nieco różniące się między sobą podejścia do

zagadnienia wykrywania płaszczyzn w chmurze punktów. Zadaniem jest nie tylko

wykrycie punktów należących do płaszczyzny, ale również obliczenie modelu

pasującego do tych punktów.

3.3.1 RANSAC

Algorytm RANSAC jest iteracyjną metodą stosowaną w celu estymacji parametrów

poszukiwanego modelu matematycznego obiektu w zbiorze danych zawierającym

znaczną ilość punktów nienależących do modelowanej powierzchni. Fakt ten czyni

estymator RANSAC szczególnie interesującym dla celów przetwarzania chmur

punktów obarczonych szumem i błędnymi pomiarami. Praktyka pokazuje, że RANSAC

jest w stanie poradzić sobie w sytuacji, gdy liczba błędnych punktów przekracza nawet

połowę obserwacji (Zuliani, 2012 [7]). Jak zostało wspomniane wcześniej, działanie

algorytmu obejmuje zasadniczo dwie fazy: inicjalizację i test, obydwie powtarzane

iteracyjnie.

Etap inicjalizacji polega na wyborze w sposób losowy minimalnego zbioru punktów,

który będzie wystarczający do jednoznacznego wyznaczenia parametrów

estymowanego modelu geometrycznego. W przestrzeni trójwymiarowej płaszczyzna

jest definiowana przez cztery parametry, z czego trzy są niezależne. Parametry

hipotetycznego modelu M(ϴ) wyznaczane są zatem w oparciu o trzy elementy losowej

próbki. Następnie pozostałe punkty ze zbioru porównywane są z tak utworzonym

modelem. W tej fazie niezbędne jest przyjęcie pewnego progu δ (ang. threshold)

określającego zakres, w którym uznajemy punkt (p) za pasujący do modelu. Wszystkie

punkty spełniające zadane kryterium (ang. inliers) dodawane są do zbioru CS

(ang. Consensus Set) (1), a cały etap określany jest mianem testu (Poręba, Goulette,

2012 [8]).

Page 19: Praca dyplomowa v2 - repo.pw.edu.pl

19

�� = { � ∈ �: �(�, �(�)) ≤ �} Równanie 1

Różnica między punktem a modelem obliczana jest zgodnie z równaniem (2):

�(�, �(�)) ≝ min ����(�, �∗) = ��(�� − ��∗)!"�#$

Równanie 2

gdzie pi* oznacza rzut ortogonalny punktu p na model M(ϴ).

Dobór odpowiedniej wartości tolerancji odgrywa ważną rolę na poziomie stabilności

algorytmu RANSAC i wpływa na jakość wyodrębnionych płaszczyzn. Jako

że skanowane obiekty nie są utworzone z idealnych powierzchni, a chmura punktów

nie jest pozbawiona szumu pomiarowego, wpasowanie modelu odbywa się

z zachowaniem pewnej elastyczności. Najczęściej tolerancja definiowana jest jako

maksymalna odległość weryfikowanego punktu od teoretycznego modelu.

Proces inicjalizacji i testu powtarzany jest iteracyjnie dla nowo wylosowanej próbki

zbiorów minimalnych, a liczba powtórzeń (Iter) wyznaczana jest zgodnie na podstawie

równania (3). W przypadku gdy liczba punktów w nowym zbiorze CS jest większa od

poprzedniego, zastępuje on dotychczasowy zbiór.

(1 − &) = (1 − '())*+, = -�. = log (1 − &)log (1 − '()

Równanie 3

W pracy zastosowano algorytm RANSAC, którego kolejne etapy możemy przedstawić

jako:

1. Wybierz w sposób losowy trzy punkty spośród punktów zawartych w chmurze.

Jeśli wybrane punkty nie definiują w sposób jednoznaczny płaszczyzny (tzn.

są współliniowe), wybierz inne trzy punkty.

2. Oblicz równanie płaszczyzny pasującej do wybranych punktów, tzn. wyznacz

współczynniki a, b, c, d występujące w równaniu ax + by + cd + d = 0.

Page 20: Praca dyplomowa v2 - repo.pw.edu.pl

20

3. Policz liczbę punktów pasujących do znalezionego modelu. Punkt jest uznawany

za pasujący (ang. inlier), jeśli jego odległość od płaszczyzny nie przekracza

określonej wcześniej wartości tolerancji δ.

4. Powtórz kroki 1.-3. dopóki maksymalna liczba iteracji nie zostanie osiągnięta

i zwróć model z największą liczbą pasujących punktów.

W ten sposób wykryta zostanie pierwsza płaszczyzna. W celu wykrycia kolejnych,

należy usunąć z danych wejściowych punkty, które zostały już dopasowane, a następnie

powtórzyć algorytm. Procedurę tę należy powtarzać dopóki liczba punktów

znajdujących się w chmurze pozwala na sensowne przeszukiwanie (ja przyjąłem tę

minimalną liczbę jako 30% wartości początkowej).

Zaletą algorytmu jest jego prostota oraz stosunkowo duża odporność na błędne punkty

(ang. outliers) – nawet przy dużej ilości szumów, RANSAC jest w stanie poprawnie

znaleźć szukany model. Wadą natomiast jest fakt, że czasami może wymagać zbyt

wielu iteracji. Należy także odnotować, że RANSAC może ponieść porażkę

w przypadku ekstremalnie małej liczby poprawnych punktów.

Rys. 3.1 Prosty przykład działania estymatora RANSAC na przestrzeni 2D. Po lewej stronie znajduje się

zbiór danych wejściowych, natomiast po prawej stronie zaznaczono punkty pasujące do zadanego

modelu oraz dopasowany model. Obraz pochodzi z [9]

Powstało też kilka odmian RANSAC’a, którym poświęcę następne strony.

Page 21: Praca dyplomowa v2 - repo.pw.edu.pl

21

3.3.2 PROSAC

PROSAC (ang. PROgressive SAmple Consensus) to najpopularniejsza modyfikacja

estymatora RANSAC. Struktura algorytmu jest podobna do RANSAC’a: tu również

mamy etap generacji hipotezy oraz jej weryfikację. Jednak wybór punktów trafiających

do etapu testu odbywa się w nieco inny sposób.

W RANSAC’u punkty wybierane były w sposób losowy spośród całego zbioru

punktów. Istniało zatem założenie, że wszystkie punkty są jednakowo dobre.

Tu natomiast zakładamy, że punkty nie są równe i staramy się je w jakiś sposób

wartościować. Typowo funkcją oceniającą jakość punktu może być korelacja

intensywności wokół interesujących punktów bądź też odległość Mahalanobisa liczona

dla ustalonych deskryptorów (Chum, Matas, 2005 [10]).

Następnie, cały zbiór punktów wejściowych jest dzielony na podzbiory, przy czym

podzbiory te sortowane są malejąco względem oszacowanej wcześniej jakości. Jakość

podzbioru równa jest jakości najgorszego punktu wchodzącego w skład tego zbioru.

Należy nadmienić, że moc podzbiorów jest rosnąca, więc w pesymistycznym przypadku

PROSAC może upodobnić się do RANSAC’a.

Punkty trafiające do etapu testu wybierane są w sposób losowy, ale nie z całego zbioru

punktów jak w RANSACu, lecz z najlepszego aktualnie podzbioru. Zakładamy więc,

że uporządkowanie zdefiniowane poprzez funkcję jakości jest nie gorsze niż

uporządkowanie losowe. W związku z tym punkty, które mają większą szansę zostać

uznane za pasujące (ang. inlier), są testowane wcześniej.

W istocie, PROSAC bierze pod uwagę te same próbki co RANSAC, jednak w innej

kolejności. Dzięki temu ma szansę zakończyć swoje działanie wcześniej. Podobnie jak

RANSAC, algorytm kończy swoje działanie kiedy prawdopodobieństwo znalezienia

lepszego rozwiązania spadnie poniżej określonej wartości (typowo 5%).

Page 22: Praca dyplomowa v2 - repo.pw.edu.pl

22

3.3.3 MSAC

Jednym z problemów RANSAC’a jest fakt, że jeśli wartość progowa T (ang. threshold)

zostanie ustalona jako zbyt duża, uzyskane wyniki będą bardzo słabe. Wynika to

z faktu, że RANSAC próbuje minimalizować funkcję kosztu zdefiniowaną jako:

� = � 2(�!)�

Równanie 4

gdzie 2() jest następującą funkcją:

2(!) = 3 0, ! < 6!789��:9�, ! ≥ 6!. Równanie 5

Innymi słowy, punkty uznane za pasujące (ang. inliers) nie kosztują nic, z kolei punkty

uznane za niepasujące (ang. outliers) kosztują zawsze pewną stałą wartość. Przy

wysokiej wartości progowej (T2), w skrajnym przypadku, wszystkie rozwiązania mogą

mieć taką samą funkcję kosztu i w związku z tym wszystkie mogą zostać uznane

za pasujące.

Estymator MSAC z kolei korzysta z innej funkcji kosztu, będącej prostym

M-estymatorem (stąd nazwa M-Estimator SAmple Consensus). Mianowicie, zamiast

funkcji kosztu C korzysta z funkcji

�! = � 2!(�!)�

Równanie 6

gdzie

2!(!) = 3!, ! < 6!6!, ! ≥ 6!. Równanie 7

Page 23: Praca dyplomowa v2 - repo.pw.edu.pl

23

Jak widać, punkty niepasujące ciągle wnoszą do funkcji kosztu pewną stałą wartość,

jednak przy punktach pasujących oceniane jest nie tylko czy pasują, ale również jak

dobrze pasują. Innymi słowy, RANSAC traktował wszystkie punkty uznane za pasujące

jednakowo, tu z kolei możemy je różnicować pod względem jakości, co może być

przydatne w przypadku opisanym wyżej (Tor, Zisserman, 2000, [11]).

Istnieją jeszcze inne modyfikacje RANSAC’a, m. in. MLESAC (Maximum LikeLihood

Estimation SAmple Consensus), RMSAC (Randomized MSAC) i RRANSAC

(Randomized RANSAC), ale ze względu na małą efektywność i kiepską wydajność

czasową (ujawnioną w testach) nie poświęcam im tu miejsca.

W następnym rozdziale prezentuję implementację oraz narzędzia wykorzystane przy

tworzeniu programu powstałego do testowania w/w algorytmów.

Page 24: Praca dyplomowa v2 - repo.pw.edu.pl

24

4 Implementacja

W celu przeprowadzenia testów weryfikujących działanie wyżej opisanych algorytmów,

a także skuteczności metod mających na celu poprawić ich wyniki, została

zaimplementowana aplikacja pełniąca rolę środowiska testowego.

4.1 Narzędzia

W swojej aplikacji wykorzystałem następujące narzędzia i biblioteki:

• PCL (Point Cloud Library) - biblioteka służąca przetwarzaniu trójwymiarowych

chmur punktów. Jest to na tyle duży produkt, że w istocie składa się z kilkunastu

mniejszych bibliotek. Jedna z nich, sample consensus, zawiera implementację

algorytmu RANSAC, a także jego odmian, z czego skorzystałem w trakcie

moich badań.

• Boost - dobrze znana biblioteka C++, dostarczająca implementację wielu

struktur danych i algorytmów. Korzysta z niej PCL (m.in. z shared pointers),

więc jej użycie było konieczne.

• Qt – stworzenie graficznego interfejsu użytkownika.

• Eclipse – zintegrowane środowisko programistyczne (IDE) wraz z wtyczką

CDT, umożliwiającą tworzenie programów w języku C++.

• CMake - narzędzie do automatycznego zarządzania procesem kompilacji

programu, korzystające z prostego języka skryptowego.

• Git - rozproszony system kontroli wersji.

Page 25: Praca dyplomowa v2 - repo.pw.edu.pl

25

4.2 Program

Algorytm w wersji podstawowej można zapisać w następujący sposób:

1. Ustaw parametry wejściowe: estymator, wartość progową oraz maksymalną

liczbę iteracji.

2. Wczytaj wejściową chmurę punktów.

3. Jeśli próbkowanie chmury jest włączone, to zastosuj je na wprowadzonej

chmurze punktów. W przeciwnym razie od razu idź do pkt. 4.

4. Jeśli w chmurze jest wymagana minimalna liczba punktów, to uruchom wybrany

estymator (sparametryzowany podanymi wcześniej wartościami). W przeciwnym

razie idź do pkt. 7.

5. Zapisz odnalezioną płaszczyznę na wyjście.

6. Usuń z chmury punkty wchodzące w skład wykrytej płaszczyzny. Idź do pkt. 4.

7. Wyświetl wykryte płaszczyzny.

8. Zakończ program.

Schemat blokowy przedstawiono na następnej stronie (Rys. 4.1).

W toku prowadzonych testów okazało się jednak (i tak też przewidywano), że taka

podstawowa wersja nie jest wystarczająca. W związku z tym program wzbogacono

o nowe modele obliczeń, omówione szerzej w rozdziale szóstym i siódmym.

Zaprojektowano także graficzny interfejs użytkownika, który umożliwia m.in. wybór

chmury punktów (w formacie PCD), estymatora, modelu obliczeń, a także parametrów,

takich jak maksymalna liczba iteracji czy wartość progowa, decydująca o tym,

czy punkt uznawany jest za pasujący do modelu, czy też nie (Rys. 4.2).

Page 26: Praca dyplomowa v2 - repo.pw.edu.pl

26

Rys. 4.1 Schemat blokowy podstawowej wersji algorytmu

Page 27: Praca dyplomowa v2 - repo.pw.edu.pl

27

Rys. 4.2 Aplikacja pełniąca rolę środowiska testowego

W celu sprawnego prowadzenia testów niezbędne było również zapewnienie

odpowiednich przypadków testowych (w postaci chmur punktów). Z tego powodu

powstała mała aplikacja, wykorzystująca udostępniany przez bibliotekę PCL interfejs

do obsługi czujników takich jak Kinect. Ponieważ operacje wejścia i wyjścia

na chmurach punktów w formacie PCD wykonuje się łatwo (m.in. z tego powodu

zdecydowano się na ten format), w programie zaimplementowano również możliwość

zapisywania chmury punktów, „widzianej” przez Kinect’a w danej chwili.

Następny rozdział to prezentacja i omówienie wyników uzyskanych przy zastosowaniu

podstawowej wersji algorytmów dla różnych estymatorów.

Page 28: Praca dyplomowa v2 - repo.pw.edu.pl

28

5 Testy

W tym rozdziale przedstawiam wyniki uzyskane estymatorami: RANSAC, PROSAC,

MSAC, MLESAC, RRANSAC oraz RMSAC przy zastosowaniu modelu zwykłej

płaszczyzny. Ponieważ skupiamy się na wykrywaniu płaszczyzn, jako obiekty testowe

do wykrycia w scenie wybrano prostopadłościenne pudełka. W najprostszym przypadku

będzie to jedno duże pudełko, natomiast w kolejnych testach liczbę

prostopadłościanów, a więc i płaszczyzn do wykrycia będę zwiększać.

Wszystkie testy przeprowadzam na rzeczywistych chmurach pozyskanych poprzez

urządzenie Kinect. Ponadto, w trakcie eksperymentów ustaliłem, że estymatory dają

najlepsze efekty przy następujących parametrach działania: maksymalna liczba iteracji

równa 1000 oraz próg dopasowania (ang. threshold) równy 0,01.

5.1 Weryfikacja słuszności próbkowania chmury

Na początek poddaję weryfikacji tezę o konieczności ograniczenia liczby punktów

w chmurze pochodzącej z czujnika Kinect.

Już pierwszy test dowodzi słuszności tej tezy. Bez ograniczenia liczby punktów przez

próbkowanie czas obliczeń to, w zależności od estymatora,

5-8 sekund, natomiast stosując próbkowanie jesteśmy w stanie ten czas obniżyć

kilkukrotnie (Rys. 5.1).

Page 29: Praca dyplomowa v2 - repo.pw.edu.pl

29

Rys. 5.1 Porównanie czasów z próbkowaniem włączonym oraz wyłączonym, dla estymatora RANSAC

Zgodnie z teorią próbkowanie poprawia również jakość uzyskanych płaszczyzn (Rys.

5.2, Rys. 5.3).

Rys. 5.2 Chmura punktów zawierająca dwa pudełka

0 5000 10000 15000 20000

1

2

3

1415

1461

1590

4591

11294

16097

czas działania [ms]

ilość

pud

ełek

bez próbkowania

z próbkowaniem

Page 30: Praca dyplomowa v2 - repo.pw.edu.pl

30

Rys. 5.3 Porównanie działania algorytmu przy próbkowaniu wyłączonym (po lewej) oraz włączonym (po

prawej)

W przypadku wyłączonego próbkowania pojawia się niewłaściwe połączenie fragmentu

ściany dużego pudełka ze ścianą mniejszego pudełka. W kolejnych testach ta tendencja

była widoczna jeszcze bardziej (Rys. 5.4, Rys. 5.5, Rys. 5.6).

Rys. 5.4 Chmura punktów zawierająca trzy pudełka

Page 31: Praca dyplomowa v2 - repo.pw.edu.pl

31

Rys. 5.5 Porównanie działania algorytmu przy próbkowaniu wyłączonym (po lewej) oraz włączonym (po

prawej) – trzy pudełka

Rys. 5.6 Porównanie działania algorytmu przy próbkowaniu wyłączonym (po lewej) oraz włączonym (po

prawej) – sześć pudełek

Praktyka pokazuje, że najlepsze efekty uzyskuje się stosując próbkowanie wokselem

równym 1 cm i takiego też będziemy używać w dalszych testach. Samo filtrowanie jest

odtąd stałym elementem każdego testu i zajmuje zawsze w przybliżeniu ok. 1,4

sekundy. Z tego też względu, przy porównywaniu czasów poszczególnych

estymatorów, nie będziemy brali pod uwagę czasu filtrowania (jest bowiem taki sam dla

każdego estymatora).

Page 32: Praca dyplomowa v2 - repo.pw.edu.pl

32

5.2 Porównanie estymatorów

W tym podrozdziale porównuję efekty i czasy działań poszczególnych estymatorów:

RANSAC, PROSAC, MSAC, MLESAC, RMSAC oraz RRANSAC.

5.2.1 Jedno pudełko

Wejściowa scena przedstawia się następująco:

Rys. 5.7 Pierwszy test - jedno pudełko

Analiza czasów działania estymatorów natychmiast pozwala stwierdzić, że estymatory

MLESAC, RRANSAC i RMSAC zupełnie nie sprawdzają się w tych warunkach. Ich

działanie jest stanowczo zbyt długie (Rys. 5.8), a uzyskane płaszczyzny dalekie od

choćby zadowalających (Rys. 5.9). Z tego względu, te trzy estymatory nie będą

w kolejnych testach w ogóle brane pod uwagę.

Page 33: Praca dyplomowa v2 - repo.pw.edu.pl

33

Rys. 5.8 Pierwszy test - porównanie czasów działania estymatorów

Rys. 5.9 Pierwszy test – efekt działania estymatora MLESAC

0 10000 20000 30000 40000 50000

RANSAC

PROSAC

MSAC

MLESAC

RMSAC

RRANSAC

13

7

16

10522

46241

46838

czas działania [ms]

Page 34: Praca dyplomowa v2 - repo.pw.edu.pl

34

Z kolei estymatory RANSAC, PROSAC oraz MSAC radzą sobie bardzo dobrze:

w scenie było umieszczone jedno pudełko i należało wykryć trzy ściany tego pudełka.

Te trzy estymatory wykryły je bezbłędnie (Rys. 5.10). PROSAC okazał się być

najszybszy, z kolei czasy RANSAC’a oraz MSAC’a są zbliżone (z delikatnym

wskazaniem na RANSAC’a - Rys. 5.8).

Rys. 5.10 Pierwszy test - efekt działania estymatora RANSAC. Podobny efekt został uzyskany

estymatorem PROSAC oraz MSAC

Page 35: Praca dyplomowa v2 - repo.pw.edu.pl

35

5.2.2 Dwa pudełka

W teście została wykorzystana ta sama chmura punktów, co w poprzednim rozdziale

(Rys. 5.2). Efekty działania estymatorów prezentują się następująco:

Rys. 5.11 Drugi test - RANSAC

Rys. 5.12 Drugi test – PROSAC (po lewej) i MSAC (po prawej)

Pojawia się nowy problem: estymatory wykryły wszystkie sześć płaszczyzn,

ale PROSAC oraz MSAC niewłaściwie połączyły fragment ściany dużego pudełka

Page 36: Praca dyplomowa v2 - repo.pw.edu.pl

36

ze ścianą małego pudełka. RANSAC poradził sobie najlepiej, natomiast PROSAC

ponownie był najszybszy: jego przewaga czasowa nad RANSAC’iem oraz MSAC’iem

jest jeszcze wyraźniejsza (Rys. 5.13).

Rys. 5.13 Drugi test - porównanie czasów działania estymatorów

5.2.3 Trzy pudełka

Wejściowa scena jest taka sama co w poprzednim rozdziale (Rys. 5.4). Efekty

prezentują się następująco:

Rys. 5.14 Trzeci test - RANSAC

0 20 40 60 80

RANSAC

PROSAC

MSAC

61

23

64

czas działania [ms]

Page 37: Praca dyplomowa v2 - repo.pw.edu.pl

37

Rys. 5.15 Trzeci test - PROSAC

Rys. 5.16 Trzeci test – MSAC

Począwszy od tego testu, w wynikowych scenach zaczynają się pojawiać coraz większe

błędy: RANSAC wciąż wypada najlepiej, ale nie wykrył jednej ze ścian (ściana

mniejszego pudełka, znajdującego się dalej od czujnika) oraz dwukrotnie niewłaściwie

uznał dwie ściany pochodzące w rzeczywistości z różnych pudełek za jedną (górne

oraz „boczne” ściany mniejszych pudełek - Rys. 5.14). PROSAC popełnił ten sam błąd,

a ponadto nie wykrył poprawnie dwóch ścian oraz jedną ze ścian niepotrzebnie

rozdzielił na dwie części (Rys. 5.15). MSAC też połączył dwie ściany pochodzące

z różnych obiektów w jedną, a dodatkowo nie wykrył aż trzech ścian (Rys. 5.16).

Page 38: Praca dyplomowa v2 - repo.pw.edu.pl

38

Jeśli zaś chodzi o czasy, to nic się nie zmieniło, PROSAC pozostaje najszybszy z dużą

przewagą nad pozostałymi estymatorami (Rys. 5.17).

Rys. 5.17 Trzeci test - porównanie czasów działania estymatorów

5.2.4 Większa liczba pudełek

Następne testy, z większą ilością ścian do wykrycia, sprawiają coraz większe problemy

wszystkim estymatorom: niektóre ściany nie są wykrywane, inne bywają niewłaściwie

ze sobą łączone. PROSAC wciąż jest najszybszy, ale począwszy od testu z pięcioma

pudełkami, jego wyniki przestają być akceptowalne. RANSAC popełnia więcej błędów

niż wcześniej, ale wciąż jest najlepszy i przy tym działa nieco szybciej od MSAC’a.

Podsumowanie wszystkich testów zawarte jest w Tab. 2 oraz na Rys. 5.23.

0 50 100 150 200 250

RANSAC

PROSAC

MSAC

188

33

222

czas działania [ms]

Page 39: Praca dyplomowa v2 - repo.pw.edu.pl

39

Rys. 5.18 Chmura punktów zawierają pięć pudełek

Rys. 5.19 Efekt działania estymatora RANSAC. MSAC wypadł podobnie

Page 40: Praca dyplomowa v2 - repo.pw.edu.pl

40

Rys. 5.20 PROSAC nie przeszedł pozytywnie testu

Rys. 5.21 Chmura punktów zawierająca osiem pudełek

Page 41: Praca dyplomowa v2 - repo.pw.edu.pl

41

Rys. 5.22 RANSAC nie przeszedł pozytywnie testu

RANSAC PROSAC MSAC

ilość pudełek

ilość ścian

ilość wykrytych ścian

ilość błędów

ilość wykrytych ścian

ilość błędów

ilość wykrytych ścian

ilość błędów

1 3 3 0 3 0 3 0

2 4 4 0 4 2 4 0

2 6 6 0 6 2 6 1

3 9 8 2 7 3 6 1

5 13 7 3

za dużo błędów, nie przeszedł testu

7 4

6 13 11 4 10 4

6 12 10 3 11 3

8 16 za dużo błędów za dużo błędów

Tab. 2 Podsumowanie efektu wszystkich testów dla trzech najlepszych estymatorów. Na zielono

zaznaczono najlepsze wyniki w danym teście.

Page 42: Praca dyplomowa v2 - repo.pw.edu.pl

42

Rys. 5.23 Podsumowanie czasów trzech najlepszych estymatorów

5.3 Problem drugiego planu

Ciekawa sytuacja ma miejsce w momencie, gdy w scenie znajdzie się coś oprócz

prostopadłościennych pudełek. Test przeprowadzony z jednym pudełkiem

umieszczonym na pierwszym planie oraz „szumem” w postaci dużej liczby

przedmiotów znajdujących się na drugim planie pokazuje, że estymatory mają problem

z rozpoznawaniem obiektów w takim wypadku: popełniają dużo błędów oraz,

co gorsza, czas obliczeń wzrasta nawet o dwa rzędy wielkości (Rys. 5.28).

0 100 200 300 400 500 600 700 800

1

2

3

4

5

6

7

8

13

61

188

105

246

293

385

661

7

23

33

32

0

0

0

0

16

64

222

195

291

389

438

786

czas działania [ms]

ilość

pud

ełek

MSAC

PROSAC

RANSAC

Page 43: Praca dyplomowa v2 - repo.pw.edu.pl

43

Rys. 5.24 Chmura zawierająca jedno pudełko oraz przedmioty na drugim planie

Rys. 5.25 Błąd przy wykrywaniu przedniej ściany pudełka – nieuzasadniony pas w poprzek przedniej

ściany

Page 44: Praca dyplomowa v2 - repo.pw.edu.pl

44

Rys. 5.26 Chmura zawierająca trzy pudełka oraz przedmioty na drugim planie

Rys. 5.27 Całkowita porażka przy wykrywaniu dwóch przednich ścian

Page 45: Praca dyplomowa v2 - repo.pw.edu.pl

45

Rys. 5.28 Porównanie czasu działania w przypadku zaszumionego drugiego planu oraz w przypadku

braku szumu dla estymatora RANSAC

5.4 Wnioski

Testy wykazały, że wszystkie estymatory podatne są na łączenie ścian pochodzących

z różnych pudełek w jedną płaszczyznę. Problem jest tym wyraźniejszy, im większa jest

liczba ścian do wykrycia. Podobnie, żaden z algorytmów nie radzi sobie do końca

dobrze w warunkach „szumu” znajdującego się na drugim planie. W niektórych

przypadkach wyniki są po prostu nieakceptowalne.

W następnym rozdziale podejmuję próbę wyeliminowania, a przynajmniej

zmarginalizowania opisanych wyżej problemów: opisuję sposoby na poprawę wyników

oraz analizuję efekty tych działań.

0 2000 4000 6000 8000 10000 12000

1

2

3

4

3844

4595

4591

11857

13

61

105

192

czas działania [ms]

ilość

pud

ełek

brak szumu

szum w tle

Page 46: Praca dyplomowa v2 - repo.pw.edu.pl

46

6 Próba poprawy wyników

W tym rozdziale prezentuję metody, mające na celu optymalizację działania tak

jakościową, jak i czasową opisanych wcześniej estymatorów. Szczególnie rzucający się

w oczy jest problem niewłaściwego łączenia ze sobą punktów należących

w rzeczywistości do różnych ścian oraz czas działania estymatorów w przypadku

„przeszkadzającego” drugiego planu.

6.1 Szukanie płaszczyzn prostopadłych

W celu poprawy czasu działania algorytmu można wykorzystać fakt, że przedmiotami

szukanymi w scenie są prostopadłościany. Możemy wykorzystać właściwość tych brył

tj. fakt prostopadłych wzajemnie ścian, np. w następujący sposób: po znalezieniu

pierwszej płaszczyzny w scenie (zazwyczaj najlepszej, tj. zawierającej największą

liczbę punktów - zwykle jest to podłoga) ograniczyć przeszukiwanie sceny tylko do

płaszczyzn prostopadłych oraz równoległych do najlepszej płaszczyzny.

Można także zmodyfikować ten wariant i zamiast stałego odniesienia do pierwszej

znalezionej płaszczyzny, stosować wzorzec zmienny, tj. ograniczać przeszukiwanie

sceny do płaszczyzn prostopadłych bądź równoległych do np. ostatniej znalezionej

płaszczyzny. Takie podejście może dać lepsze efekty w przypadku, gdyby pierwsza

znaleziona płaszczyzna obarczona była dużym błędem. Z tego względu należy

to zweryfikować i poddać testom.

Page 47: Praca dyplomowa v2 - repo.pw.edu.pl

47

Rys. 6.1 Model szukania płaszczyzn prostopadłych (po lewej) oraz to samo w wariancie ze zmiennym

modelem referencyjnym (po prawej)

6.2 Podział chmury na podzbiory

Cechą charakterystyczną algorytmu RANSAC (a także jego odmian) jest fakt,

iż generuje on dwa rodzaje błędów: powierzchniowe i liniowe, tworzone przez punkty

ułożone w sekwencje linii lub pól rozproszonych wokół powierzchni dominującej.

Pomimo faktu, że punkty te tworzą jedną płaszczyznę matematyczną, z punktu widzenia

semantycznego nie są zgodne rzeczywistością, ponieważ należą do różnych obiektów.

Aby zmarginalizować te błędy, można wprowadzić dodatkowe ograniczenie dotyczące

łączności pomiędzy punktami wyodrębnionymi dla poszczególnych powierzchni.

Dokonuje się tego poprzez podział chmury punktów na mniejsze „podchmury”

(podzbiory): punkty reprezentujące połączone ze sobą elementy stanowią pojedynczą

„podchmurę”.

Algorytm podziału przedstawia się następująco:

1. Dla wejściowej chmury punktów stwórz reprezentację w postaci drzewa kd,

co umożliwi efektywne przeszukiwanie.

Szerzej o mechanizmie działania drzew kd w podrozdziale 6.2.1.

2. Stwórz pustą listę podzbiorów (klastrów) oraz kolejkę punktów do

sprawdzenia .

Page 48: Praca dyplomowa v2 - repo.pw.edu.pl

48

3. Dla każdego punktu wykonuj:

3.1. dodaj do kolejki ;

3.2. dla każdego punktu wykonuj:

3.2.1. szukaj punktów znajdujących się względem w odległości nie większej

niż zadana wartość progowa;

3.2.2. sprawdź każdego sąsiada czy był już analizowany. Jeśli nie był, dodaj

go do kolejki ;

3.3. kiedy wszystkie punkty z kolejki zostaną przeanalizowane, dodaj

zawartość do danego podzbioru , a następnie ustaw jako pustą listę.

4. Algorytm kończy się w momencie gdy każdy z punktów został

przeanalizowany i jest częścią któregoś podzbioru .

W ten sposób można pozbyć się nie tylko problemu wszystkich estymatorów, które

mają tendencję do łączenia niezwiązanych ze sobą elementów, ale również zauważalnie

przyspieszyć działanie samego algorytmu – szukanie punktów pasujących do modelu

odbywa się teraz na mniejszym podzbiorze.

Rys. 6.2 Efekt działania algorytmu bez podziału chmury na podzbiory (po lewej) oraz z podziałem (po

prawej)

6.2.1 Drzewo kd

Drzewo kd (skrót od drzewa k-wymiarowego) to struktura danych używana do dzielenia

przestrzeni. Drzewo kd jest drzewem binarnym, w którym w każdym węźle znajduje się

k-wymiarowy punkt. Każdy węzeł wewnętrzny tworzy hiperpłaszczyznę podziału, która

dzieli przestrzeń na dwie podprzestrzenie. Punkty po lewej stronie hiperpłaszczyzny

reprezentują lewe poddrzewo zaczynające się w tym węźle, a prawe punkty prawe

Page 49: Praca dyplomowa v2 - repo.pw.edu.pl

49

poddrzewo. Kierunek hiperpłaszczyzny jest wybierany zgodnie z wektorem normalnym

do niej. Przykładowo, jeżeli podział nastąpił prostopadle do osi X w punkcie x,

to wszystkie punkty z wartością mniejszą niż x należą do lewego poddrzewa, a większe

do prawego.

Rys. 6.3 Przykład dwuwymiarowego kd drzewa

6.3 „Lokalne” normalne

„Lokalne” normalne to ważna właściwość powierzchni geometrycznych, często

wykorzystywana w grafice komputerowej do zastosowania właściwego światła, które

generuje odpowiedni cień, czy innych efektów wizualnych. Przy wykrywaniu

płaszczyzn też będą niezwykle pomocne, wiadomo bowiem, że „lokalne” normalne dla

sąsiadujących ze sobą punktów nie powinny się między sobą wiele różnić, tzn. ich

różnica nie powinna być większa od zadanej wartości progowej (jeśli mają należeć do

tej samej płaszczyzny - Rys. 6.4).

Page 50: Praca dyplomowa v2 - repo.pw.edu.pl

50

Rys. 6.4 Przykład ilustrujący zasadę działania „lokalnych” normalnych. Obraz pochodzi z [12]

Generalnie, mając powierzchnię geometryczną znalezienie „lokalnej” normalnej jest

zadaniem trywialnym. W przypadku gdy mamy chmurę punktów P, złożoną z punktów

p = [x y z]T, wygląda następująco:

1. Wybierz zbiór punktów Q sąsiednich z punktem p.

2. Dopasuj lokalną płaszczyznę do zbioru punktów Q.

3. Policz normalną do tej płaszczyzny.

Rys. 6.5 „Lokalne” normalne dla zbiorów punktów. Obraz pochodzi z [12]

W ten sposób jesteśmy w stanie ocenić, czy punkty należą do tej samej płaszczyzny.

W następnym rozdziale prezentuję i omawiam efekty, jakie przyniosły wymienione

wyżej działania.

Page 51: Praca dyplomowa v2 - repo.pw.edu.pl

51

7 Porównanie zmodyfikowanych metod

W skutek działań omówionych w poprzednim rozdziale, powstało pięć nowych modeli

obliczeń:

• szukanie płaszczyzn prostopadłych i równoległych,

• szukanie płaszczyzn prostopadłych i równoległych przy zmiennym modelu

referencyjnym,

• szukanie płaszczyzn w chmurze podzielonej na podzbiory,

• szukanie płaszczyzn w oparciu o „lokalne” normalne,

• połączenie dwóch ostatnich technik: szukanie płaszczyzn w oparciu o „lokalne”

normalne w chmurze podzielonej na podzbiory.

W tym rozdziale prezentuję efekty działania wymienionych wyżej metod. Punktem

odniesienia jest model zwykłej płaszczyzny, omówiony w rozdz. 5. Analizowane

są przypadki sprawiające wcześniej największy problem: większa liczba pudełek

w scenie oraz „zaszumiony” drugi plan. W testach wykorzystano estymator RANSAC,

jako, że wypadł wcześniej najlepiej.

7.1 Większa liczba pudełek

W pierwszym teście wejściowa scena, złożona z pięciu pudełek jest taka sama jak

na Rys. 5.18. Efekty działania wszystkich metod zawarte są na następnych dwóch

stronach.

Page 52: Praca dyplomowa v2 - repo.pw.edu.pl

52

Rys. 7.1 Model zwykłej płaszczyzny (punkt odniesienia dla pozostałych metod)

Rys. 7.2 Model szukania płaszczyzn prostopadłych (po lewej) oraz to samo w wariancie ze zmiennym

modelem referencyjnym (po prawej)

Page 53: Praca dyplomowa v2 - repo.pw.edu.pl

53

Rys. 7.3 Model podziału chmury na podzbiory

Rys. 7.4 Modele wykorzystujący „lokalne” normalne (po lewej stronie) oraz to samo w wariancie z

podziałem chmury na podzbiory (po prawej stronie)

Page 54: Praca dyplomowa v2 - repo.pw.edu.pl

54

W przypadku metod: podziału chmury na podzbiory oraz użycia dwóch metod

wykorzystujących „lokalne” normalne widać wyraźną poprawę (w stosunku do tego co

było wcześniej): metoda podziału chmury pominęła tylko dwie ściany, a dwie kolejne

płaszczyzny połączyła w jedną. Metody wykorzystujące normalne pominęły trzy ściany

i również dwukrotnie łączyły dwie niezwiązane ze sobą płaszczyzny w jedną. Są to

jednak i tak wyniki znacznie lepsze niż w przypadku zwykłego modelu szukania

płaszczyzny.

Nieco gorzej wypadła metoda szukania płaszczyzn prostopadłych przy zmiennym

modelu referencyjnym. Natomiast w przypadku modelu szukania płaszczyzn

prostopadłych ze stałym modelem nie odnotowano poprawy jakościowej w stosunku do

zwykłej metody szukania płaszczyzn.

Jeśli zaś chodzi o czasy działania (Rys. 7.5) to metoda podziału chmury na podzbiory

jest zdecydowanie najszybsza (tak jak przewidywano). Podobnie, zgodnie

w przewidywaniami, duży przyrost wydajności odnotowano w przypadku metod

szukania płaszczyzn prostopadłych. Widać również, że metody wykorzystujące

normalne są niestety czasochłonne.

Rys. 7.5 Porównanie czasów działania poszczególnych metod

0 100 200 300 400 500 600

zwykła płaszczyzna

płaszczyzna prostopadła

płaszczyzna prostopadła(m. zmienny)

podział chmury

"lokalne" normalne

"lokalne" normalnewraz z podziałem

246

130

135

104

510

374

czas działania [ms]

Page 55: Praca dyplomowa v2 - repo.pw.edu.pl

55

Następny test przeprowadzony został w oparciu o chmurę punktów, zawierającą osiem

pudełek (Rys. 5.21). Efekty przedstawiono poniżej.

Rys. 7.6 Model zwykłej płaszczyzny (punkt odniesienia dla pozostałych metod)

Rys. 7.7 Model szukania płaszczyzn prostopadłych (po lewej) oraz to samo w wariancie ze zmiennym

modelem referencyjnym (po prawej)

Page 56: Praca dyplomowa v2 - repo.pw.edu.pl

56

Rys. 7.8 Model podziału chmury na podzbiory

Rys. 7.9 Modele wykorzystujący „lokalne” normalne (po lewej stronie) oraz to samo w wariancie z

podziałem chmury na podzbiory (po prawej stronie)

Page 57: Praca dyplomowa v2 - repo.pw.edu.pl

57

Potwierdza się wniosek z poprzedniego testu: model wykorzystujący podział chmury na

podzbiory jest właściwie bezkonkurencyjny. Model wykorzystujący normalne

w połączeniu z podziałem chmury również jest godny uwagi, ale ma problem

z gubieniem niektórych ścian. Podobnie jak w poprzednim teście, w przypadku modeli

szukających płaszczyzn prostopadłych lepiej wypadł model zmienny, jednak ciężko

mówić tu o dobrym wyniku. Właściwie należy uznać, że tylko dwa modele,

wykorzystujące podział chmury na podzbiory, przeszły pozytywnie test, przy czym,

podobnie jak w poprzednim teście, korzystanie z normalnych jest kosztowne czasowo.

Porównywanie czasów z pozostałymi metodami nie zostało przeprowadzone, ponieważ

nie przeszły one pozytywnie testu.

7.2 Problem drugiego planu

W celu weryfikacji poprawy uzyskanych efektów w sytuacji „zaszumionego” drugiego

planu w pierwszym teście wejściową scenę stanowić będzie chmura z Rys. 5.26. Efekty

przedstawiono poniżej.

Rys. 7.10 Porównanie czasów działania

0 1000 2000 3000 4000 5000

zwykła płaszczyzna

płaszczyzna prostopadła

płaszczyzna prostopadła(m. zmienny)

podział chmury

"lokalne" normalne

"lokalne" normalnewraz z podziałem

4591

2658

4290

123

2200

288

czas działania [ms]

Page 58: Praca dyplomowa v2 - repo.pw.edu.pl

58

Rys. 7.11 Model zwykłej płaszczyzny (punkt odniesienia dla pozostałych metod)

Rys. 7.12 Model szukania płaszczyzn prostopadłych (po lewej) oraz to samo w wariancie ze zmiennym

modelem referencyjnym (po prawej)

Page 59: Praca dyplomowa v2 - repo.pw.edu.pl

59

Rys. 7.13 Model podziału chmury na podzbiory

Rys. 7.14 Modele wykorzystujący „lokalne” normalne (po lewej stronie) oraz to samo w wariancie z

podziałem chmury na podzbiory (po prawej stronie)

Jak widać, pomijając model wykorzystujący tylko „lokalne” normalne, wszystkie

pozostałe metody wypadły lepiej aniżeli model wyjściowy. Jeśli zaś weźmiemy pod

uwagę czas działania, to okaże się, że metody wykorzystujące podział chmury

ponownie są bezkonkurencyjne.

Page 60: Praca dyplomowa v2 - repo.pw.edu.pl

60

W następnym teście wykorzystano chmurę punktów zamieszczoną poniżej.

Rys. 7.15 Chmura zawierająca cztery pudełka oraz przedmioty na drugim planie

Rys. 7.16 Model zwykłej płaszczyzny (punkt odniesienia dla pozostałych metod)

Page 61: Praca dyplomowa v2 - repo.pw.edu.pl

61

Rys. 7.17 Model szukania płaszczyzn prostopadłych (po lewej) oraz to samo w wariancie ze zmiennym

modelem referencyjnym (po prawej)

Rys. 7.18 Model podziału chmury na podzbiory

Page 62: Praca dyplomowa v2 - repo.pw.edu.pl

62

Rys. 7.19 Modele wykorzystujący „lokalne” normalne (po lewej stronie) oraz to samo w wariancie z

podziałem chmury na podzbiory (po prawej stronie)

Rys. 7.20 Porównanie czasów działania

Przedstawione wyniki pokazują, że tym razem metody wyszukujące płaszczyzny

prostopadłe nie zdały egzaminu. Jedynie metody bazujące na podziale chmury dały

rozsądne rezultaty. Jeśli zaś weźmiemy pod uwagę czas działania, to potwierdza się

fakt, iż te dwie metody nie mają sobie równych.

0 2000 4000 6000 8000 10000 12000

zwykła płaszczyzna

płaszczyzna prostopadła

płaszczyzna prostopadła(m. zmienny)

podział chmury

"lokalne" normalne

"lokalne" normalnewraz z podziałem

11857

6319

8914

144

1733

340

czas działania [ms]

Page 63: Praca dyplomowa v2 - repo.pw.edu.pl

63

zwykła płaszczyzna płaszczyzna prostopadła

płaszczyzna prostopadła (m. zmienny)

liczba pudełek

liczba ścian

liczba wykrytych ścian

liczba błędów

liczba wykrytych ścian

ilość błędów

liczba wykrytych ścian

liczba błędów

1 3 3 0 3 0 3 0

2 4 4 0 4 0 4 0

2 6 6 0 6 3 6 0

5 13 7 3 za dużo błędów 9 4

6 12 10 3 10 6 11 1

8 16 za dużo błędów za dużo błędów za dużo błędów

podział chmury "lokalne" normalne "lokalne" normalne

wraz z podziałem chmury

liczba pudełek

liczba ścian

liczba wykrytych ścian

liczba błędów

liczba wykrytych ścian

liczba błędów

liczba wykrytych ścian

liczba błędów

1 3 3 0 3 0 3 0

2 4 4 0 4 0 4 0

2 6 6 0 6 0 6 0

5 13 11 1 10 1 10 0

6 12 10 1 9 2 9 3

8 16 15 4 4 0 10 2

Tab. 3 Podsumowanie wyników testów dla omówionych sześciu metod (bez „szumu” na drugim planie).

Na zielono zaznaczono najlepsze wyniki w danym teście.

Tab. 3 przedstawia wyniki wszystkich testów dla omówionych metod (bez „szumu”

na drugim planie). Z danych zawartych w tabeli wynika, że przy małej liczbie pudełek

właściwie każda metoda daje dobre rezultaty. Problemy zaczynają się natomiast

w momencie, gdy liczba obiektów do wykrycia wzrasta. Przy dużej liczbie obiektów

najlepiej wypada metoda podziału chmury. Zaraz za nią znajduje się metoda podziału

wzbogacona o „lokalne” normalne.

Page 64: Praca dyplomowa v2 - repo.pw.edu.pl

64

zwykła płaszczyzna płaszczyzna prostopadła

płaszczyzna prostopadła (m. zmienny)

liczba pudełek

liczba ścian

liczba wykrytych ścian

liczba błędów

liczba wykrytych ścian

liczba błędów

liczba wykrytych ścian

liczba błędów

1 3 3 0 3 0 3 0

2 5 5 2 5 1 5 1

3 6 za dużo błędów

6 2 za dużo błędów

4 8 za dużo błędów

podział chmury "lokalne" normalne "lokalne" normalne

wraz z podziałem chmury

liczba pudełek

liczba ścian

liczba wykrytych ścian

liczba błędów

liczba wykrytych ścian

liczba błędów

liczba wykrytych ścian

liczba błędów

1 3 3 0 2 0 3 0

2 5 5 0 2 0 4 0

3 6 6 2 3 2 6 2

4 8 8 0 2 0 7 0

Tab. 4 Podsumowanie wyników testów dla omówionych sześciu metod przy „zaszumionym” drugim planie. Na zielono zaznaczono najlepsze wyniki w danym teście.

Tab. 4 zawiera podsumowanie wyników testów przy „zaszumionym” drugim planie.

Znajdują się tam zarówno testy, które opisałem w tej pracy, jak i takie, dla których nie

znalazło się tu już miejsca. Z danych zawartych w tej tabeli także możemy odczytać,

że przy niewielkiej liczbie obiektów wszystkie metody radzą sobie równie dobrze.

Natomiast przy większej liczbie obiektów przewaga metod bazujących na podziale

chmury jest jeszcze wyraźniejsza niż to było w przypadku danych zawartych w Tab. 3.

Page 65: Praca dyplomowa v2 - repo.pw.edu.pl

65

8 Podsumowanie

W tym rozdziale podsumowuję wszystkie testy – zarówno część pierwszą (porównanie

estymatorów), jak i drugą (sposoby poprawy rezultatów). Omawiam także potencjalne

możliwości rozwoju pracy oraz możliwe obszary zastosowania wykrywania obiektów

w praktyce.

8.1 Wnioski

Przeprowadzone testy pozwalają stwierdzić, iż RANSAC jest estymatorem, który

wykrywa płaszczyzny najlepiej. Z kolei PROSAC jest rozwiązaniem najszybszym,

jednak popełnia sporo błędów. MSAC jest również ciekawy, ale w zestawieniu

z RANSAC’iem wypada gorzej. Pozostałe estymatory w tych warunkach

nie sprawdziły się. Testy pokazały, że RANSAC, PROSAC oraz MSAC są szczególnie

dobre w przypadku segmentacji modeli nieskomplikowanych geometrycznie (PROSAC

właściwie może być brany pod uwagę tylko w takiej sytuacji). Wszystkie jednak

są podatne na łączenie w jedną płaszczyznę matematyczną punktów przynależących do

różnych, w rzeczywistości odrębnych obiektów. Zjawisko to nasila się tym bardziej,

im większa jest liczba płaszczyzn do wykrycia w scenie. Podobnie, wszystkie mają

problem z radzeniem sobie w warunkach „szumu” znajdującego się na drugim planie.

Działania podjęte w późniejszym etapie pracy częściowo eliminują te problemy, choć,

jak się okazuje, niecałkowicie. Algorytm wyszukiwania płaszczyzn prostopadłych przy

zmiennym modelu referencyjnym poprawił jakość wykrywanych płaszczyzn, jednak nie

na tyle, by móc go rekomendować. Ten sam algorytm przy stałym modelu

referencyjnym, którym jest pierwsza wykryta płaszczyzna, wypadł gorzej

i nie odnotował znaczącej poprawy w stosunku do pierwotnej metody. Obydwie metody

wykorzystujące prostopadłościenność wykrywanych obiektów dały poprawę szybkości

Page 66: Praca dyplomowa v2 - repo.pw.edu.pl

66

działania w zależności od testu o ok. 20-50% w stosunku do tego, co było na początku.

To niemało, choć inne metody okazały się jeszcze lepsze.

Metoda wykorzystująca „lokalne” normalne dopasowywała płaszczyzny lepiej od wyżej

wymienionych: udało się w znacznym stopniu ograniczyć problem łączenia ze sobą

odrębnych obiektów. Jednak poprawa jakości wykrywanych płaszczyzn, ma w tym

przypadku również negatywne konsekwencje. Mianowicie: czas wykonywania obliczeń

w stosunku do pierwotnej metody w przypadkach, gdy w scenie są tylko wyszukiwane

obiekty (brak „szumu” na drugim planie) wzrósł o nawet 100%. Na szczęście lepiej

było w przypadku, gdy został dodany „szum”, choć wynika to bardziej z faktu,

że pierwotna metoda nie radzi tam sobie w ogóle.

Na koniec dwa najlepsze modele obliczeń. Otrzymane rezultaty pokazują, że najbardziej

efektywne, tak jakościowo, jak i czasowo, są metody wykorzystujące podział chmury

punktów na podzbiory: zwykła metoda podziału oraz metoda korzystają dodatkowo

z „lokalnych” normalnych. Jednak, jak się okazało w toku prowadzonych testów,

w ogólnym przypadku wykorzystanie „lokalnych” normalnych nie przyniosło

spodziewanej poprawy rezultatów. Co więcej, liczenie normalnych wprowadza pewien

narzut czasowy i w związku z tym ta metoda działa dłużej niż „zwykła”. „Zwykła”

metoda podziału punktów nie tylko znacznie poprawiła jakość wykrywanych

płaszczyzn, wypadając na tym polu najlepiej, ale również skróciła czas wykonywania

obliczeń o ok. 60% w przypadku braku „szumu” oraz o ok. 98% w przypadku,

gdy „szum” jest obecny.

Wziąwszy to wszystko pod uwagę, ostatecznie najlepszym, spośród przetestowanych

algorytmów, sposobem na wykrywanie prostopadłościennych pudełek okazuje się być

połączenie estymatora RANSAC z modelem podziału chmury punktów na podzbiory.

8.2 Możliwości rozwoju pracy

Jak zostało wspomniane we wstępie, problematyka wykrywania trójwymiarowych

obiektów cieszy się coraz większym zainteresowaniem. Nie bez znaczenia jest tu fakt

dynamicznego rozwoju rynku urządzeń mobilnych. Jednak aby móc stosować

wykrywanie obiektów w życiu codziennym, trzeba rozwiązać jeden duży problem: cały

Page 67: Praca dyplomowa v2 - repo.pw.edu.pl

67

proces musi odbywać się w czasie rzeczywistym. Tak, by użytkownik komfortowo

korzystał z aplikacji.

Powszechnie przyjęło się, że płynny obraz zaczyna się od 24 klatek na sekundę,

co oznacza, że na przetwarzanie jednej sceny mamy 1000 ms / 24 = ok. 42 ms.

W chwili obecnej daleko jest do tego. Głównym powodem takiego stanu rzeczy jest

zbyt duża liczba punktów otrzymywana z urządzenia Kinect (jak bowiem zostało

ustalone, próbkowanie sceny w celu zmniejszenia liczby punktów zajmuje ok. 1,4 s).

Być może zmiana urządzenia rejestrującego np. na inteligentny telefon, a także sposobu

pozyskiwania punktów, otworzyłaby nowe możliwości w tym temacie.

Page 68: Praca dyplomowa v2 - repo.pw.edu.pl

68

Bibliografia

[1] Pawlik P., Mikrut S., Wyszukiwanie punktów charakterystycznych na potrzeby

łączenia zdjęć lotniczyc, 2006 [dostęp: 20 stycznia 2014],

http://journals.bg.agh.edu.pl/AUTOMATYKA/2006-03/Auto_407-412.pdf

[2] Rusu R. B., Semantic 3d object maps for everyday manipulation in human living

environments, Monachium 2009.

[3] Rusu R. B., The PCD (Point Cloud Data) file format, [dostęp: 3 grudnia 2013],

http://pointclouds.org/documentation/tutorials/pcd_file_format.php

[4] Wikipedia, Kinect, 2013 [dostęp: 17 grudnia 2013],

http://pl.wikipedia.org/wiki/Kinect

[5] Kowalczyk T., Kinect SDK – Wprowadzenie, 2011 [dostęp: 24 stycznia 2014],

http://msdn.microsoft.com/pl-pl/library/kinect-sdk--wprowadzenie.aspx

[6] Kasprzak W., Rozpoznawanie obrazów i sygnałów mowy, wyd. 1, Warszawa

2009, Rozpoznawanie znanego obiektu sztywnego, s. 162-167.

[7] Zuliani M., RANSAC for Dummies, 2012 [dostęp: 17 grudnia 2013],

http://vision.ece.ucsb.edu/~zuliani/Research/RANSAC/docs/RANSAC4Dummies.pdf

[8] Poręba M., Goulette F., Automatyczna detekcja płaszczyzn w chmurze punktów

w oparciu o algorytm RANSAC i elementy teorii grafów, 2012 [dostęp: 17

grudnia 2013], http://yadda.icm.edu.pl/baztech/element/bwmeta1.element.baztech-2530c9b7-

4dff-4264-a8d7-88059a51a0f1/c/poreba.pdf

[9] Rusu R. B., How to use Random Sample Consensus model, [dostęp: 3 grudnia

2013], http://pointclouds.org/documentation/tutorials/random_sample_consensus.php

[10] Chum O., Matas J., Matching with PROSAC - Progressive Sample Consensus,

2005 [dostęp: 17 grudnia 2013], https://dspace.cvut.cz/bitstream/handle/10467/9496/2005-

Matching-with-PROSAC-progressive-sample-consensus.pdf

[11] Torr P. H. S., Zisserman A., MLESAC: A new robust estimator with application

to estimating image geometry, 2000 [dostęp: 17 grudnia 2013],

http://www.robots.ox.ac.uk/~vgg/publications/papers/torr00.pdf

[12] Holzer S., PCL :: Segmentation, 2011 [dostęp: 3 grudnia 2013],

http://www.pointclouds.org/assets/files/presentations/ICCV2011-segmentation.pdf