regiongrowing
— Segmentieren mit Hilfe von Flächenwachstum.
regiongrowing(Image : Regions : RasterHeight, RasterWidth, Tolerance, MinSize : )
regiongrowing
liefert Bilder mit „gleicher“
Intensität - gerastert in Rechtecken der Größe
RasterHeight
RasterWidth
.
Zur Entscheidung, ob benachbarte Rasterfelder zum selben Bild
gehören oder nicht, wird nur die Differenz der Grauwerte ihrer
Zentren herangezogen. Ist die Grauwertdifferenz kleiner oder gleich
Tolerance
, werden die Rasterfelder zu einer Region
verschmolzen.
Sind und zwei zu untersuchende Grauwerte,
dann gehören sie zur gleichen Region, falls:
Bei Pixeln vom Typ cyclic wird folgende Formel verwendet:
Bei Schrittweiten größer als 1 ist ein typisches Vorgehen, die
Eingabeobjekte vor dem Aufruf von regiongrowing
mit
einem Tiefpassfilter der Größe RasterHeight
RasterWidth
zu glätten (damit die ausgewerteten Schwerpunkte der
Rasterfelder auch wirklich repräsentativ für das gesamte Rasterfeld sind).
Ist das Bildmaterial nicht stark verrauscht und die Schrittweite klein, dann
kann die vorherige Glättung in vielen Fällen auch entfallen.
In den Ergebnisbildern werden bei Schrittweiten größer als 1 nicht
nur die untersuchten Punkte gesetzt, sondern es wird um jeden Punkt
ein Rechteck der Größe RasterHeight
RasterWidth
gesetzt.
Es werden nur Regionen, die mindestens MinSize
Punkte umfassen,
ausgegeben.
Regiongrowing ist ein sehr schnelles Verfahren und ist daher für zeitkritische Anwendungen zu empfehlen.
RasterWidth
und RasterHeight
werden automatisch auf
ungerade Werte konvertiert.
Image
(input_object) singlechannelimage(-array) →
object (byte / direction / cyclic / int1 / int2 / int4 / real)
Eingabebild.
Regions
(output_object) region-array →
object
Segmentierte Regionen.
RasterHeight
(input_control) extent.y →
(integer)
Vertikaler Abstand zwischen den Testpunkten (Höhe des Rasters).
Defaultwert: 3
Wertevorschläge: 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21
Typischer Wertebereich: 1
≤
RasterHeight
≤
99
(lin)
Minimale Schrittweite: 2
Empfohlene Schrittweite: 2
Restriktion: RasterHeight >= 1 && odd(RasterHeight)
RasterWidth
(input_control) extent.x →
(integer)
Horizontaler Abstand zwischen den Testpunkten (Breite des Rasters).
Defaultwert: 3
Wertevorschläge: 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21
Typischer Wertebereich: 1
≤
RasterWidth
≤
99
(lin)
Minimale Schrittweite: 2
Empfohlene Schrittweite: 2
Restriktion: RasterWidth >= 1 && odd(RasterWidth)
Tolerance
(input_control) number →
(real / integer)
Punkte mit Grauwertdifferenz kleiner oder gleich Tolerance werden zum selben Objekt gezählt.
Defaultwert: 6.0
Wertevorschläge: 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 12.0, 14.0, 18.0, 25.0
Typischer Wertebereich: 1.0
≤
Tolerance
≤
127.0
(lin)
Minimale Schrittweite: 0.01
Empfohlene Schrittweite: 1.0
Restriktion: 0 <= Tolerance && Tolerance < 127
MinSize
(input_control) integer →
(integer)
Mindestgröße der Ausgaberegionen.
Defaultwert: 100
Wertevorschläge: 1, 5, 10, 20, 50, 100, 200, 500, 1000
Typischer Wertebereich: 1
≤
MinSize
Minimale Schrittweite: 1
Empfohlene Schrittweite: 5
Restriktion: MinSize >= 1
read_image(Image,'fabrik') mean_image(Image,Mean,RasterHeight,RasterWidth) regiongrowing(Mean,Result,RasterHeight,RasterWidth,6.0,100)
Sei N die Anzahl der gefundenen Regionen und M die Anzahl der untersuchten Punkte in einer solchen Region, dann ist die Laufzeitkomplexität O(N * log(M) * M).
regiongrowing
liefert den Wert 2 (H_MSG_TRUE), falls die
Parameter korrekt sind. Für das Verhalten bzgl. der Eingabebilder
und Ausgaberegionen sind die Flags 'no_object_result' ,
'empty_region_result' und 'store_empty_region'
einstellbar (siehe set_system
). Gegebenenfalls wird
eine Fehlerbehandlung durchgeführt.
binomial_filter
,
mean_image
,
gauss_filter
,
smooth_image
,
median_image
,
anisotropic_diffusion
select_shape
,
reduce_domain
,
select_gray
regiongrowing_n
,
regiongrowing_mean
,
label_to_region
Foundation