Hallo allemaal,
Ik wil graag weten hoe template algoritmen werken. Bij template matching zoek je aan de hand van een Template T naar een vergelijkend gebied in een afbeelding I wat resulteert in een resultaat matrix R. In R zal de positie van de match en de resulterende score staan.
Hieronder is één van de mogelijke algoritmen om dit te bereiken weergegeven.
De x en y variabelen zullen de kolommen en rijen in de afbeelding aanduiden lijkt mij. Maar wat betekend x' en y' in het onderstaande algoritme?
Andere algoritmen zijn te vinden op:
http://docs.opencv.org/doc/tutorials/im ... ching.html
Template matching algorithme
-
- Vast lid
- Berichten: 77
- Lid geworden op: 20 okt 2010, 14:37
Re: Template matching algorithme
x' en y' zijn de coördinaten binnen je template.
Je template leg je boven op je image I, waarbij x en y de indices zijn van de linker bovenhoek van je template. Je verschuift je template als een window over je image.
Voor elke positie van je template (x, y) op je image bereken je vervolgens de overeenkomst van elk pixel met in het template (x', y') met de pixel van de image (x + x', y + y').
De kwadraten van al die verschillen tel je bij elkaar op en die geven je resultaatwaarde R(x, y).
Voorbeeld:
Template:
1 2 3
6 5 4
Waardoor de afmetingen zijn x' = 2 en y' = 3
Image:
12 34 56 78 90
13 24 35 46 68
22 33 44 55 66
85 49 33 27 11
R(0, 0): leg je template met linksbovenhoek op image(0, 0) en bereken de som:
R(0, 0) = (1 - 12)^2 + (2 - 34)^2 + (3 - 56)^2 + (6 - 13)^2 + (5 - 24)^2 + (4 - 35)^2
R(1, 2): leg je template met linksbovenhoek op image(1, 2) en bereken de som:
R(1, 2) = (1 - 35)^2 + (2 - 46)^2 + (3 - 68)^2 + (6 - 44)^2 + (5 - 55)^2 + (4 - 66)^2
Als R(p, q) = 0 heb je een perfecte match van je template met je image locatie.
Hoe lager R, hoe beter je template op die plek op je image past.
Je template leg je boven op je image I, waarbij x en y de indices zijn van de linker bovenhoek van je template. Je verschuift je template als een window over je image.
Voor elke positie van je template (x, y) op je image bereken je vervolgens de overeenkomst van elk pixel met in het template (x', y') met de pixel van de image (x + x', y + y').
De kwadraten van al die verschillen tel je bij elkaar op en die geven je resultaatwaarde R(x, y).
Voorbeeld:
Template:
1 2 3
6 5 4
Waardoor de afmetingen zijn x' = 2 en y' = 3
Image:
12 34 56 78 90
13 24 35 46 68
22 33 44 55 66
85 49 33 27 11
R(0, 0): leg je template met linksbovenhoek op image(0, 0) en bereken de som:
R(0, 0) = (1 - 12)^2 + (2 - 34)^2 + (3 - 56)^2 + (6 - 13)^2 + (5 - 24)^2 + (4 - 35)^2
R(1, 2): leg je template met linksbovenhoek op image(1, 2) en bereken de som:
R(1, 2) = (1 - 35)^2 + (2 - 46)^2 + (3 - 68)^2 + (6 - 44)^2 + (5 - 55)^2 + (4 - 66)^2
Als R(p, q) = 0 heb je een perfecte match van je template met je image locatie.
Hoe lager R, hoe beter je template op die plek op je image past.
-
- Vast lid
- Berichten: 77
- Lid geworden op: 20 okt 2010, 14:37
Re: Template matching algorithme
Arie bedankt weer! Je weet het elke keer weer goed uit te leggen. Wat ik zelf inmiddels had bedacht is dat x' en y' relatief zijn aan x en y. Als ik je goed begrepen heb klopt dat inderdaad. Het kwadrateren deed ik blijkbaar nog niet goed ik had eerst de opsomming gedaan en daarna pas het kwadrateren.