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(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