def test_intensity_remap_values(): trf = slt.IntensityRemap(p=1) img = np.arange(0, 256, 1, dtype=np.uint8).reshape((16, 16, 1)) dc = slc.DataContainer(img, "I") out = trf(dc).data[0] # Mapping is applied correctly img_expected = trf.state_dict["LUT"].reshape((16, 16, 1)) np.testing.assert_array_equal(out, img_expected) # Mapping has a positive trendline assert np.sum(np.diff(out.astype(np.float).ravel())) > 0 # Higher kernel size yields more monotonic mapping trf_noisy = slt.IntensityRemap(p=1, kernel_size=1) trf_low_pass = slt.IntensityRemap(p=1, kernel_size=5) out_noisy = trf_noisy(dc).data[0].astype(np.float) out_low_pass = trf_low_pass(dc).data[0].astype(np.float) std_noisy = np.std(np.diff(out_noisy.ravel())) std_low_pass = np.std(np.diff(out_low_pass.ravel())) assert std_low_pass < std_noisy
def test_intensity_remap_dtypes(dtype, expected): trf = slt.IntensityRemap(p=1) dc = slc.DataContainer(img_3x3().astype(dtype), "I") with expected: trf(dc)
def test_intensity_remap_channels(img, expected): trf = slt.IntensityRemap(p=1) dc = slc.DataContainer(img, "I") with expected: trf(dc)