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
(input_object) region(-array) →
object
Region, zu deren Rand die Distanz berechnet werden soll.
Distances
(output_object) image →
object (int4)
Rückgabebild, das die Distanz-Information enthält.
ClosestPoints
(output_object) image →
object (vector_field)
Rückgabebild, das die Koordinaten der nächstgelegenen Punkte enthält.
Metric
(input_control) string →
(string)
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'
Foreground
(input_control) string →
(string)
Berechnung der Distanzen innerhalb ('true' ) oder außerhalb ('false' ) der Eingabregion.
Defaultwert: 'true'
Werteliste: 'false' , 'true'
ClosestPointMode
(input_control) string →
(string)
Modus, in dem die Koordinaten der nächstgelegenen Punkte zurückgeliefert werden.
Defaultwert: 'absolute'
Werteliste: 'absolute' , 'relative'
Width
(input_control) extent.x →
(integer)
Breite der Ausgabebilder.
Defaultwert: 640
Wertevorschläge: 160, 192, 320, 384, 640, 768
Typischer Wertebereich: 1
≤
Width
Height
(input_control) extent.y →
(integer)
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