Naar inhoud springen

Objectvoorstelling

Uit Wikipedia, de vrije encyclopedie

Een objectvoorstelling is binnen de digitale beeldverwerking een voorstelling van een gesegmenteerd object, die deze in een compacte en/of essentiële vorm weergeeft. Hierdoor kunnen er op efficiënte wijze analyses en vergelijkingen op de eigenschappen van het object uitgevoerd worden. Er zijn twee aspecten waarop men een voorstelling kan baseren:

  • Aan de hand van externe kenmerken (de rand van het object);
Wanneer vooral de vorm van belang is
  • Of interne kenmerken (de pixels in het object)
Wanneer zaken als kleur of textuur van belang zijn

In deze sectie beschrijven we enkele van de meest bekende methoden om een objectvoorstelling op te stellen. Normalisatie is bij deze methoden een essentieel aspect, zodat veranderingen als rotatie en schaal geen invloed hebben.

Randen volgen

[bewerken | brontekst bewerken]

De randen volgen methode[1] definieert van een binair beeld de randen volgens wijzerzin.

Het startpunt (B0) is de voorgrondpixel (1) die het meest linksboven in de afbeelding ligt. Het punt C0 wordt gedefinieerd als de meest westelijke buur van B0. Als gevolg zal C0 altijd een achtergrondpixel zijn. Extra voorwaarde: er mag geen enkele voorgrondpixel de rand van de afbeelding raken.

  1. De 8 buren van Bn worden gecontroleerd in wijzer zin, te beginnen bij Cn. Men stopt bij de eerste voorgrondpixel die men tegenkomt.
  2. Die pixel wordt nu Bn+1 en de pixel die daarop voorafging Cn+1
  3. Herhaal stappen 1 en 2 totdat de nieuw gevonden B = B0 en de daarop volgende B = B1. Dan is de rand zeker helemaal rond gesloten.

Randen Volgen - Stappen

Als beginvoorwaarde van deze techniek mogen geen voorgrondpixels de kanten van de afbeelding raken.

Een kettingcode is een manier om een gedefinieerde rand voor te stellen. We zien de rand dan als een opeenvolging van korte lijnsegmenten die een bepaalde oriëntatie hebben. De oriëntatie van elk randsegment wordt met een codenummer voorgesteld. We kunnen daarbij werken met 4- of 8-connectiviteit.

Freeman Chaincode - 4 en 8 connectiviteit

Het opstellen van de kettingcode:

  1. De rand wordt op een raster gelegd, vervolgens wordt de rand op de roosterknooppunten gesampled.
  2. Men kiest een beginsample en noteert telkens de richting naar de volgende sample in het rooster (volgens de 4- of 8-connectiviteit).

Om invloed van ruis te beperken en om een scherpere voorstelling van de rand te geven kan er voor een fijner rooster gekozen worden.

Freeman Chaincode - Bemonsteren Freeman Chaincode - Opstellen

Om de kettingcode te normaliseren kunnen we twee technieken toepassen:

  • Normaliseren voor rotatie:
Elke richting wordt relatief genomen ten opzichte van het vorige punt (wijzerzin)
Voorbeeld: "10103322" wordt "3133030"
  • Normaliseren voor startpunt:
We kiezen het startpunt zo dat ons ketting code het kleinst mogelijk getal vormt.
Voorbeeld: "3133030" wordt "0303133"

Een signatuur is een eendimensionale voorstelling van een rand. Er zijn verscheidene types signaturen zoals, de slope density function en de afstand tussen zwaartepunt en rand.

Afstand tussen zwaartepunt en rand

[bewerken | brontekst bewerken]

De afstand tussen het zwaartepunt en de rand wordt op een eendimensionale grafiek uitgezet ten opzichte van verandering van de hoek.

Signatuur - Vierkant
  1. Het zwaartepunt van het object wordt bepaald.
  2. Het startpunt op de rand wordt gespecificeerd.
  3. De afstand tussen het zwaartepunt en het randpunt wordt opgemeten.
  4. Het volgende punt op de rand wordt genomen. (de hoek wordt vergroot)
  5. Stap 3 en 4 worden herhaald tot het oorspronkelijk startpunt terug wordt bereikt (na 360°)

Uit deze signatuur kunnen bepaalde kenmerken van randen duidelijke op eendimensionale wijze weergegeven worden: zo geeft een vierhoek duidelijk vier pieken, een driehoek duidelijk drie, etc.

Een signatuur is translatie-onafhankelijk. Het is ook mogelijk om de signaturen verder te normaliseren om zo ook rotatie- en schalings-onafhankelijkheid te bekomen.

  • Normaliseren voor rotatie
    • Er moet een conventie bestaan over het startpunt.
Er kan bijvoorbeeld afgesproken worden dat het punt het verste van het zwaartepunt de startpositie is.
  • Normaliseren voor schaal
    • De randen normaliseren tussen 0 en 1 of
    • Elke sample door de variantie van de signatuur te delen. Dit is minder ruisgevoelig dan de vorige methode maar vergt meer berekeningen.