| Operatoren |
texture_laws — Texturfilter nach Laws.
texture_laws(Image : ImageTexture : FilterTypes, Shift, FilterSize : )
texture_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 Shift 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.
texture_laws kann auf OpenCL Geräten ausgeführt werden.
Bilder, die texturtransformiert werden sollen.
Texturbilder.
Gewünschter Filter.
Defaultwert: 'el'
Wertevorschläge: 'll', 'le', 'ls', 'lw', 'lr', 'lu', 'lo', 'el', 'ee', 'es', 'ew', 'er', 'eu', 'eo', 'sl', 'se', 'ss', 'sw', 'sr', 'su', 'so', 'wl', 'we', 'ws', 'ww', 'wr', 'wu', 'wo', 'rl', 're', 'rs', 'rw', 'rr', 'ru', 'ro', 'ul', 'ue', 'us', 'uw', 'ur', 'uu', 'uo', 'ol', 'oe', 'os', 'ow', 'or', 'ou', 'oo'
Shift der Grauwerte zur Dynamikverringerung.
Defaultwert: 2
Werteliste: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
Größe des Filterkerns.
Defaultwert: 5
Werteliste: 3, 5, 7
* 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)
Sind die Parameterwerte korrekt, dann liefert texture_laws den Wert 2 (H_MSG_TRUE). Das Verhalten bei leerer Eingabe (keine Eingabebilder vorhanden) lässt sich mittels set_system('no_object_result',<Result>) festlegen. Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.
mean_image, binomial_filter, gauss_filter, median_image, histo_2dim, learn_ndim_norm, learn_ndim_box, threshold
class_2dim_sup, class_ndim_norm
Laws, Kenneth Ivan. „Textured Image Segmentation“; Ph.D. Thesis, Department of Electrical Engineering, Image Processing Institute, University of Southern California, 1980
Foundation
| Operatoren |