5. Zaporedje slik in sledenje gibanja

Kaj se spremeni, ko dodamo čas. Slike razlik, tvorjenje statičnega ozadja, optični pretok in sledenje objektom. Daje izpitni nalogi 12 in 13.

Osnovni pojmi ključno

Zaporedje digitalnih slik $\mathcal{I}$ je zaporedje $K$-tih 2D-digitalnih slik:

na listu
Zaporedje slik
$$\mathcal{I} = \{I_0, I_1, \dots, I_{K-1}\}$$

Ob tem še zahtevamo: če je bila slika $I_k$ zajeta v času $t_k$, potem je morala biti slika $I_{k+1}$ zajeta v času $t_{k+1}$, pri čemer $t_k < t_{k+1}$.

Časovni interval med sosednjimi slikami je običajno fiksen (npr. $\triangle t$). Zato velja:

na listu $$t_{k+1} = t_k + \triangle t \qquad \text{oz.} \qquad t_{k+1} = t_0 + (k+1)\triangle t$$

Na osnovi tega lahko rečemo, da je zaporedje slik časovno spremenljivo zaporedje (oz. funkcija):

na listu $$\mathcal{I} = I(x, y, t) \qquad \text{— za zvezne razmere}$$

Vrste zaporedij slik glede na način zajemanja

  1. Zaporedje slik vizualne scene (npr. posnete z video kamero) — tipične naloge: zaznavanje gibanja, segmentiranje gibajočih se objektov, določanje parametrov gibanja.
  2. Zaporedje medicinskih slik oz. prerezov skozi določene strukture — dejansko ne gre za pravo gibanje: prerezi so res zajeti v različnih časovnih trenutkih, vendar pa je struktura statična. Tipične naloge: segmentiranje opazovane strukture, 3D-rekonstrukcija objekta(ov).

Slike razlik ključno

Najpreprostejši način za detektiranje sprememb v zaporedju slik je odštevanje slik — slika razlik.

na listu
Slika razlik
$$\triangle I_k = I_{k+1} - I_k$$

Na področjih gibanja bodo spremembe velike. Sliko razlik lahko segmentiramo s poljubno segmentacijsko metodo za statične 2D slike. Pragovna operacija na sliki razlik:

na listu $$S(p) = \begin{cases} \text{gibajoči se}; & \text{IF } |\triangle I_k(p)| \geq T \\ 0; & \text{ELSE} \end{cases}$$
⚠️ Ključna omejitev

Slike razlik so primerne zgolj za obdelovanje zaporedij, zajetih s statično kamero. Če se premakne kamera, se premaknejo vsi piksli in razlika je velika povsod — metoda postane neuporabna.

Statično ozadje naloga 13

Metoda je alternativa sliki razlik. Motivacija: ozadje je najpogosteje najbolj stabilen del slike.

Če imamo na voljo sliko ozadja $I_{\text{ozadje}}$, lahko uporabimo idejo slik razlik:

na listu $$\triangle I_k = I_k - I_{\text{ozadje}}$$

Velike vrednosti v $\triangle I_k$ (gledano absolutno) določajo področja velikih sprememb (npr. gibajočih se objektov).

Postopki tvorjenja statičnega ozadja

  1. Povprečenje celotnega zaporedja slik.
  2. Na osnovi opazovanja robov skozi čas:
    • izbran piksel opazujemo skozi celotno zaporedje;
    • slike, kjer se je vrednost piksla močno spremenila, ne upoštevamo (področje robov);
    • za preostale piksle pa izračunamo povprečje.
  3. Z drsečim oknom (skozi čas):
    • kadar imajo vsi istoležni piksli znotraj drsečega okna (drseče okno = vnaprej predpisano število zaporednih slik) vrednost v preddefiniranem območju, potem prištejemo povprečje teh pikslov k skupni vsoti in povečamo število elementov;
    • drseče okno premaknemo za eno sliko in postopek ponovimo;
    • na koncu skupno vsoto delimo s številom vseh elementov ter dobimo končno vrednost za ta piksel.
⚠️ Vrstni red korakov pri postopku 2

Postopek ima tri korake in vrstni red je bistven: (1) izračunaj povprečje vseh vrednosti → (2) izloči tiste, ki od tega povprečja odstopajo bolj od praga → (3) izračunaj povprečje preostalih. Naloga ti tudi pove, ali se testira s $\leq$ ali $<$ — preberi natančno.

Originalne prosojnice (str. 65–68)
6566 6768

Optični pretok ključno naloga 12

Imejmo gibajoč se predmet v sceni, ki jo snemamo npr. z video kamero. Gibanje objekta se v sliki kaže kot premik pikslov v smeri $x$ in $y$. 2D vektorsko polje oz. matrika gibanja $U$ definira, za koliko se je premaknil vsak piksel v sliki:

na listu $$U(p) = [u_x,\, u_y]$$
⚠️ Polje gibanja proti optičnemu pretoku

Pravo polje gibanja ni poznano — poznamo le zaporedje slik $I(x, y, t)$. Optični pretok je približek za pravo 2D vektorsko polje gibanja in se izračuna iz zaporedja slik. To ni ista stvar, čeprav se pogosto enačita.

Izračun optičnega pretoka temelji na predpostavki: svetlost gibajočega se predmeta ostane konstantna, kar zapišemo s formulo:

na listu
Enačba optičnega pretoka
$$\frac{dI}{dt} = 0 \qquad \text{oz.} \qquad [I_x,\, I_y]\,[u_x,\, u_y]^T + I_t = 0$$
⚠️ Dogovor predmeta o x in y — tu se največ ljudi zmoti

Iz navodil izpita: »Smer x pomeni, da se pomikamo po stolpcu (tj. spreminjamo številko vrstice)«, »smer y pa, da se pomikamo po vrstici (tj. spreminjamo številko stolpca)«. Torej pri razliki naprej: $I_x = I(i{+}1, j) - I(i, j)$ in $I_y = I(i, j{+}1) - I(i, j)$. Če zamenjaš, dobiš enega od ponujenih napačnih odgovorov.

Kako določimo vektor premika u za en piksel?

Ena enačba ima dve neznanki ($u_x$, $u_y$) — zato je ne moremo rešiti za en sam piksel. Vzamemo $Q$ pikslov iz okolice opazovanega piksla ter tvorimo matriko $\mathsf{A}$ in vektor $b$:

na listu
Sistem za okolico Q pikslov
$$\mathsf{A} = \begin{bmatrix} I_x(p_1) & I_y(p_1) \\ I_x(p_2) & I_y(p_2) \\ \vdots & \vdots \\ I_x(p_Q) & I_y(p_Q) \end{bmatrix} \qquad b = \begin{bmatrix} I_t(p_1) \\ I_t(p_2) \\ \vdots \\ I_t(p_Q) \end{bmatrix}$$

Rešimo naslednji sistem:

na listu
Rešitev (4)
$$\underbrace{u}_{2\times1} = \begin{bmatrix} u_x \\ u_y \end{bmatrix} = -\underbrace{\mathsf{A}^{-g}}_{2\times Q}\underbrace{b}_{Q\times1}, \qquad \text{kjer je} \quad \mathsf{A}^{-g} = (\mathsf{A}^T\mathsf{A})^{-1}\mathsf{A}^T$$

$\mathsf{A}^{-g}$ je posplošeni inverz (psevdoinverz) — potreben, ker $\mathsf{A}$ ni kvadratna.

Algoritem za računanje optičnega pretoka

VHOD: Zaporedje slik $\mathcal{I}$. Maska $H$ velikosti $L \times L$ pikslov, pri čemer $Q = L^2$ (tipično $L = 5$).
IZHOD: 2D vektorsko polje $U$

  1. Filtriraj vsako sliko iz zaporedja z Gaussovim filtrom s standardnim odklonom $\sigma_s$ vzdolž obeh prostorskih dimenzij (tipično $\sigma_s = 1{,}5$ piksla).
  2. Filtriraj vsako sliko iz zaporedja z Gaussovim filtrom s standardnim odklonom $\sigma_t$ vzdolž časovne dimenzije (tipično $\sigma_t = 1{,}5$ okvirja).
  3. FOR vsako sliko zaporedja → FOR vsak piksel v sliki → izračunaj vektor premika $u$ po enačbi (4), pri čemer vzemi piksle $p_i$ iz $H$-okolice trenutnega piksla.

Optični pretok lahko uporabimo tudi za razvrščanje pikslov na gibajoče se in statične (npr. s pragovno operacijo).

Originalne prosojnice (str. 69–72)
6970 7172

Sledenje objektom razumevanje

Sledenje objektom (značilnicam) je problem iskanja ujemanja objektov (značilnic) iz slike v sliko skozi daljše zaporedje slik. Ogledali si bomo sledenje v slikovni ravnini (in ne v 3D-prostoru).

Koncept sledenja
  1. $k = 0$
  2. Določi položaj objekta (značilnice) na začetni sliki; $k = k + 1$
  3. Predvidi položaj objekta (značilnice) v $k$-ti sliki, in sicer na osnovi razpoznanih položajev objekta v slikah od 0 pa do $k-1$.
  4. Določi natančen položaj objekta v okolici predvidenega položaja.
  5. IF $k < K-1$ THEN $k = k+1$; Korak 3; ELSE Konec
💡 Zakaj korak »predvidi«

Brez napovedi bi morali objekt iskati po celi sliki v vsakem okvirju. Ker pa iz preteklih položajev znamo oceniti, kam bo objekt šel, iščemo le v majhni okolici napovedanega položaja. To je isti prihranek kot epipolarna omejitev v poglavju 6 — namesto 2D iskanja po celi sliki iščemo lokalno.

Preveri se

1Piksel (3, 2) ima v I₁ vrednost 124, piksel (4, 2) vrednost 204, piksel (3, 3) vrednost 202, v I₂ pa ima piksel (3, 2) vrednost 12. Kakšna je enačba optičnega pretoka pri razliki naprej?
Razlaga

Smer x je po stolpcu (menja se vrstica): $I_x = I(4,2) - I(3,2) = 204 - 124 = \mathbf{80}$.
Smer y je po vrstici (menja se stolpec): $I_y = I(3,3) - I(3,2) = 202 - 124 = \mathbf{78}$.
Čas: $I_t = I_2(3,2) - I_1(3,2) = 12 - 124 = \mathbf{-112}$.

Enačba: $80 u_x + 78 u_y - 112 = 0$. Odgovor a) je past za zamenjana x in y.

2Piksel ima skozi 7 slik vrednosti 89, 80, 60, 83, 78, 73, 84. Prag odstopanja je 10 (test z ≤). Kaj je vrednost statičnega ozadja po postopku 2?
Razlaga

Povprečje vseh: $547/7 = 78{,}14$. Odstopanja: $|89 - 78{,}14| = 10{,}86 > 10$ → izpustimo; $|60 - 78{,}14| = 18{,}14 > 10$ → izpustimo. Ostali so vsi znotraj praga.

Povprečje preostalih (80, 83, 78, 73, 84) $= 398/5 = 79{,}6 \to \mathbf{80}$. Odgovor a) je past za tiste, ki uporabijo postopek 1 namesto 2.

3Zakaj enačbe optičnega pretoka ne moremo rešiti za en sam piksel?
Razlaga

Enačba $I_x u_x + I_y u_y + I_t = 0$ je ena enačba z dvema neznankama — določa premico možnih rešitev, ne pa ene same. To je znani aperture problem.

Rešitev: vzamemo $Q$ pikslov iz okolice, predpostavimo, da se premikajo enako, in dobimo predoločen sistem, ki ga rešimo s psevdoinverzom $\mathsf{A}^{-g} = (\mathsf{A}^T\mathsf{A})^{-1}\mathsf{A}^T$.