def test_01_01_combine(self): img = self.get_my_image() inj = cpm_inject.InjectImage("my_image", img) inj.module_num = 1 ctg = cpm_ctg.ColorToGray() ctg.module_num = 2 ctg.image_name.value = "my_image" ctg.combine_or_split.value = cpm_ctg.COMBINE ctg.red_contribution.value = 1 ctg.green_contribution.value = 2 ctg.blue_contribution.value = 3 ctg.grayscale_name.value = "my_grayscale" pipeline = cpp.Pipeline() pipeline.add_module(inj) pipeline.add_module(ctg) pipeline.test_valid() measurements = cpm.Measurements() object_set = cpo.ObjectSet() image_set_list = cpi.ImageSetList() workspace = Workspace(pipeline, inj, None, None, measurements, image_set_list, None) inj.prepare_run(workspace) inj.prepare_group(workspace, {}, [1]) image_set = image_set_list.get_image_set(0) inj.run(Workspace(pipeline, inj, image_set, object_set, measurements, None)) ctg.run(Workspace(pipeline, ctg, image_set, object_set, measurements, None)) grayscale = image_set.get_image("my_grayscale") self.assertTrue(grayscale) img = grayscale.image self.assertAlmostEqual(img[0, 0], 1.0 / 6.0) self.assertAlmostEqual(img[0, 25], 1.0 / 3.0) self.assertAlmostEqual(img[25, 0], 1.0 / 2.0) self.assertAlmostEqual(img[25, 25], 0)
def test_01_04_split_channels(self): np.random.seed(13) image = np.random.uniform(size=(20, 10, 5)) image_set_list = cpi.ImageSetList() image_set = image_set_list.get_image_set(0) image_set.add(IMAGE_NAME, cpi.Image(image)) module = cpm_ctg.ColorToGray() module.module_num = 1 module.image_name.value = IMAGE_NAME module.combine_or_split.value = cpm_ctg.SPLIT module.rgb_or_channels.value = cpm_ctg.CH_CHANNELS module.add_channel() module.add_channel() channel_indexes = np.array([1, 4, 2]) for i, channel_index in enumerate(channel_indexes): module.channels[i].channel_choice.value = module.channel_names[channel_index] module.channels[i].image_name.value = OUTPUT_IMAGE_F % i pipeline = cpp.Pipeline() def callback(caller, event): self.assertFalse(isinstance(event, cpp.RunExceptionEvent)) pipeline.add_listener(callback) pipeline.add_module(module) workspace = Workspace(pipeline, module, image_set, cpo.ObjectSet(), cpm.Measurements(), image_set_list) module.run(workspace) for i, channel_index in enumerate(channel_indexes): pixels = image_set.get_image(module.channels[i].image_name.value).pixel_data self.assertEqual(pixels.ndim, 2) self.assertEqual(tuple(pixels.shape), (20, 10)) np.testing.assert_almost_equal(image[:, :, channel_index], pixels)
def test_01_02_split_all(self): img = self.get_my_image() inj = cpm_inject.InjectImage("my_image", img) inj.module_num = 1 ctg = cpm_ctg.ColorToGray() ctg.module_num = 2 ctg.image_name.value = "my_image" ctg.combine_or_split.value = cpm_ctg.SPLIT ctg.use_red.value = True ctg.use_blue.value = True ctg.use_green.value = True ctg.red_name.value = "my_red" ctg.green_name.value = "my_green" ctg.blue_name.value = "my_blue" pipeline = cpp.Pipeline() pipeline.add_module(inj) pipeline.add_module(ctg) pipeline.test_valid() measurements = cpm.Measurements() object_set = cpo.ObjectSet() image_set_list = cpi.ImageSetList() workspace = Workspace(pipeline, inj, None, None, measurements, image_set_list, None) inj.prepare_run(workspace) inj.prepare_group(workspace, {}, [1]) image_set = image_set_list.get_image_set(0) inj.run( Workspace(pipeline, inj, image_set, object_set, measurements, None)) ctg.run( Workspace(pipeline, ctg, image_set, object_set, measurements, None)) red = image_set.get_image("my_red") self.assertTrue(red) img = red.image self.assertAlmostEqual(img[0, 0], 1) self.assertAlmostEqual(img[0, 25], 0) self.assertAlmostEqual(img[25, 0], 0) self.assertAlmostEqual(img[25, 25], 0) green = image_set.get_image("my_green") self.assertTrue(green) img = green.image self.assertAlmostEqual(img[0, 0], 0) self.assertAlmostEqual(img[0, 25], 1) self.assertAlmostEqual(img[25, 0], 0) self.assertAlmostEqual(img[25, 25], 0) blue = image_set.get_image("my_blue") self.assertTrue(blue) img = blue.image self.assertAlmostEqual(img[0, 0], 0) self.assertAlmostEqual(img[0, 25], 0) self.assertAlmostEqual(img[25, 0], 1) self.assertAlmostEqual(img[25, 25], 0)
def test_01_03_combine_channels(self): np.random.seed(13) image = np.random.uniform(size=(20, 10, 5)) image_set_list = cpi.ImageSetList() image_set = image_set_list.get_image_set(0) image_set.add(IMAGE_NAME, cpi.Image(image)) module = cpm_ctg.ColorToGray() module.module_num = 1 module.image_name.value = IMAGE_NAME module.combine_or_split.value = cpm_ctg.COMBINE module.grayscale_name.value = OUTPUT_IMAGE_F % 1 module.rgb_or_channels.value = cpm_ctg.CH_CHANNELS module.add_channel() module.add_channel() channel_indexes = np.array([2, 0, 3]) factors = np.random.uniform(size=3) divisor = np.sum(factors) expected = np.zeros((20, 10)) for i, channel_index in enumerate(channel_indexes): module.channels[i].channel_choice.value = module.channel_names[ channel_index] module.channels[i].contribution.value_text = "%.10f" % factors[i] expected += image[:, :, channel_index] * factors[i] / divisor pipeline = cpp.Pipeline() def callback(caller, event): self.assertFalse(isinstance(event, cpp.RunExceptionEvent)) pipeline.add_listener(callback) pipeline.add_module(module) workspace = Workspace(pipeline, module, image_set, cpo.ObjectSet(), cpm.Measurements(), image_set_list) module.run(workspace) pixels = image_set.get_image(module.grayscale_name.value).pixel_data self.assertEqual(pixels.ndim, 2) self.assertEqual(tuple(pixels.shape), (20, 10)) np.testing.assert_almost_equal(expected, pixels)
def test_00_00_init(self): x = cpm_ctg.ColorToGray()