mirror of
https://github.com/wassname/scikit-image.git
synced 2026-07-21 12:50:27 +08:00
No SegFault when unwrapping a 2D fully masked array
The unwrap_phase function no longer causes a Segmentation fault when passed a 2D array in which all elements are masked.
This commit is contained in:
@@ -166,5 +166,25 @@ def test_unwrap_2d_compressed_mask():
|
||||
assert np.all(unwrap == 0)
|
||||
|
||||
|
||||
def test_unwrap_2d_all_masked():
|
||||
# Segmentation fault when image is masked array with a all elements masked
|
||||
# GitHub issue #1347
|
||||
# all elements masked
|
||||
image = np.ma.zeros((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))
|
||||
image[:] = np.ma.masked
|
||||
image[0, 0] = 0
|
||||
unwrap = unwrap_phase(image)
|
||||
assert np.ma.isMaskedArray(unwrap)
|
||||
assert np.sum(unwrap.mask) == 99 # all but one masked
|
||||
assert unwrap[0, 0] == 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
run_module_suite()
|
||||
|
||||
@@ -718,10 +718,11 @@ void unwrap2D(double *wrapped_image, double *UnwrappedImage,
|
||||
horizontalEDGEs(pixel, edge, image_width, image_height, ¶ms);
|
||||
verticalEDGEs(pixel, edge, image_width, image_height, ¶ms);
|
||||
|
||||
// sort the EDGEs depending on their reiability. The PIXELs 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 PIXELs with higher
|
||||
// relibility (small value) first
|
||||
quicker_sort(edge, edge + params.no_of_edges - 1);
|
||||
}
|
||||
// gather PIXELs into groups
|
||||
gatherPIXELs(edge, ¶ms);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user