texture_lawstexture_lawsTextureLawsTextureLaws (Operator)

Name

texture_lawstexture_lawsTextureLawsTextureLaws — Texturfilter nach Laws.

Signatur

texture_laws(Image : ImageTexture : FilterTypes, Shift, FilterSize : )

Herror texture_laws(const Hobject Image, Hobject* ImageTexture, const char* FilterTypes, const Hlong Shift, const Hlong FilterSize)

Herror T_texture_laws(const Hobject Image, Hobject* ImageTexture, const Htuple FilterTypes, const Htuple Shift, const Htuple FilterSize)

void TextureLaws(const HObject& Image, HObject* ImageTexture, const HTuple& FilterTypes, const HTuple& Shift, const HTuple& FilterSize)

HImage HImage::TextureLaws(const HString& FilterTypes, Hlong Shift, Hlong FilterSize) const

HImage HImage::TextureLaws(const char* FilterTypes, Hlong Shift, Hlong FilterSize) const

HImage HImage::TextureLaws(const wchar_t* FilterTypes, Hlong Shift, Hlong FilterSize) const   (Nur Windows)

static void HOperatorSet.TextureLaws(HObject image, out HObject imageTexture, HTuple filterTypes, HTuple shift, HTuple filterSize)

HImage HImage.TextureLaws(string filterTypes, int shift, int filterSize)

Beschreibung

texture_lawstexture_lawsTextureLawsTextureLawsTextureLaws führt eine Texturtransformationen (nach Laws) durch. Dazu wird das Bild mit einem speziellen Filter gefaltet. Bei den Filtern handelt es sich um:

9 verschiedene 3×3-Matrizen, die sich aus folgenden drei Vektoren berechnen lassen: l = [ 1 2 1 ], e = [ -1 0 1 ], s = [ -1 2 -1 ] 25 verschiedene 5×5-Matrizen, die sich aus folgenden fünf Vektoren berechnen lassen: l = [ 1 4 6 4 1 ], e = [ -1 -2 0 2 1 ], s = [ -1 0 2 0 -1 ], w = [ -1 2 0 -2 1 ] r = [ 1 -4 6 -4 1 ], 49 verschiedene 7×7-Matrizen, die sich aus folgenden sieben Vektoren berechnen lassen: l = [ 1 6 15 20 15 6 1 ], e = [ -1 -4 -5 0 5 4 1 ], s = [ -1 -2 1 4 1 -2 -1 ], w = [ -1 0 3 0 -3 0 1 ], r = [ 1 -2 -1 4 -1 -2 1 ], u = [ 1 -4 5 0 -5 4 -1 ] o = [ -1 6 -15 20 -15 6 -1 ] Die Namen der Filter sind Abkürzungen für „Level“, „Edge“, „Spot“, „Wave“, „Ripple“, „Undulation“ und „Oscillation“.

Bei den meisten Filtern ist eine Reduktion der Grauwerte durch einen ShiftShiftShiftShiftshift durchzuführen. Auf diese Weise wird im Ausgabebild der Unterschied zwischen zwei Texturen des Eingabebildes vergleichbarer, sofern es sich um den geeigneten Filter handelt.

Der Name der Filter setzt sich aus den Buchstaben der beiden Vektoren zusammen (z.B. 'es'). Dabei gibt der erste Buchstabe die Faltung in Spaltenrichtung und der zweite die Faltung in Zeilenrichtung an.

Achtung

texture_lawstexture_lawsTextureLawsTextureLawsTextureLaws kann auf OpenCL Geräten ausgeführt werden.

Beachten Sie, dass Filteroperatoren eventuell unerwartete Resultate ausgeben, wenn ein Bild mit einer reduzierten Domäne als Input übergeben wird. Weitere Informationen können im Kapitel Filter gefunden werden.

Ausführungsinformationen

Parameter

ImageImageImageImageimage (input_object)  (multichannel-)image(-array) objectHImageHImageHobject (byte* / int2* / uint2*) *erlaubt für Compute Devices

Bilder, die texturtransformiert werden sollen.

ImageTextureImageTextureImageTextureImageTextureimageTexture (output_object)  (multichannel-)image(-array) objectHImageHImageHobject * (byte / int2 / uint2)

Texturbilder.

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

Gewünschter Filter.

Defaultwert: 'el' "el" "el" "el" "el"

Wertevorschläge: 'll'"ll""ll""ll""ll", 'le'"le""le""le""le", 'ls'"ls""ls""ls""ls", 'lw'"lw""lw""lw""lw", 'lr'"lr""lr""lr""lr", 'lu'"lu""lu""lu""lu", 'lo'"lo""lo""lo""lo", 'el'"el""el""el""el", 'ee'"ee""ee""ee""ee", 'es'"es""es""es""es", 'ew'"ew""ew""ew""ew", 'er'"er""er""er""er", 'eu'"eu""eu""eu""eu", 'eo'"eo""eo""eo""eo", 'sl'"sl""sl""sl""sl", 'se'"se""se""se""se", 'ss'"ss""ss""ss""ss", 'sw'"sw""sw""sw""sw", 'sr'"sr""sr""sr""sr", 'su'"su""su""su""su", 'so'"so""so""so""so", 'wl'"wl""wl""wl""wl", 'we'"we""we""we""we", 'ws'"ws""ws""ws""ws", 'ww'"ww""ww""ww""ww", 'wr'"wr""wr""wr""wr", 'wu'"wu""wu""wu""wu", 'wo'"wo""wo""wo""wo", 'rl'"rl""rl""rl""rl", 're'"re""re""re""re", 'rs'"rs""rs""rs""rs", 'rw'"rw""rw""rw""rw", 'rr'"rr""rr""rr""rr", 'ru'"ru""ru""ru""ru", 'ro'"ro""ro""ro""ro", 'ul'"ul""ul""ul""ul", 'ue'"ue""ue""ue""ue", 'us'"us""us""us""us", 'uw'"uw""uw""uw""uw", 'ur'"ur""ur""ur""ur", 'uu'"uu""uu""uu""uu", 'uo'"uo""uo""uo""uo", 'ol'"ol""ol""ol""ol", 'oe'"oe""oe""oe""oe", 'os'"os""os""os""os", 'ow'"ow""ow""ow""ow", 'or'"or""or""or""or", 'ou'"ou""ou""ou""ou", 'oo'"oo""oo""oo""oo"

ShiftShiftShiftShiftshift (input_control)  integer HTupleHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Shift der Grauwerte zur Dynamikverringerung.

Defaultwert: 2

Wertevorschläge: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9

FilterSizeFilterSizeFilterSizeFilterSizefilterSize (input_control)  integer HTupleHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Größe des Filterkerns.

Defaultwert: 5

Werteliste: 3, 5, 7

Beispiel (HDevelop)

* Simple two-dimensional pixel classification
dev_get_window (WindowHandle)
read_image(Image,'combine')
texture_laws(Image,Texture1,'es',3,7)
texture_laws(Image,Texture2,'le',7,7)
MaskSize := 51
mean_image(Texture1,H1,MaskSize,MaskSize)
mean_image(Texture2,H2,MaskSize,MaskSize)
dev_clear_window ()
dev_display (Image)
dev_set_color ('green')
write_string (WindowHandle, 'Mark region within one texture area')
draw_region(Region,WindowHandle)
reduce_domain(H1,Region,Foreground1)
reduce_domain(H2,Region,Foreground2)
histo_2dim(Region,Foreground1,Foreground2,Histo)
get_image_size (Image, Width, Height)
threshold(Histo,Characteristic_area,1,Width*Height)
ShowIntermediateResult := 0
if (ShowIntermediateResult)
  histo_2dim(H1,H1,H2,HistoFull)
  dev_clear_window ()
  dev_set_lut ('sqrt')
  dev_display (HistoFull)
  dev_set_draw ('margin')
  dev_display (Characteristic_area)
  stop ()
  dev_set_lut ('default')
  dev_set_draw ('fill')
endif
class_2dim_sup(H1,H2,Characteristic_area,Seg)
dev_display (Image)
dev_set_color ('red')
dev_display (Seg)

Ergebnis

Sind die Parameterwerte korrekt, dann liefert texture_lawstexture_lawsTextureLawsTextureLawsTextureLaws 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.

Nachfolger

mean_imagemean_imageMeanImageMeanImageMeanImage, binomial_filterbinomial_filterBinomialFilterBinomialFilterBinomialFilter, gauss_filtergauss_filterGaussFilterGaussFilterGaussFilter, median_imagemedian_imageMedianImageMedianImageMedianImage, histo_2dimhisto_2dimHisto2dimHisto2dimHisto2dim, learn_ndim_normlearn_ndim_normLearnNdimNormLearnNdimNormLearnNdimNorm, thresholdthresholdThresholdThresholdThreshold

Alternativen

convol_imageconvol_imageConvolImageConvolImageConvolImage

Siehe auch

class_2dim_supclass_2dim_supClass2dimSupClass2dimSupClass2dimSup, class_ndim_normclass_ndim_normClassNdimNormClassNdimNormClassNdimNorm

Literatur

Laws, Kenneth Ivan. „Textured Image Segmentation“; Ph.D. Thesis, Department of Electrical Engineering, Image Processing Institute, University of Southern California, 1980

Modul

Foundation