# Census-Transformation

Die Census-Transformation (CT) (engl. Census Transform) wurde von Zabih und Woodfill vorgeschlagen und berechnet für jeden quadratischen Pixelbereich eines Bildes einen Bit-String als Signatur.
Dadurch können insbesondere über die Hamming-Distanz der Bit-Strings schnell übereinstimmende Bereiche der Bilder ermittelt werden – beispielsweise zur Erzeugung einer disparity map als Vorstufe zur Bestimmung des optischen Flusses (optical flow) oder einer Stereo Disparität (stereo matching) von zeitlich folgenden bzw. gleichzeitig aufgenommenen Bildern.

## Algorithmus

Der Grauwert des zentralen Pixels wird einzeln mit seinen Nachbarn (Anzahl N) verglichen und das Ergebnis (N × 1 Bit) als Zahl abgespeichert (Bit-String) – wobei das Bit „0“ einen Wert größer und das Bit „1“ einen Wert kleiner oder gleich dem Grauwert des zentralen Pixels kennzeichnet. Meist wird eine 3×3-Umgebung betrachtet und der triviale Vergleich mit sich selbst ausgelassen (3 × 3 − 1 = 8 Bit = 1 Byte). Jedoch ist auch die Betrachtung einer 5×5-Umgebung gebräuchlich (5 × 5 − 1 = 24 Bit).
Die Reihenfolge der Ergebnisbits ist beliebig (aber fest) und kann beispielsweise im Uhrzeigersinn angeordnet sein.
    $\mathbf {F} ={\begin{bmatrix}1&2&3\\8&C&4\\7&6&5\end{bmatrix}}$
Dadurch entsteht ein Signatur-Vektor (z. B. „11001011“ bei einer 3x3 Umgebung) für den zentralen Pixel, welcher mit anderen Signatur-Vektoren verglichen werden kann.

### Dreiwertige Census-Transformation

Die von Zabih und Woodfill vorgeschlagene Census-Transformation wurde von Stein durch einen $\epsilon$-Parameter erweitert, wodurch ähnliche Pixel repräsentiert werden können (und damit eine gewisse Unschärfe bzw. Rauschen toleriert wird). Dadurch entsteht eine 3-wertige (three-moded) Census-Transformation, die hier in der von Stein gewählten Definition zusammen mit einem Beispiel gezeigt wird:
    $\xi (P,P')={\begin{cases}0,&{\text{wenn }}P-P'>\epsilon \\1,&{\text{wenn }}|P-P'|\leq \epsilon \\2,&{\text{wenn }}P'-P>\epsilon \end{cases}}\qquad {\begin{array}{|c|c||c|}\hline 124&74&32\\\hline 124&64&18\\\hline 157&116&84\\\hline \end{array}}\longrightarrow {\begin{array}{|c|c|c|}\hline 2&1&0\\\hline 2&x&0\\\hline 2&2&2\\\hline \end{array}}\longrightarrow 21002222$
Bei der dreiwertigen Census-Transformation werden also zwei Bit benötigt, was die Länge des Vergleichsvektors verdoppelt.

### Modifizierte Census-Transformation

Andererseits wird bei der erstmals von Fröba und Ernst vorgeschlagenen modifizierten Census-Transformation (modified CT, MCT) die Umgebung (Nachbarn und Zentralpixel) mit dem Mittelwert der 3×3-Umgebung verglichen. Dadurch hat die Filterantwort jedes Pixels ein Bit mehr (9 bzw. 25 Bit).

## Eigenschaften

* kaum abhängig von Helligkeitsschwankungen (Belichtungszeit, regionale Schatten)
* unterscheidet Rotation und Spiegelung
* lokaler Filter
* Informationsverlust (d. h. das Bild ist aus der Filterantwort nicht rekonstruierbar)

## Anwendungen

Die Census-Transformation kann zur Berechnung des optischen Flusses (feature tracking), zur Bildsegmentierung oder bei der Gesichtserkennung verwendet werden. Sie ähnelt vom Konzept her den BRIEF-Features (ein Descriptor) und geht mehrfach in die Berechnung von Local Binary Patterns (LBP) ein.