exhaustive_match exhaustive_match ExhaustiveMatch ExhaustiveMatch exhaustive_match (Operator)
Name
exhaustive_match exhaustive_match ExhaustiveMatch ExhaustiveMatch exhaustive_match — Matching zwischen einem Template und einem Bild.
Signatur
void ExhaustiveMatch (const HObject& Image , const HObject& RegionOfInterest , const HObject& ImageTemplate , HObject* ImageMatch , const HTuple& Mode )
HImage HImage ::ExhaustiveMatch (const HRegion& RegionOfInterest , const HImage& ImageTemplate , const HString& Mode ) const
HImage HImage ::ExhaustiveMatch (const HRegion& RegionOfInterest , const HImage& ImageTemplate , const char* Mode ) const
HImage HImage ::ExhaustiveMatch (const HRegion& RegionOfInterest , const HImage& ImageTemplate , const wchar_t* Mode ) const
(Nur Windows)
Beschreibung
exhaustive_match exhaustive_match ExhaustiveMatch ExhaustiveMatch ExhaustiveMatch exhaustive_match führt ein Matching zwischen
ImageTemplate ImageTemplate ImageTemplate ImageTemplate imageTemplate image_template und Image Image Image Image image image innerhalb des
Bildbereichs RegionOfInterest RegionOfInterest RegionOfInterest RegionOfInterest regionOfInterest region_of_interest durch.
Dabei wird ImageTemplate ImageTemplate ImageTemplate ImageTemplate imageTemplate image_template über alle Punkte von
Image Image Image Image image image , die innerhalb der RegionOfInterest RegionOfInterest RegionOfInterest RegionOfInterest regionOfInterest region_of_interest liegen,
geschoben.
Abhängig vom Parameter Mode Mode Mode Mode mode mode wird ein Matching-Kriterium
berechnet. Die Ergebniswerte werden in ImageMatch ImageMatch ImageMatch ImageMatch imageMatch image_match abgelegt.
Folgende Matching-Kriterien (Mode Mode Mode Mode mode mode ) stehen zur Verfügung:
'norm_correlation'
wobei
den Grauwert in der
-ten Zeile und
-ten Spalte des Bildes
bezeichnet.
ist der Schwerpunkt der Region von ImageTemplate ImageTemplate ImageTemplate ImageTemplate imageTemplate image_template .
und
werden so gewählt, dass alle Punkte des Templates
erreicht werden,
laufen über die RegionOfInterest RegionOfInterest RegionOfInterest RegionOfInterest regionOfInterest region_of_interest .
An den Bildrändern werden nur die Teile von ImageTemplate ImageTemplate ImageTemplate ImageTemplate imageTemplate image_template
berücksichtigt, die innerhalb des Bildes liegen (d.h.
und
werden entsprechend eingeschränkt). Werden hohe Werte in
ImageMatch ImageMatch ImageMatch ImageMatch imageMatch image_match zurückgegeben ist die Übereinstimmung hoch.
Wertebereich: [0 ... 255
(beste Übereinstimmung)].
'dfd'
Berechnung der mittleren „displaced frame difference“:
Bezeichnungen wie bei 'norm_correlation' "norm_correlation" "norm_correlation" "norm_correlation" "norm_correlation" "norm_correlation" .
steht für die Fläche der Region
. Werden niedrige Werte in
ImageMatch ImageMatch ImageMatch ImageMatch imageMatch image_match zurückgegeben ist die Übereinstimmung hoch.
Wertebereich: [0 (beste Übereinstimmung) ...
255 ].
Sowohl die normierte Korrelation, als auch die „displaced frame
difference“ sind in ihrer Berechnung (abhängig von der Fläche des
ImageTemplate ImageTemplate ImageTemplate ImageTemplate imageTemplate image_template ) sehr aufwendig.
Es ist daher wichtig, die Eingaberegion
(RegionOfInterest RegionOfInterest RegionOfInterest RegionOfInterest regionOfInterest region_of_interest ) möglichst einzugrenzen,
d.h. den Filter nur in einer möglichst eng umrissenen „region of
interest“ anzuwenden.
Qualitativ liefern beide Modi vergleichbare Ergebnisse. Der Modus
'dfd' "dfd" "dfd" "dfd" "dfd" "dfd" ist jedoch um etwa Faktor 3.5 schneller.
Ausführungsinformationen
Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
Automatisch parallelisiert auf Tupelebene.
Parameter
Image Image Image Image image image (input_object) singlechannelimage(-array) → object HImage HObject HImage Hobject (byte)
Eingabebild.
RegionOfInterest RegionOfInterest RegionOfInterest RegionOfInterest regionOfInterest region_of_interest (input_object) region → object HRegion HObject HRegion Hobject
Suchbereich im Eingabebild.
ImageMatch ImageMatch ImageMatch ImageMatch imageMatch image_match (output_object) image(-array) → object HImage HObject HImage Hobject * (byte)
Ergebnisbild: Werte des Matching-Kriteriums.
Mode Mode Mode Mode mode mode (input_control) string → HTuple str HTuple Htuple (string) (string ) (HString ) (char* )
Gewünschtes Matching-Kriterium.
Defaultwert:
'dfd'
"dfd"
"dfd"
"dfd"
"dfd"
"dfd"
Werteliste: 'dfd' "dfd" "dfd" "dfd" "dfd" "dfd" , 'norm_correlation' "norm_correlation" "norm_correlation" "norm_correlation" "norm_correlation" "norm_correlation"
Beispiel (HDevelop)
read_image(Image,'monkey')
dev_display(Image)
draw_rectangle2(WindowHandle,Row,Column,Phi,Length1,Length2)
gen_rectangle2(Rectangle,Row,Column,Phi,Length1,Length2)
reduce_domain(Image,Rectangle,Template)
exhaustive_match(Image,Image,Template,ImageMatch,'dfd')
invert_image(ImageMatch,ImageInvert)
local_max(Image,Maxima)
union1(Maxima,AllMaxima)
add_channels(AllMaxima,ImageInvert,FitMaxima)
threshold(FitMaxima,BestFit,230.0,255.0)
dev_display(BestFit)
Beispiel (C)
read_image(&Image,"monkey");
disp_image(Image,WindowHandle);
/* mark one eye */
draw_rectangle2(WindowHandle,&Row,&Column,&Phi,&Length1,&Length2);
gen_rectangle2(&Rectangle,Row,Column,Phi,Length1,Length2);
reduce_domain(Image,Rectangle,&Template);
exhaustive_match(Image,Image,Template,&ImageMatch,'dfd');
invert_image(ImageMatch,&ImageInvert);
local_max(ImageInvert,&Maxima);
union1(Maxima,&AllMaxima);
add_channels(AllMaxima,ImageInvert,&FitMaxima);
threshold(FitMaxima,&BestFit,230.0,255.0);
disp_region(BestFit,WindowHandle);
Beispiel (HDevelop)
read_image(Image,'monkey')
dev_display(Image)
draw_rectangle2(WindowHandle,Row,Column,Phi,Length1,Length2)
gen_rectangle2(Rectangle,Row,Column,Phi,Length1,Length2)
reduce_domain(Image,Rectangle,Template)
exhaustive_match(Image,Image,Template,ImageMatch,'dfd')
invert_image(ImageMatch,ImageInvert)
local_max(Image,Maxima)
union1(Maxima,AllMaxima)
add_channels(AllMaxima,ImageInvert,FitMaxima)
threshold(FitMaxima,BestFit,230.0,255.0)
dev_display(BestFit)
Beispiel (HDevelop)
read_image(Image,'monkey')
dev_display(Image)
draw_rectangle2(WindowHandle,Row,Column,Phi,Length1,Length2)
gen_rectangle2(Rectangle,Row,Column,Phi,Length1,Length2)
reduce_domain(Image,Rectangle,Template)
exhaustive_match(Image,Image,Template,ImageMatch,'dfd')
invert_image(ImageMatch,ImageInvert)
local_max(Image,Maxima)
union1(Maxima,AllMaxima)
add_channels(AllMaxima,ImageInvert,FitMaxima)
threshold(FitMaxima,BestFit,230.0,255.0)
dev_display(BestFit)
Beispiel (HDevelop)
read_image(Image,'monkey')
dev_display(Image)
draw_rectangle2(WindowHandle,Row,Column,Phi,Length1,Length2)
gen_rectangle2(Rectangle,Row,Column,Phi,Length1,Length2)
reduce_domain(Image,Rectangle,Template)
exhaustive_match(Image,Image,Template,ImageMatch,'dfd')
invert_image(ImageMatch,ImageInvert)
local_max(Image,Maxima)
union1(Maxima,AllMaxima)
add_channels(AllMaxima,ImageInvert,FitMaxima)
threshold(FitMaxima,BestFit,230.0,255.0)
dev_display(BestFit)
Ergebnis
Sind die Parameterwerte korrekt, dann liefert exhaustive_match exhaustive_match ExhaustiveMatch ExhaustiveMatch ExhaustiveMatch exhaustive_match
den Wert TRUE.
Das Verhalten bei leerer Eingabe (keine Eingabebilder vorhanden) lässt
sich mittels set_system('no_object_result',<Result>) set_system("no_object_result",<Result>) SetSystem("no_object_result",<Result>) SetSystem("no_object_result",<Result>) SetSystem("no_object_result",<Result>) set_system("no_object_result",<Result>)
festlegen. Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.
Vorgänger
draw_region draw_region DrawRegion DrawRegion DrawRegion draw_region ,
draw_rectangle1 draw_rectangle1 DrawRectangle1 DrawRectangle1 DrawRectangle1 draw_rectangle1
Nachfolger
local_max local_max LocalMax LocalMax LocalMax local_max ,
threshold threshold Threshold Threshold Threshold threshold
Alternativen
exhaustive_match_mg exhaustive_match_mg ExhaustiveMatchMg ExhaustiveMatchMg ExhaustiveMatchMg exhaustive_match_mg
Modul
Foundation