texture_lawstexture_lawsTextureLawsTextureLawstexture_laws (Operator)

Name

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

def texture_laws(image: HObject, filter_types: str, shift: int, filter_size: int) -> HObject

Beschreibung

texture_lawstexture_lawsTextureLawsTextureLawsTextureLawstexture_laws 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 ShiftShiftShiftShiftshiftshift 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_lawsTextureLawsTextureLawsTextureLawstexture_laws 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

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

Bilder, die texturtransformiert werden sollen.

ImageTextureImageTextureImageTextureImageTextureimageTextureimage_texture (output_object)  (multichannel-)image(-array) objectHImageHObjectHImageHobject * (byte / int2 / uint2)

Texturbilder.

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

Gewünschter Filter.

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

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

ShiftShiftShiftShiftshiftshift (input_control)  integer HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Shift der Grauwerte zur Dynamikverringerung.

Defaultwert: 2

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

FilterSizeFilterSizeFilterSizeFilterSizefilterSizefilter_size (input_control)  integer HTupleintHTupleHtuple (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_lawsTextureLawsTextureLawsTextureLawstexture_laws 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.

Nachfolger

mean_imagemean_imageMeanImageMeanImageMeanImagemean_image, binomial_filterbinomial_filterBinomialFilterBinomialFilterBinomialFilterbinomial_filter, gauss_filtergauss_filterGaussFilterGaussFilterGaussFiltergauss_filter, median_imagemedian_imageMedianImageMedianImageMedianImagemedian_image, histo_2dimhisto_2dimHisto2dimHisto2dimHisto2dimhisto_2dim, learn_ndim_normlearn_ndim_normLearnNdimNormLearnNdimNormLearnNdimNormlearn_ndim_norm, thresholdthresholdThresholdThresholdThresholdthreshold

Alternativen

convol_imageconvol_imageConvolImageConvolImageConvolImageconvol_image

Siehe auch

class_2dim_supclass_2dim_supClass2dimSupClass2dimSupClass2dimSupclass_2dim_sup, class_ndim_normclass_ndim_normClassNdimNormClassNdimNormClassNdimNormclass_ndim_norm

Literatur

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

Modul

Foundation