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_matchExhaustiveMatchExhaustiveMatchexhaustive_match führt ein Matching zwischen ImageTemplateImageTemplateImageTemplateimageTemplateimage_template und ImageImageImageimageimage innerhalb des Bildbereichs RegionOfInterestRegionOfInterestRegionOfInterestregionOfInterestregion_of_interest durch. Dabei wird ImageTemplateImageTemplateImageTemplateimageTemplateimage_template über alle Punkte von ImageImageImageimageimage, die innerhalb der RegionOfInterestRegionOfInterestRegionOfInterestregionOfInterestregion_of_interest liegen, geschoben. Abhängig vom Parameter ModeModeModemodemode wird ein Matching-Kriterium berechnet. Die Ergebniswerte werden in ImageMatchImageMatchImageMatchimageMatchimage_match abgelegt.

Folgende Matching-Kriterien (ModeModeModemodemode) 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 ImageTemplateImageTemplateImageTemplateimageTemplateimage_template. und werden so gewählt, dass alle Punkte des Templates erreicht werden, laufen über die RegionOfInterestRegionOfInterestRegionOfInterestregionOfInterestregion_of_interest. An den Bildrändern werden nur die Teile von ImageTemplateImageTemplateImageTemplateimageTemplateimage_template berücksichtigt, die innerhalb des Bildes liegen (d.h. und werden entsprechend eingeschränkt). Werden hohe Werte in ImageMatchImageMatchImageMatchimageMatchimage_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". steht für die Fläche der Region . Werden niedrige Werte in ImageMatchImageMatchImageMatchimageMatchimage_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 ImageTemplateImageTemplateImageTemplateimageTemplateimage_template) sehr aufwendig. Es ist daher wichtig, die Eingaberegion (RegionOfInterestRegionOfInterestRegionOfInterestregionOfInterestregion_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" ist jedoch um etwa Faktor 3.5 schneller.

Ausführungsinformationen

Parameter

ImageImageImageimageimage (input_object)  singlechannelimage(-array) objectHImageHObjectHObjectHobject (byte)

Eingabebild.

RegionOfInterestRegionOfInterestRegionOfInterestregionOfInterestregion_of_interest (input_object)  region objectHRegionHObjectHObjectHobject

Suchbereich im Eingabebild.

ImageTemplateImageTemplateImageTemplateimageTemplateimage_template (input_object)  singlechannelimage objectHImageHObjectHObjectHobject (byte)

Dieser Bildbereich wird innerhalb von RegionOfInterestRegionOfInterestRegionOfInterestregionOfInterestregion_of_interest mit ImageImageImageimageimage „gematcht“.

ImageMatchImageMatchImageMatchimageMatchimage_match (output_object)  image(-array) objectHImageHObjectHObjectHobject * (byte)

Ergebnisbild: Werte des Matching-Kriteriums.

ModeModeModemodemode (input_control)  string HTuplestrHTupleHtuple (string) (string) (HString) (char*)

Gewünschtes Matching-Kriterium.

Default: '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)

Ergebnis

Sind die Parameterwerte korrekt, dann liefert exhaustive_matchexhaustive_matchExhaustiveMatchExhaustiveMatchexhaustive_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>)set_system("no_object_result",<Result>) festlegen. Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.

Vorgänger

draw_regiondraw_regionDrawRegionDrawRegiondraw_region, draw_rectangle1draw_rectangle1DrawRectangle1DrawRectangle1draw_rectangle1

Nachfolger

local_maxlocal_maxLocalMaxLocalMaxlocal_max, thresholdthresholdThresholdThresholdthreshold

Alternativen

exhaustive_match_mgexhaustive_match_mgExhaustiveMatchMgExhaustiveMatchMgexhaustive_match_mg

Modul

Foundation