exhaustive_matchexhaustive_matchExhaustiveMatchExhaustiveMatch (Operator)

Name

exhaustive_matchexhaustive_matchExhaustiveMatchExhaustiveMatch — Matching zwischen einem Template und einem Bild.

Signatur

exhaustive_match(Image, RegionOfInterest, ImageTemplate : ImageMatch : Mode : )

Herror exhaustive_match(const Hobject Image, const Hobject RegionOfInterest, const Hobject ImageTemplate, Hobject* ImageMatch, const char* Mode)

Herror T_exhaustive_match(const Hobject Image, const Hobject RegionOfInterest, const Hobject ImageTemplate, Hobject* ImageMatch, const Htuple Mode)

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)

static void HOperatorSet.ExhaustiveMatch(HObject image, HObject regionOfInterest, HObject imageTemplate, out HObject imageMatch, HTuple mode)

HImage HImage.ExhaustiveMatch(HRegion regionOfInterest, HImage imageTemplate, string mode)

Beschreibung

exhaustive_matchexhaustive_matchExhaustiveMatchExhaustiveMatchExhaustiveMatch führt ein Matching zwischen ImageTemplateImageTemplateImageTemplateImageTemplateimageTemplate und ImageImageImageImageimage innerhalb des Bildbereichs RegionOfInterestRegionOfInterestRegionOfInterestRegionOfInterestregionOfInterest durch. Dabei wird ImageTemplateImageTemplateImageTemplateImageTemplateimageTemplate über alle Punkte von ImageImageImageImageimage, die innerhalb der RegionOfInterestRegionOfInterestRegionOfInterestRegionOfInterestregionOfInterest liegen, geschoben. Abhängig vom Parameter ModeModeModeModemode wird ein Matching-Kriterium berechnet. Die Ergebniswerte werden in ImageMatchImageMatchImageMatchImageMatchimageMatch abgelegt.

Folgende Matching-Kriterien (ModeModeModeModemode) stehen zur Verfügung:

'norm_correlation'

wobei X[i][j] den Grauwert in der i-ten Zeile und j-ten Spalte des Bildes X bezeichnet. (l,c) ist der Schwerpunkt der Region von ImageTemplateImageTemplateImageTemplateImageTemplateimageTemplate. u und v werden so gewählt, dass alle Punkte des Templates erreicht werden, i,j laufen über die RegionOfInterestRegionOfInterestRegionOfInterestRegionOfInterestregionOfInterest. An den Bildrändern werden nur die Teile von ImageTemplateImageTemplateImageTemplateImageTemplateimageTemplate berücksichtigt, die innerhalb des Bildes liegen (d.h. u und v werden entsprechend eingeschränkt). Wertebereich: 0 - 255 (best fit).

'dfd'

Berechnung der mittleren "displaced frame difference": Bezeichnungen wie bei 'norm_correlation'. AREA ( X ) steht für die Fläche der Region X. Wertebereich: 0 (best fit) - 255.

Sowohl die normierte Korrelation, als auch die „displaced frame difference“ sind in ihrer Berechnung (abhängig von der Fläche des ImageTemplateImageTemplateImageTemplateImageTemplateimageTemplate) sehr aufwendig. Es ist daher wichtig, die Eingaberegion (RegionOfInterestRegionOfInterestRegionOfInterestRegionOfInterestregionOfInterest) 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' ist jedoch um etwa Faktor 3.5 schneller.

Ausführungsinformationen

Parameter

ImageImageImageImageimage (input_object)  singlechannelimage(-array) objectHImageHImageHobject (byte)

Eingabebild.

RegionOfInterestRegionOfInterestRegionOfInterestRegionOfInterestregionOfInterest (input_object)  region objectHRegionHRegionHobject

Suchbereich im Eingabebild.

ImageTemplateImageTemplateImageTemplateImageTemplateimageTemplate (input_object)  singlechannelimage objectHImageHImageHobject (byte)

Dieser Bildbereich wird innerhalb von RegionOfInterestRegionOfInterestRegionOfInterestRegionOfInterestregionOfInterest mit ImageImageImageImageimage „gematcht“.

ImageMatchImageMatchImageMatchImageMatchimageMatch (output_object)  image(-array) objectHImageHImageHobject * (byte)

Ergebnisbild: Werte des Matching-Kriteriums.

ModeModeModeModemode (input_control)  string HTupleHTupleHtuple (string) (string) (HString) (char*)

Gewünschtes Matching-Kriterium.

Defaultwert: 'dfd' "dfd" "dfd" "dfd" "dfd"

Werteliste: 'dfd'"dfd""dfd""dfd""dfd", '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_matchexhaustive_matchExhaustiveMatchExhaustiveMatchExhaustiveMatch den Wert 2 (H_MSG_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>) festlegen. Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.

Vorgänger

draw_regiondraw_regionDrawRegionDrawRegionDrawRegion, draw_rectangle1draw_rectangle1DrawRectangle1DrawRectangle1DrawRectangle1

Nachfolger

local_maxlocal_maxLocalMaxLocalMaxLocalMax, thresholdthresholdThresholdThresholdThreshold

Alternativen

exhaustive_match_mgexhaustive_match_mgExhaustiveMatchMgExhaustiveMatchMgExhaustiveMatchMg

Modul

Foundation