magni.imaging.measurements._zigzag module¶
Module providing public functions for the magni.imaging.measurements subpackage.
Routine listings¶
 zigzag_sample_image(h, w, scan_length, num_points, angle=np.pi / 20)
 Function for zigzag sampling an image.
 zigzag_sample_surface(l, w, speed, sample_rate, time, angle=np.pi / 20)
 Function for zigzag sampling a surface.

magni.imaging.measurements._zigzag.
zigzag_sample_image
(h, w, scan_length, num_points, angle=0.15707963267948966)[source]¶ Sample an image using a zigzag pattern.
The coordinates (in units of pixels) resulting from sampling an image of size h times w using a zigzag pattern are determined. The scan_length determines the length of the path scanned whereas num_points indicates the number of samples taken on that path.
Parameters:  h (int) – The height of the area to scan in units of pixels.
 w (int) – The width of the area to scan in units of pixels.
 scan_length (float) – The length of the path to scan in units of pixels.
 num_points (int) – The number of samples to take on the scanned path.
 angle (float) – The angle measured in radians by which the lines deviate from being horizontal (the default is pi / 20).
Returns: coords (ndarray) – The coordinates of the samples arranged into a 2D array, such that each row is a coordinate pair (x, y).
Notes
The orientation of the coordinate system is such that the width w is measured along the xaxis whereas the height h is measured along the yaxis.
The angle is measured clockwise relative to horizontal and is limited to the interval \(\left(0;\arctan\left(\frac{h}{w}\right)\right)\).
Examples
For example,
>>> import numpy as np >>> from magni.imaging.measurements import zigzag_sample_image >>> h = 10 >>> w = 10 >>> scan_length = 50.0 >>> num_points = 12 >>> np.set_printoptions(suppress=True) >>> zigzag_sample_image(h, w, scan_length, num_points) array([[ 0.5 , 0.5 ], [ 4.98949246, 1.21106575], [ 9.47898491, 1.9221315 ], [ 5.03152263, 2.63319725], [ 0.54203017, 3.344263 ], [ 4.94746229, 4.05532875], [ 9.43695474, 4.7663945 ], [ 5.0735528 , 5.47746025], [ 0.58406034, 6.188526 ], [ 4.90543212, 6.89959175], [ 9.39492457, 7.6106575 ], [ 5.11558297, 8.32172325]])

magni.imaging.measurements._zigzag.
zigzag_sample_surface
(l, w, speed, sample_rate, time, angle=0.15707963267948966)[source]¶ Sample a surface area using a zigzag pattern.
The coordinates (in units of meters) resulting from sampling an area of size l times w using a zigzag pattern are determined. The scanned path is determined from the probe speed and the scan
time
.Parameters:  l (float) – The length of the area to scan in units of meters.
 w (float) – The width of the area to scan in units of meters.
 speed (float) – The probe speed in units of meters/second.
 sample_rate (float) – The sample rate in units of Hertz.
 time (float) – The scan time in units of seconds.
 angle (float) – The angle measured in radians by which the lines deviate from being horizontal (the default is pi / 20).
Returns: coords (ndarray) – The coordinates of the samples arranged into a 2D array, such that each row is a coordinate pair (x, y).
Notes
The orientation of the coordinate system is such that the width w is measured along the xaxis whereas the length l is measured along the yaxis.
The angle is measured clockwise relative to horizontal and is limited to the interval \(\left(0;\arctan\left(\frac{h}{w}\right)\right)\).
Examples
For example,
>>> import numpy as np >>> from magni.imaging.measurements import zigzag_sample_surface >>> l = 1e6 >>> w = 1e6 >>> speed = 7e7 >>> sample_rate = 1.0 >>> time = 12.0 >>> np.set_printoptions(suppress=True) >>> zigzag_sample_surface(l, w, speed, sample_rate, time) array([[ 0. , 0. ], [ 0.00000069, 0.00000011], [ 0.00000062, 0.00000022], [ 0.00000007, 0.00000033], [ 0.00000077, 0.00000044], [ 0.00000054, 0.00000055], [ 0.00000015, 0.00000066], [ 0.00000084, 0.00000077], [ 0.00000047, 0.00000088], [ 0.00000022, 0.00000099], [ 0.00000091, 0.0000009 ], [ 0.00000039, 0.0000008 ], [ 0.0000003 , 0.00000069]])