| Operatoren |
distance_transform — Berechnen der Distanztransformation einer Region.
distance_transform(Region : DistanceImage : Metric, Foreground, Width, Height : )
distance_transform berechnet für jeden Punkt der Eingaberegion Region (bzw. deren Komplement) den Abstand zum Rand der Region. Die Auswahl der Pixel, für die der Abstand berechnet werden soll, kann mit dem Parameter Foreground gesteuert werden. Falls Foreground = 'true', werden die Abstände nur für die Pixel innerhalb der Region berechnet. Falls Foreground = 'false', werden die Abstände der Pixel außerhalb der Regionen zu deren Rand berechnet. Die Abstände werden für alle Punkte des Ausgabebildes DistanceImage berechnet. Die Größe des Ausgabebildes wird durch Width und Height bestimmt. Die Eingaberegion wird auf die Größe des Ausgabebildes beschnitten. Falls es wichtig ist, dass die Abstände innerhalb der gesamten Region berechnet werden, sollte die Region so verschoben werden (siehe move_region), dass sie nur positive Koordinaten besitzt und die Breite und Höhe des Ausgabebildes sollten groß genug gewählt werden, dass die Region vollständig darin enthalten ist. Die entsprechende Information kann mit smallest_rectangle1 bestimmt werden.
Welche Metrik zur Berechnung des Abstandes verwendet wird, wird mit Hilfe des Parameters Metric festgelegt. Falls Metric = 'city-block' wird der Abstand aus dem kürzesten Pfad eines Punktes zum Rand der Region berechnet, wobei nur horizontale und vertikale „Bewegungen“ erlaubt sind. Diese werden mit einem Gewicht von 1 bewertet. Falls Metric = 'chessboard' wird der Abstand aus dem kürzesten Pfad eines Punktes zum Rand der Region berechnet, wobei horizontale, vertikale und diagonale „Bewegungen“ erlaubt sind. Diese werden mit einem Gewicht von 1 bewertet. Falls Metric = 'octagonal' wird eine Kombination der beiden Verfahren verwendet, so dass diagonale Pfade ein etwas größeres Gewicht erhalten. Falls Metric = 'chamfer-3-4' werden horizontale und vertikale Bewegungen mit einem Gewicht von 3 und diagonale Bewegungen mit einem Gewicht von 4 bewertet. Zur Normierung wird das resultierende Distanzbild durch 3 geteilt. Da diese Normierung Zeit kostet und man normalerweise nur an den relativen Abständen mehrerer Punkte interessiert ist, kann die Normierung mit Metric = 'chamfer-3-4-unnormalized' unterdrückt werden. Schließlich wird für Metric = 'euclidean' eine annähernd euklidische Distanz berechnet.
Region, zu deren Rand die Distanz berechnet werden soll.
Rückgabebild, das die Distanz-Information enthält.
Metrik, die bei der Distanztransformation verwendet werden soll.
Defaultwert: 'city-block'
Werteliste: 'chamfer-3-4', 'chamfer-3-4-unnormalized', 'chessboard', 'city-block', 'euclidean', 'octagonal'
Berechnung der Distanzen innerhalb ('true') oder ausserhalb ('false') der Eingabregion.
Defaultwert: 'true'
Werteliste: 'false', 'true'
Breite des Ausgabebildes.
Defaultwert: 640
Wertevorschläge: 160, 192, 320, 384, 640, 768
Typischer Wertebereich: 1 ≤ Width
Höhe des Ausgabebildes.
Defaultwert: 480
Wertevorschläge: 120, 144, 240, 288, 480, 576
Typischer Wertebereich: 1 ≤ Height
* Step towards extracting the medial axis of a shape: gen_rectangle1 (Rectangle1, 0, 0, 200, 400) gen_rectangle1 (Rectangle2, 200, 0, 400, 200) union2 (Rectangle1, Rectangle2, Shape) distance_transform (Shape, DistanceImage, 'chessboard', 'true', 640, 480)
Die Laufzeit-Komplexität ist O(Width*Height).
distance_transform liefert 2 (H_MSG_TRUE) zurück, wenn alle Parameter korrekt sind.
threshold, dyn_threshold, regiongrowing
P. Soille: „Morphological Image Analysis, Principles and
Applications“; Springer Verlag Berlin Heidelberg New York,
1999.
G. Borgefors: „Distance Transformations in Arbitrary Dimensions“;
Computer Vision, Graphics, and Image Processing, Vol. 27, pages
321--345, 1984.
P.E. Danielsson: „Euclidean Distance Mapping“; Computer Graphics
and Image Processing, Vol. 14, pages 227--248, 1980.
Foundation
| Operatoren |