| Operatoren |
closest_point_transform — Berechnen der Nächste-Punkte-Transformation einer Region.
closest_point_transform(Region : Distances, ClosestPoints : Metric, Foreground, ClosestPointMode, Width, Height : )
closest_point_transform berechnet für jedes Pixel der Eingaberegion Region (bzw. deren Komplement) den Abstand zum nächstgelegenen Pixel außerhalb der Region (d.h. zu dem Pixel auf dem äußeren Rand der Region) und gibt diese Information in Distances zurück. Zusätzlich zum Abstand wird noch das zugehörige nächstgelegenen Pixel in ClosestPoints zurückgeliefert.
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 und nächstgelegenen Pixel werden für alle Punkte der Ausgabebilder Distances und ClosestPoints berechnet. Die Größe der Ausgabebilder wird durch Width und Height bestimmt. Die Eingaberegion wird auf die Größe der Ausgabebilder 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.
Der Parameter ClosestPointMode legt fest, wie die nächstgelegenen Punkte abgelegt werden. Für ClosestPointMode = 'absolute' werden in ClosestPoints absolute Koordinaten abgespeichert. Für ClosestPointMode = 'relative' wird in ClosestPoints der Versatz zur Koordinate des jeweiligen Pixels abgespeichert.
Es ist zu beachten, dass im Normalfall die nächstgelegenen Punkte nicht eindeutig sind, d.h. dass für den in Distances im jeweiligen Pixel des Ausgabebildes zurückgelieferten Abstand typischerweise mehrere Punkte auf dem äußeren Rand der Region existieren, die diesen Abstand zu dem Pixel besitzen. So haben zum Beispiel alle Punkten auf dem Skelett der Region in der verwendeten Mektik zu mindestens zwei verschiedenen Punkten auf dem äußeren Rand der Region denselben Abstand. closest_point_transform liefert in diesem Fall einen dieser Punkte zurück, der durch die Implementierung des Algorithmus bestimmt ist. Insbesondere sollten keine Invarianzen bezüglich Rotation oder Spiegelung der Region erwartet werden.
Weiterhin ist zu beachten, dass für Foreground = 'true' auch Punktkoordinaten zurückgeliefert werden, die außerhalb des Bildes liegen, falls die Eingaberegion Region den Rand des durch Width und Height bestimmten Bildes berührt, denn der äußere Rand der Region liegt in diesem Fall ein Pixel außerhalb des Bildes. Falls die zurückgelieferten Koordinaten zum direkten Zugriff auf ein Bild verwendet werden sollen, ist also auf geeignete Randbehandlung zu achten.
Region, zu deren Rand die Distanz berechnet werden soll.
Rückgabebild, das die Distanz-Information enthält.
Rückgabebild, das die Koordinaten der nächstgelegenen Punkte enthält.
Metrik, die bei der Nächste-Punkte-Transformation 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 außerhalb ('false') der Eingabregion.
Defaultwert: 'true'
Werteliste: 'false', 'true'
Modus, in dem die Koordinaten der nächstgelegenen Punkte zurückgeliefert werden.
Defaultwert: 'absolute'
Werteliste: 'absolute', 'relative'
Breite der Ausgabebilder.
Defaultwert: 640
Wertevorschläge: 160, 192, 320, 384, 640, 768
Typischer Wertebereich: 1 ≤ Width
Höhe der Ausgabebilder.
Defaultwert: 480
Wertevorschläge: 120, 144, 240, 288, 480, 576
Typischer Wertebereich: 1 ≤ Height
Die Laufzeit-Komplexität ist O(Width*Height).
closest_point_transform liefert 2 (H_MSG_TRUE) zurück, wenn alle Parameter korrekt sind.
threshold, dyn_threshold, regiongrowing
threshold, vector_field_to_real
Y. Ge, C.R. Maurer, Jr., J.M. Fitzpatrick: „Surface-based 3-D image
registration using the Iterative Closest Point algorithm with a
closest point transform“; in: „Medical Imaging 1996: Image
Processing“, M.H. Loew, K.M. Hanson, Editors, Proc. SPIE 2710,
pages 358--367, 1996.
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 |