mirror of
https://github.com/wassname/scikit-image.git
synced 2026-07-16 11:21:25 +08:00
No SegFault when unwrapping a 3D fully masked array
The unwrap_phase function no longer causes a Segmentation fault when passed a 3D array in which all elements are masked. Closes #1347
This commit is contained in:
@@ -186,5 +186,22 @@ def test_unwrap_2d_all_masked():
|
||||
assert unwrap[0, 0] == 0
|
||||
|
||||
|
||||
def test_unwrap_3d_all_masked():
|
||||
# all elements masked
|
||||
image = np.ma.zeros((10, 10, 10))
|
||||
image[:] = np.ma.masked
|
||||
unwrap = unwrap_phase(image)
|
||||
assert np.ma.isMaskedArray(unwrap)
|
||||
assert np.all(unwrap.mask)
|
||||
|
||||
# 1 unmasked element, still zero edges
|
||||
image = np.ma.zeros((10, 10, 10))
|
||||
image[:] = np.ma.masked
|
||||
image[0, 0, 0] = 0
|
||||
unwrap = unwrap_phase(image)
|
||||
assert np.ma.isMaskedArray(unwrap)
|
||||
assert np.sum(unwrap.mask) == 999 # all but one masked
|
||||
assert unwrap[0, 0, 0] == 0
|
||||
|
||||
if __name__ == "__main__":
|
||||
run_module_suite()
|
||||
|
||||
@@ -1136,9 +1136,11 @@ void unwrap3D(double *wrapped_volume, double *unwrapped_volume,
|
||||
¶ms);
|
||||
normalEDGEs(voxel, edge, volume_width, volume_height, volume_depth, ¶ms);
|
||||
|
||||
// sort the EDGEs depending on their reiability. The VOXELs with higher
|
||||
// relibility (small value) first
|
||||
quicker_sort(edge, edge + params.no_of_edges - 1);
|
||||
if (params.no_of_edges != 0) {
|
||||
// sort the EDGEs depending on their reiability. The VOXELs with higher
|
||||
// relibility (small value) first
|
||||
quicker_sort(edge, edge + params.no_of_edges - 1);
|
||||
}
|
||||
|
||||
// gather VOXELs into groups
|
||||
gatherVOXELs(edge, ¶ms);
|
||||
|
||||
Reference in New Issue
Block a user