exhaustive_matchexhaustive_matchExhaustiveMatchExhaustiveMatchexhaustive_match (Operator)

Name

exhaustive_matchexhaustive_matchExhaustiveMatchExhaustiveMatchexhaustive_match — 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)

def exhaustive_match(image: HObject, region_of_interest: HObject, image_template: HObject, mode: str) -> HObject

Beschreibung

exhaustive_matchexhaustive_matchExhaustiveMatchExhaustiveMatchExhaustiveMatchexhaustive_match führt ein Matching zwischen ImageTemplateImageTemplateImageTemplateImageTemplateimageTemplateimage_template und ImageImageImageImageimageimage innerhalb des Bildbereichs RegionOfInterestRegionOfInterestRegionOfInterestRegionOfInterestregionOfInterestregion_of_interest durch. Dabei wird ImageTemplateImageTemplateImageTemplateImageTemplateimageTemplateimage_template über alle Punkte von ImageImageImageImageimageimage, die innerhalb der RegionOfInterestRegionOfInterestRegionOfInterestRegionOfInterestregionOfInterestregion_of_interest liegen, geschoben. Abhängig vom Parameter ModeModeModeModemodemode wird ein Matching-Kriterium berechnet. Die Ergebniswerte werden in ImageMatchImageMatchImageMatchImageMatchimageMatchimage_match abgelegt.

Folgende Matching-Kriterien (ModeModeModeModemodemode) 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 ImageTemplateImageTemplateImageTemplateImageTemplateimageTemplateimage_template. und werden so gewählt, dass alle Punkte des Templates erreicht werden, laufen über die RegionOfInterestRegionOfInterestRegionOfInterestRegionOfInterestregionOfInterestregion_of_interest. An den Bildrändern werden nur die Teile von ImageTemplateImageTemplateImageTemplateImageTemplateimageTemplateimage_template berücksichtigt, die innerhalb des Bildes liegen (d.h. und werden entsprechend eingeschränkt). Werden hohe Werte in ImageMatchImageMatchImageMatchImageMatchimageMatchimage_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 ImageMatchImageMatchImageMatchImageMatchimageMatchimage_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 ImageTemplateImageTemplateImageTemplateImageTemplateimageTemplateimage_template) sehr aufwendig. Es ist daher wichtig, die Eingaberegion (RegionOfInterestRegionOfInterestRegionOfInterestRegionOfInterestregionOfInterestregion_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

Parameter

ImageImageImageImageimageimage (input_object)  singlechannelimage(-array) objectHImageHObjectHImageHobject (byte)

Eingabebild.

RegionOfInterestRegionOfInterestRegionOfInterestRegionOfInterestregionOfInterestregion_of_interest (input_object)  region objectHRegionHObjectHRegionHobject

Suchbereich im Eingabebild.

ImageTemplateImageTemplateImageTemplateImageTemplateimageTemplateimage_template (input_object)  singlechannelimage objectHImageHObjectHImageHobject (byte)

Dieser Bildbereich wird innerhalb von RegionOfInterestRegionOfInterestRegionOfInterestRegionOfInterestregionOfInterestregion_of_interest mit ImageImageImageImageimageimage „gematcht“.

ImageMatchImageMatchImageMatchImageMatchimageMatchimage_match (output_object)  image(-array) objectHImageHObjectHImageHobject * (byte)

Ergebnisbild: Werte des Matching-Kriteriums.

ModeModeModeModemodemode (input_control)  string HTuplestrHTupleHtuple (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_matchexhaustive_matchExhaustiveMatchExhaustiveMatchExhaustiveMatchexhaustive_match 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>)set_system("no_object_result",<Result>) festlegen. Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.

Vorgänger

draw_regiondraw_regionDrawRegionDrawRegionDrawRegiondraw_region, draw_rectangle1draw_rectangle1DrawRectangle1DrawRectangle1DrawRectangle1draw_rectangle1

Nachfolger

local_maxlocal_maxLocalMaxLocalMaxLocalMaxlocal_max, thresholdthresholdThresholdThresholdThresholdthreshold

Alternativen

exhaustive_match_mgexhaustive_match_mgExhaustiveMatchMgExhaustiveMatchMgExhaustiveMatchMgexhaustive_match_mg

Modul

Foundation