コード例 #1
0
 def laplacian_pyramid(self, depth):
     """Create laplacian pyramid of a certain depth."""
     laplacian_collection = PyramidCollection()
     gaussian_collection = self._gaussian_pyramid(depth)
     for layer_number, image in enumerate(self.images):
         gaussian_pyramid = gaussian_collection.get_pyramid(layer_number)
         gaussian_top_level = gaussian_pyramid.get_top_level(
         )  # the lowest resolution
         laplacian_pyramid = Pyramid(layer_number, depth)
         laplacian_pyramid.add_higher_resolution_level(gaussian_top_level)
         for level_number in range(depth - 1, 0, -1):
             to_expand = gaussian_pyramid.get_level(
                 level_number).get_array()
             expanded = cv2.pyrUp(to_expand)
             lower_level = gaussian_pyramid.get_level(level_number -
                                                      1).get_array()
             if expanded.shape != lower_level.shape:
                 expanded = expanded[:lower_level.shape[0], :lower_level.
                                     shape[1]]
             difference = lower_level - expanded
             difference_level = PyramidLevel(difference, layer_number,
                                             level_number)
             laplacian_pyramid.add_higher_resolution_level(difference_level)
         laplacian_collection.add_pyramid(laplacian_pyramid)
     return laplacian_collection
コード例 #2
0
 def test_add_higher_resolution_level_adds_new_element_in_front_of_the_level_list(
         self):
     pyr = Pyramid(10, 2)
     pyr.add_higher_resolution_level(10)
     self.assertEqual(len(pyr.levels), 1)
     pyr.add_higher_resolution_level(12)
     self.assertEqual(len(pyr.levels), 2)
     self.assertEqual(pyr.levels[1], 10)
     self.assertEqual(pyr.levels[0], 12)