def _process(self, case_name, img):
        self.dump_debug_img(Path(case_name) / '01_input.png', img)

        edges = self.processor.process(img)

        self.dump_debug_img(Path(case_name) / '02_gaussed_grayscale.png', np.uint8(self.processor._debug_last_values['gaussed_grayscale']))
        self.dump_debug_img(Path(case_name) / '03_intencity_dx.png', np.uint8(127 + self.processor._debug_last_values['intensity_dx']))
        self.dump_debug_img(Path(case_name) / '04_intencity_dy.png', np.uint8(127 + self.processor._debug_last_values['intensity_dy']))
        self.dump_debug_img(Path(case_name) / '05_intencity_dnorm.png', np.uint8(self.processor._debug_last_values['intensity_dnorm']))
        self.dump_debug_img(Path(case_name) / '06_is_extremum.png', np.uint8(self.processor._debug_last_values['is_extremum']) * 255)
        self.dump_debug_img(Path(case_name) / '07_weak_edges.png', np.uint8(self.processor._debug_last_values['weak_edges']) * 255)
        self.dump_debug_img(Path(case_name) / '08_strong_edges.png', np.uint8(self.processor._debug_last_values['strong_edges']) * 255)

        self.dump_debug_img(Path(case_name) / '09_edges.png', edges * 255)
        contours = extract_contours(edges)

        pointsNumber = 0

        h, w = img.shape[:2]
        extracted_edges = np.zeros((h, w, 3), np.uint8)
        np.random.seed(239)
        for contour in contours:
            colour = np.random.randint(60, 255, (3,))
            draw_pixels(extracted_edges, contour, colour)
            pointsNumber += len(contour)
            self.assertTrue(np.all(edges == draw_pixels(edges.copy(), contour, 1)))  # assertion, that all pixels from contours are from edges
        self.dump_debug_img(Path(case_name) / '10_extracted_edges.png', extracted_edges)

        self.assertEqual(pointsNumber, len(edges.nonzero()[0]))

        return contours
Exemple #2
0
    def _process(self, case_name, img):
        self.dump_debug_img(Path(case_name) / '01_input.png', img)

        edges = self.processor.process(img)

        self.dump_debug_img(
            Path(case_name) / '02_gaussed_grayscale.png',
            np.uint8(self.processor._debug_last_values['gaussed_grayscale']))
        self.dump_debug_img(
            Path(case_name) / '03_intencity_dx.png',
            np.uint8(127 + self.processor._debug_last_values['intensity_dx']))
        self.dump_debug_img(
            Path(case_name) / '04_intencity_dy.png',
            np.uint8(127 + self.processor._debug_last_values['intensity_dy']))
        self.dump_debug_img(
            Path(case_name) / '05_intencity_dnorm.png',
            np.uint8(self.processor._debug_last_values['intensity_dnorm']))
        self.dump_debug_img(
            Path(case_name) / '06_is_extremum.png',
            np.uint8(self.processor._debug_last_values['is_extremum']) * 255)
        self.dump_debug_img(
            Path(case_name) / '07_weak_edges.png',
            np.uint8(self.processor._debug_last_values['weak_edges']) * 255)
        self.dump_debug_img(
            Path(case_name) / '08_strong_edges.png',
            np.uint8(self.processor._debug_last_values['strong_edges']) * 255)

        self.dump_debug_img(Path(case_name) / '09_edges.png', edges * 255)
        contours = extract_contours(edges)

        pointsNumber = 0

        h, w = img.shape[:2]
        extracted_edges = np.zeros((h, w, 3), np.uint8)
        np.random.seed(239)
        for contour in contours:
            colour = np.random.randint(60, 255, (3, ))
            draw_pixels(extracted_edges, contour, colour)
            pointsNumber += len(contour)
            self.assertTrue(
                np.all(edges == draw_pixels(edges.copy(), contour, 1))
            )  # assertion, that all pixels from contours are from edges
        self.dump_debug_img(
            Path(case_name) / '10_extracted_edges.png', extracted_edges)

        self.assertEqual(pointsNumber, len(edges.nonzero()[0]))

        return contours
 def process_edges(self, is_edge):
     contours = extract_contours(is_edge)
     for contour in contours:
         self.process_contour(contour)
     return self.ellipses