KlassenKlassenKlassenKlassen | | | | Operatoren

texture_lawstexture_lawsTextureLawstexture_lawsTextureLawsTextureLaws (Operator)

Name

texture_lawstexture_lawsTextureLawstexture_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)

Herror texture_laws(Hobject Image, Hobject* ImageTexture, const HTuple& FilterTypes, const HTuple& Shift, const HTuple& FilterSize)

HImage HImage::TextureLaws(const HTuple& FilterTypes, const HTuple& Shift, const HTuple& FilterSize) const

HImageArray HImageArray::TextureLaws(const HTuple& FilterTypes, const HTuple& Shift, const HTuple& FilterSize) const

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

void HOperatorSetX.TextureLaws(
[in] IHUntypedObjectX* Image, [out] IHUntypedObjectX*ImageTexture, [in] VARIANT FilterTypes, [in] VARIANT Shift, [in] VARIANT FilterSize)

IHImageX* HImageX.TextureLaws(
[in] BSTR FilterTypes, [in] Hlong Shift, [in] Hlong FilterSize)

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_lawsTextureLawstexture_lawsTextureLawsTextureLaws 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_lawsTextureLawstexture_lawsTextureLawsTextureLaws 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.

Parallelisierung

Parameter

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

Bilder, die texturtransformiert werden sollen.

ImageTextureImageTextureImageTextureImageTextureImageTextureimageTexture (output_object)  (multichannel-)image(-array) objectHImageHImageHImageHImageXHobject * (byte / int2 / uint2)

Texturbilder.

FilterTypesFilterTypesFilterTypesFilterTypesFilterTypesfilterTypes (input_control)  string HTupleHTupleHTupleVARIANTHtuple (string) (string) (HString) (char*) (BSTR) (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 HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Shift der Grauwerte zur Dynamikverringerung.

Defaultwert: 2

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

FilterSizeFilterSizeFilterSizeFilterSizeFilterSizefilterSize (input_control)  integer HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (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_lawsTextureLawstexture_lawsTextureLawsTextureLaws 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>)set_system("no_object_result",<Result>)SetSystem("no_object_result",<Result>)SetSystem("no_object_result",<Result>) festlegen. Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.

Nachfolger

mean_imagemean_imageMeanImagemean_imageMeanImageMeanImage, binomial_filterbinomial_filterBinomialFilterbinomial_filterBinomialFilterBinomialFilter, gauss_filtergauss_filterGaussFiltergauss_filterGaussFilterGaussFilter, median_imagemedian_imageMedianImagemedian_imageMedianImageMedianImage, histo_2dimhisto_2dimHisto2dimhisto_2dimHisto2dimHisto2dim, learn_ndim_normlearn_ndim_normLearnNdimNormlearn_ndim_normLearnNdimNormLearnNdimNorm, thresholdthresholdThresholdthresholdThresholdThreshold

Alternativen

convol_imageconvol_imageConvolImageconvol_imageConvolImageConvolImage

Siehe auch

class_2dim_supclass_2dim_supClass2dimSupclass_2dim_supClass2dimSupClass2dimSup, class_ndim_normclass_ndim_normClassNdimNormclass_ndim_normClassNdimNormClassNdimNorm

Literatur

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

Modul

Foundation


KlassenKlassenKlassenKlassen | | | | Operatoren