29
Die Bestimmung des Optical Flow aus Bildsequenzen Busa Fekete Robert Horvath Peter

Die Bestimmung des Optical Flow aus Bildsequenzen Busa Fekete Robert Horvath Peter

Embed Size (px)

Citation preview

Page 1: Die Bestimmung des Optical Flow aus Bildsequenzen Busa Fekete Robert Horvath Peter

Die Bestimmung des Optical Flow aus Bildsequenzen

Busa Fekete Robert

Horvath Peter

Page 2: Die Bestimmung des Optical Flow aus Bildsequenzen Busa Fekete Robert Horvath Peter

Die Algorithmen

Page 3: Die Bestimmung des Optical Flow aus Bildsequenzen Busa Fekete Robert Horvath Peter

Was bedeutet eigentlich: Optical Flow?

• Optical Flow: Vektoren, die die Bewegungen zwischen 2 Bildsequenzen zeigen

Page 4: Die Bestimmung des Optical Flow aus Bildsequenzen Busa Fekete Robert Horvath Peter

Bestimmung maximal 1 Pixel großer Bewegungen

),(),(),(),( 111,11

min yjxiIjiIyxjim kkyx

k

1

1

1

11

1

1

1

111,11

),(),(),(),( minu v

ku v

kyx

k yvjxuiIvjuiIyxjim

Page 5: Die Bestimmung des Optical Flow aus Bildsequenzen Busa Fekete Robert Horvath Peter

Wie könnte man die Bewegungen detektieren, die größer sind als 1 Pixel

• Verkleinert man das Bild, dann werden auch die Bewegungen im Bild verkleinert, zB. ist die 2 Einheiten große Bewegung im oberen Bild im unteren Bild, das nur halb so gross ist, nur noch 1 Einheit groß.

Page 6: Die Bestimmung des Optical Flow aus Bildsequenzen Busa Fekete Robert Horvath Peter

Aufbau der Pyramide• Den vorherigen Gedankengang fortführend: wenn man

das Bild n-mal verkleinert, dann würden die 2n großen Bewegungen im n-sten Bild nur noch 1 groß sein. Also wenn wir wissen, dass es maximal n große Bewegungen gibt, dann müssen wir log2 n Stück Bilder fertigen.

Page 7: Die Bestimmung des Optical Flow aus Bildsequenzen Busa Fekete Robert Horvath Peter

Anfertigung der Pyramide 1.• Als Maske benutzen wir die normal verteilte Gauss 2D Standard

Matrix (die Summe der Einträge der Matrix ist auf 1 normalisiert). Am schnellsten funktioniert es, wenn wir 3x3 große Matrix anwenden, aber ich empfehle die Größe 5x5 oder 7x7.

0.003 0.013 0.022 0.013 0.0030.013 0.060 0.098 0.060 0.0130.022 0.098 0.162 0.098 0.0220.013 0.060 0.098 0.060 0.0130.003 0.013 0.022 0.013 0.003

xexf

x

,2

1)(

2

2

22

)(

,

Page 8: Die Bestimmung des Optical Flow aus Bildsequenzen Busa Fekete Robert Horvath Peter

Anfertigung der Pyramide 2.

• Wir koennen auf folgende Weise von einem 2n+1 x 2n+1 großen Bild eines der Größe n+1 x n+1 erzeugen.

Page 9: Die Bestimmung des Optical Flow aus Bildsequenzen Busa Fekete Robert Horvath Peter

Backwards- Strategie 1.

Vom kleineren OF der Pyramide können wir das größere so aufbauen:

• 1. Man verdoppelt die Vektoren

• 2. Die (2i, 2j), (2i+1, 2j), (2i, 2j+1), (2i+1, 2j+1)-sten Vektoren des großen OF bekommen den Wert des Doppelten der Größe des (i, j)-sten Vektors des kleinen OF.

Page 10: Die Bestimmung des Optical Flow aus Bildsequenzen Busa Fekete Robert Horvath Peter

Backwards- Strategie 2.

• 3. Verfeinerung: Suche der maximal 1 Pixel großen Bewegung. Wir haben grobe Schätzungen hinsichtlich der Bewegungen. Jetzt wird dies verfeinert mit Hilfe der früher gezeigten Methode.

Page 11: Die Bestimmung des Optical Flow aus Bildsequenzen Busa Fekete Robert Horvath Peter

Mehr als zwei Sequenzen• Wenn wir mehr als zwei Sequenzen haben, dann kann bei

der Anfertigung des n+1-sten Bildsequenzes das n-ste helfen. Wenn die Sequenzen einander zeitlich häufig folgen, werden mit großer Wahrscheinlichkeit die Vektoren der Bewegungen im n-sten Bild nur etwas abweichen von denen im n+1-sten Bild.

Page 12: Die Bestimmung des Optical Flow aus Bildsequenzen Busa Fekete Robert Horvath Peter

Homogene Gebiete

• Der Algorithmus kann in seinem gegenwärtigem Stand nicht zur Detektierung homogener Gebiete benutzt werden (zB.: rote Schnee fällt im roten Hintergrund ), in solchen Fällen erachten wir es als eine gute Lösung, wenn hierbei der Wert der Bewegung 0 ist.

• Deshalb wird die 3x3 Matrix vor der Aussiebung des Minimums mit einer N(0.0, 3.0) Standard normal verteilten Gauss Matrix multipliziert. Dies beeinflusst in derart geringem Maß die Untersuchung der nicht homogenen Gebiete, dass es in der Praxis keine Probleme bereitet, trotzdem werden die homogene Gebiete gut ausgefiltert.

Page 13: Die Bestimmung des Optical Flow aus Bildsequenzen Busa Fekete Robert Horvath Peter

• Zwecks Beseitigung der auftretenden Fehler glättet man die Vektoren zu ihrer Umgebung. Mehrere solche Methoden können angewandt werden, z.B.:

• 3x3 Maske:

• Man benutzt im gegenwärtigen Algorithmus die früher vorgestellte Gauss N(0.0, 1.5) Matrix in der Größe 5x5.

Glätten 1.

121

242

121

16

1

Page 14: Die Bestimmung des Optical Flow aus Bildsequenzen Busa Fekete Robert Horvath Peter

Glätten 2.OF ohne Erweichung:

Erweichte OF:

Page 15: Die Bestimmung des Optical Flow aus Bildsequenzen Busa Fekete Robert Horvath Peter

Paralelle Rechnungen

• Weil jede Operation nur lokale Bildinformationen benutzt, so koennen wir die Algorithme auf paralelle Rechner implementieren. Also mit Hilfe der Pixel paralelle Rechnungen kann man die Prozesse verschnellern.

Page 16: Die Bestimmung des Optical Flow aus Bildsequenzen Busa Fekete Robert Horvath Peter

Laufzeit

• Laufzeit:• Aufbau der Pyramide:

• Backwards-Strategie:

• Erweichung:

• Insgesamt:

)(...42

...42

22222

222

2 ncnabnnn

nan

an

aan

)(...42

...42

22222

222

2 ncnabnnn

nan

an

aan

)(...42

...42

22222

222

2 ncnabnnn

nan

an

aan

)()(3 22 nn

Page 17: Die Bestimmung des Optical Flow aus Bildsequenzen Busa Fekete Robert Horvath Peter

Erneuerungen

• Gauss Pyramide

• Homogene Bereiche

• Erweichung

Page 18: Die Bestimmung des Optical Flow aus Bildsequenzen Busa Fekete Robert Horvath Peter

Implementation

Page 19: Die Bestimmung des Optical Flow aus Bildsequenzen Busa Fekete Robert Horvath Peter

Das gegenwärtige System

• ANSI C++• Unter Windows entwickelt, aber nur mit

Verwendung von Standard Headers, so ist es platformunabhängig

• Es behandelt Portable Grayscale Map (.pgm 8 bit) und Portable Pixel Map (.ppm 24 bit color) Bilddaten

• Erreichbar:• http://www.stud.u-szeged.hu/Horvath.Peter.3

Page 20: Die Bestimmung des Optical Flow aus Bildsequenzen Busa Fekete Robert Horvath Peter

Class Diagramm

Page 21: Die Bestimmung des Optical Flow aus Bildsequenzen Busa Fekete Robert Horvath Peter

CGaussMatrix classCGaussMatrix::CGaussMatrix(int size, double muf, double sigmaf)

{

...

const1 = 1 / (sqrt(2*M_PI)*sigma);

for (i=0;i<size;i++){

for (j=0;j<size;j++){

tav = sqrt((-((size-1)/2)+i)*(-((size-1)/2)+i)+(-((size-1)/2)+j)*(-((size-1)/2)+j));

Elements[i][j] = const1 * exp( - ( ( (tav - mu)*(tav - mu) ) / (2*sigma*sigma) ));

}

}

i=0;

for (i=0;i<size;i++){

for (j=0;j<size;j++){

norm += Elements[i][j];

}

}

for (i=0;i<size;i++){

for (j=0;j<size;j++){

Elements[i][j] *= (1/norm);

}

}

printf("CGaussMatrix class (new Gaussmatrix %d x %d): succesfull...\n", size, size);

}

Page 22: Die Bestimmung des Optical Flow aus Bildsequenzen Busa Fekete Robert Horvath Peter

CImagePyramid ClassCImagePyramid::CImagePyramid(char *FileName, int Depth, int GaussSize){...

if (Depth > 0){for (int i = 1; i < Depth; i++){

sx = sx >> 1;sy = sy >> 1;if (sx < 1) sx = 1;if (sy < 1) sy = 1;Pyramid[i] = new CPMImage(sx, sy);

}}for(int i = 0; i < Depth-1; i++){ for (incX = 0; incX < Pyramid[i]->GetSizeX(); incX+=2){ for (incY = 0; incY < Pyramid[i]->GetSizeY(); incY+=2){ tmpr = 0.0; tmpg = 0.0; tmpb = 0.0; for (GaussX = - GaussSize / 2; GaussX < GaussSize / 2 + 1; GaussX++){ for (GaussY = - GaussSize / 2; GaussY < GaussSize / 2 + 1; GaussY++){ r += (double)(Pyramid[i]->GetPixel(incX + GaussX, incY + GaussY) & 0x0000FF) *

Gauss->GetXY(GaussX, GaussY); } } }}

}

Page 23: Die Bestimmung des Optical Flow aus Bildsequenzen Busa Fekete Robert Horvath Peter

Experimentelle Ergebnisse

Page 24: Die Bestimmung des Optical Flow aus Bildsequenzen Busa Fekete Robert Horvath Peter

Testumgebung

• Rechner:• PIII Celeron 1200Mhz CPU, 128 Mb RAM

Bildgröße Laufzeit (s)

3x3 Gauss 7x7 Gauss

256x256 15.85 17.34

512x512 61.49 70.17

Page 25: Die Bestimmung des Optical Flow aus Bildsequenzen Busa Fekete Robert Horvath Peter

Experiment 1.

• Rotation (3 Grad nach links):

Page 26: Die Bestimmung des Optical Flow aus Bildsequenzen Busa Fekete Robert Horvath Peter

Experiment 2.

• Verschiebung (x->5 pixel, y->3)

Page 27: Die Bestimmung des Optical Flow aus Bildsequenzen Busa Fekete Robert Horvath Peter

Experiment 3.

Scale (103%)

Page 28: Die Bestimmung des Optical Flow aus Bildsequenzen Busa Fekete Robert Horvath Peter

Referenzen

Page 29: Die Bestimmung des Optical Flow aus Bildsequenzen Busa Fekete Robert Horvath Peter

Referenzen

• [1] P. J. Burt and E. H. Adelson: The Laplacian Pyramid as a Compact Image Code

• [2] P. Anandan: A Comutational Framework and an Algorithm for the Measurement of Visual Motion

• [3] P. Bouthemy and E. Francois: Motion Segmentation and Qualitative Dynamic Scene Analysis from an Image Sequence

• [4] T. Lin J. L. Barron: Image Reconstruction Error for Optical Flow