def test_isodata_linspace(self): image = cp.linspace(-127, 0, 256) assert -63.8 < threshold_isodata(image) < -63.6 assert_array_almost_equal( threshold_isodata(image, return_all=True), [-63.74804688, -63.25195312], )
def test_isodata_camera_image(): camera = util.img_as_ubyte(camerad) threshold = threshold_isodata(camera) assert (cp.floor((camera[camera <= threshold].mean() + camera[camera > threshold].mean()) / 2.0) == threshold) assert threshold == 87 assert_array_equal(threshold_isodata(camera, return_all=True), [87])
def test_isodata_coins_image(): coins = util.img_as_ubyte(coinsd) threshold = threshold_isodata(coins) assert (cp.floor( (coins[coins <= threshold].mean() + coins[coins > threshold].mean()) / 2.0) == threshold) assert threshold == 107 assert_array_equal(threshold_isodata(coins, return_all=True), [107])
def test_isodata_moon_image(): moon = util.img_as_ubyte(moond) threshold = threshold_isodata(moon) assert (cp.floor( (moon[moon <= threshold].mean() + moon[moon > threshold].mean()) / 2.0) == threshold) assert threshold == 86 thresholds = threshold_isodata(moon, return_all=True) for threshold in thresholds: assert (cp.floor( (moon[moon <= threshold].mean() + moon[moon > threshold].mean()) / 2.0) == threshold) assert_array_equal(thresholds, [86, 87, 88, 122, 123, 124, 139, 140])
def test_isodata_moon_image_negative_int(): moon = util.img_as_ubyte(moond).astype(cp.int32) moon -= 100 threshold = threshold_isodata(moon) assert (cp.floor( (moon[moon <= threshold].mean() + moon[moon > threshold].mean()) / 2.0) == threshold) assert threshold == -14 thresholds = threshold_isodata(moon, return_all=True) for threshold in thresholds: assert (cp.floor( (moon[moon <= threshold].mean() + moon[moon > threshold].mean()) / 2.0) == threshold) assert_array_equal(thresholds, [-14, -13, -12, 22, 23, 24, 39, 40])
def test_isodata_moon_image_negative_float(): moon = util.img_as_ubyte(moond).astype(cp.float64) moon -= 100 assert -14 < threshold_isodata(moon) < -13 thresholds = threshold_isodata(moon, return_all=True) # fmt: off assert_array_almost_equal( thresholds, [ -13.83789062, -12.84179688, -11.84570312, 22.02148438, # noqa 23.01757812, 24.01367188, 38.95507812, 39.95117188 ]) # noqa
def test_isodata_16bit(self): np.random.seed(0) imfloat = cp.asarray(np.random.rand(256, 256)) assert 0.49 < threshold_isodata(imfloat, nbins=1024) < 0.51 assert all( 0.49 < threshold_isodata(imfloat, nbins=1024, return_all=True))
def test_isodata_blank_zero(self): image = cp.zeros((5, 5), dtype=cp.uint8) assert threshold_isodata(image) == 0 assert_array_equal(threshold_isodata(image, return_all=True), [0])
def test_isodata(self): assert threshold_isodata(self.image) == 2 assert_array_equal(threshold_isodata(self.image, return_all=True), [2])