def test_Intensity_1(self): """Test a case of distributed intensity values.""" # Create label image with only one region label_image = scipy.zeros(2*2*2, dtype=scipy.int8).reshape(2,2,2) # Create original image with two equally distibuted intensity value original_image = scipy.zeros(2*2*2, dtype=scipy.int8) original_image[:4] = -1 original_image[4:] = 1 original_image = original_image.reshape(2,2,2) # Initialize object statistics = LabelImageStatistics(label_image, original_image) # Computed expected result i = scipy.array([-1,-1,-1,-1,1,1,1,1]) h = scipy.histogram(i, statistics._intensity_distribution_local_histogram_width) hr = scipy.array(h[0]) / float(h[0].sum()) g = stats.norm(*stats.norm.fit(i)) r = abs(hr - g.pdf(h[1][:-1])) r *= h[1][-2] - h[1][0] r = r.sum() # Check created intensity distribution intensity_distributions = statistics.get_intensity_distributions() self.assertEqual(len(intensity_distributions), 1) self.assertEqual(intensity_distributions[0], i.std()) intensity_distribution_histogram = statistics.get_intensity_distribution_histogram() self.assertEqual(intensity_distribution_histogram[0][statistics.get_intensity_distribution_histogram_width()/2], 1) self.assertEqual(intensity_distribution_histogram[0].max(), 1) self.assertEqual(intensity_distribution_histogram[0].min(), 0) self.assertEqual(intensity_distribution_histogram[1].mean(), i.std())
def test_Homogeneous(self): """Checks the return value for a homogeneous region.""" # Create label image with only one region label_image = scipy.zeros(2 * 2 * 2, dtype=scipy.int8).reshape(2, 2, 2) # Create original image with only one intensity value original_image = scipy.zeros(2 * 2 * 2, dtype=scipy.int8).reshape(2, 2, 2) # Initialize object statistics = LabelImageStatistics(label_image, original_image) # Check created intensity distribution intensity_distributions = statistics.get_intensity_distributions() self.assertEqual(len(intensity_distributions), 1) self.assertEqual(intensity_distributions[0], 0) intensity_distribution_histogram = statistics.get_intensity_distribution_histogram( ) self.assertEqual( len(intensity_distribution_histogram[0]), statistics.get_intensity_distribution_histogram_width()) self.assertEqual( len(intensity_distribution_histogram[1]), statistics.get_intensity_distribution_histogram_width() + 1) self.assertEqual( intensity_distribution_histogram[0] [statistics.get_intensity_distribution_histogram_width() / 2], 1) self.assertEqual(intensity_distribution_histogram[0].max(), 1) self.assertEqual(intensity_distribution_histogram[0].min(), 0)
def test_Basic(self): """Test the case of a region with only one intensity value and some basic return values.""" # Create label image with only one region label_image = scipy.zeros(2 * 2 * 2, dtype=scipy.int8).reshape(2, 2, 2) # Create original image with only one intensity value original_image = scipy.zeros(2 * 2 * 2, dtype=scipy.int8).reshape(2, 2, 2) # Initialize object statistics = LabelImageStatistics(label_image, original_image) # Check created intensity distribution intensity_distributions = statistics.get_intensity_distributions() self.assertEqual(len(intensity_distributions), 1) self.assertEqual(intensity_distributions[0], 0) intensity_distribution_histogram = statistics.get_intensity_distribution_histogram( ) self.assertEqual( len(intensity_distribution_histogram[0]), statistics.get_intensity_distribution_histogram_width()) self.assertEqual( len(intensity_distribution_histogram[1]), statistics.get_intensity_distribution_histogram_width() + 1) self.assertEqual( intensity_distribution_histogram[0] [statistics.get_intensity_distribution_histogram_width() / 2], 1) self.assertEqual(intensity_distribution_histogram[0].max(), 1) self.assertEqual(intensity_distribution_histogram[0].min(), 0) # Check created size distribution sizes = statistics.get_sizes() self.assertEqual(len(sizes), 1) self.assertEqual(sizes[0], 2 * 2 * 2) sizes_histogram = statistics.get_size_histogram() self.assertEqual(len(sizes_histogram[0]), statistics.get_size_histogram_width()) self.assertEqual(len(sizes_histogram[1]), statistics.get_size_histogram_width() + 1) self.assertEqual( sizes_histogram[0][statistics.get_size_histogram_width() / 2], 1) self.assertEqual(sizes_histogram[0].max(), 1) self.assertEqual(sizes_histogram[0].min(), 0) # Check other statistics values self.assertTrue(statistics.labels_are_consecutive()) self.assertEqual(statistics.get_min_intensity(), 0) self.assertEqual(statistics.get_max_intensity(), 0) self.assertEqual(statistics.get_min_label(), 0) self.assertEqual(statistics.get_max_label(), 0) self.assertEqual(statistics.get_label_count(), 1)
def test_Basic(self): """Test the case of a region with only one intensity value and some basic return values.""" # Create label image with only one region label_image = scipy.zeros(2*2*2, dtype=scipy.int8).reshape(2,2,2) # Create original image with only one intensity value original_image = scipy.zeros(2*2*2, dtype=scipy.int8).reshape(2,2,2) # Initialize object statistics = LabelImageStatistics(label_image, original_image) # Check created intensity distribution intensity_distributions = statistics.get_intensity_distributions() self.assertEqual(len(intensity_distributions), 1) self.assertEqual(intensity_distributions[0], 0) intensity_distribution_histogram = statistics.get_intensity_distribution_histogram() self.assertEqual(len(intensity_distribution_histogram[0]), statistics.get_intensity_distribution_histogram_width()) self.assertEqual(len(intensity_distribution_histogram[1]), statistics.get_intensity_distribution_histogram_width() + 1) self.assertEqual(intensity_distribution_histogram[0][statistics.get_intensity_distribution_histogram_width()/2], 1) self.assertEqual(intensity_distribution_histogram[0].max(), 1) self.assertEqual(intensity_distribution_histogram[0].min(), 0) # Check created size distribution sizes = statistics.get_sizes() self.assertEqual(len(sizes), 1) self.assertEqual(sizes[0], 2*2*2) sizes_histogram = statistics.get_size_histogram() self.assertEqual(len(sizes_histogram[0]), statistics.get_size_histogram_width()) self.assertEqual(len(sizes_histogram[1]), statistics.get_size_histogram_width() + 1) self.assertEqual(sizes_histogram[0][statistics.get_size_histogram_width()/2], 1) self.assertEqual(sizes_histogram[0].max(), 1) self.assertEqual(sizes_histogram[0].min(), 0) # Check other statistics values self.assertTrue(statistics.labels_are_consecutive()) self.assertEqual(statistics.get_min_intensity(), 0) self.assertEqual(statistics.get_max_intensity(), 0) self.assertEqual(statistics.get_min_label(), 0) self.assertEqual(statistics.get_max_label(), 0) self.assertEqual(statistics.get_label_count(), 1)
def test_Homogeneous(self): """Checks the return value for a homogeneous region.""" # Create label image with only one region label_image = scipy.zeros(2*2*2, dtype=scipy.int8).reshape(2,2,2) # Create original image with only one intensity value original_image = scipy.zeros(2*2*2, dtype=scipy.int8).reshape(2,2,2) # Initialize object statistics = LabelImageStatistics(label_image, original_image) # Check created intensity distribution intensity_distributions = statistics.get_intensity_distributions() self.assertEqual(len(intensity_distributions), 1) self.assertEqual(intensity_distributions[0], 0) intensity_distribution_histogram = statistics.get_intensity_distribution_histogram() self.assertEqual(len(intensity_distribution_histogram[0]), statistics.get_intensity_distribution_histogram_width()) self.assertEqual(len(intensity_distribution_histogram[1]), statistics.get_intensity_distribution_histogram_width() + 1) self.assertEqual(intensity_distribution_histogram[0][statistics.get_intensity_distribution_histogram_width()/2], 1) self.assertEqual(intensity_distribution_histogram[0].max(), 1) self.assertEqual(intensity_distribution_histogram[0].min(), 0)
def test_Intensity_1(self): """Test a case of distributed intensity values.""" # Create label image with only one region label_image = scipy.zeros(2 * 2 * 2, dtype=scipy.int8).reshape(2, 2, 2) # Create original image with two equally distibuted intensity value original_image = scipy.zeros(2 * 2 * 2, dtype=scipy.int8) original_image[:4] = -1 original_image[4:] = 1 original_image = original_image.reshape(2, 2, 2) # Initialize object statistics = LabelImageStatistics(label_image, original_image) # Computed expected result i = scipy.array([-1, -1, -1, -1, 1, 1, 1, 1]) h = scipy.histogram( i, statistics._intensity_distribution_local_histogram_width) hr = scipy.array(h[0]) / float(h[0].sum()) g = stats.norm(*stats.norm.fit(i)) r = abs(hr - g.pdf(h[1][:-1])) r *= h[1][-2] - h[1][0] r = r.sum() # Check created intensity distribution intensity_distributions = statistics.get_intensity_distributions() self.assertEqual(len(intensity_distributions), 1) self.assertEqual(intensity_distributions[0], i.std()) intensity_distribution_histogram = statistics.get_intensity_distribution_histogram( ) self.assertEqual( intensity_distribution_histogram[0] [statistics.get_intensity_distribution_histogram_width() / 2], 1) self.assertEqual(intensity_distribution_histogram[0].max(), 1) self.assertEqual(intensity_distribution_histogram[0].min(), 0) self.assertEqual(intensity_distribution_histogram[1].mean(), i.std())