from vision.ruler_detection.find_scale import ruler_scale_factor from vision.tests import get_test_image, get_test_path, get_test_folder_images image = get_test_image( 'ruler', 'measured', 'BMNHE_1045431_13499_7ebc4ab5363564654efa82aadc3ac056c4fe88ec.JPG') pixel_distance = 37.23 real_world_distance = pixel_distance * ruler_scale_factor(image, distance=0.5)
from vision.ruler_detection.find_scale import ruler_scale_factor from vision.tests import get_test_image, get_test_path, get_test_folder_images image = get_test_image('ruler', 'measured', 'BMNHE_1045431_13499_7ebc4ab5363564654efa82aadc3ac056c4fe88ec.JPG') pixel_distance = 37.23 real_world_distance = pixel_distance * ruler_scale_factor(image, distance=0.5)
points = closest_points[:, [1, 0]] perimeter = draw.polygon_perimeter(points[:, 0], points[:, 1]) draw.set_color(output_image, (perimeter[0].astype(np.int), perimeter[1].astype(np.int)), [0, 1, 0]) points = shape[:, [1, 0]] perimeter = draw.polygon_perimeter(points[:, 0], points[:, 1]) draw.set_color(output_image, (perimeter[0].astype(np.int), perimeter[1].astype(np.int)), [0, 0, 1]) return output_image shapes = [smoothed_shape(read_shape(i)) for i in range(4)] aligned_shapes = procrustes.generalized_procrustes(shapes) shape_model = subspace_shape.learn(aligned_shapes, K=8) # wings_image = get_test_image('wing_area', 'cropped', 'unlabelled', '7.png') wings_image = get_test_image('wing_area', 'pinned', '1.png') edges = canny(wings_image[:, :, 1], 3) saliency = saliency_dragonfly(wings_image) thresh = threshold(saliency) edges = skeletonize(edges) gaps = scipy.ndimage.filters.convolve(1 * edges, np.ones((3, 3)), mode='constant', cval=False) edges[(gaps == 2) & ~edges] = True edges = skeletonize(edges) distance = scipy.ndimage.distance_transform_edt(~edges) labels = label(edges) regions = regionprops(labels)
output_image = 0.5 * (image + edge_image[:, :, np.newaxis]) points = closest_points[:, [1, 0]] perimeter = draw.polygon_perimeter(points[:, 0], points[:, 1]) draw.set_color(output_image, (perimeter[0].astype(np.int), perimeter[1].astype(np.int)), [0, 1, 0]) points = shape[:, [1, 0]] perimeter = draw.polygon_perimeter(points[:, 0], points[:, 1]) draw.set_color(output_image, (perimeter[0].astype(np.int), perimeter[1].astype(np.int)), [0, 0, 1]) return output_image shapes = [smoothed_shape(read_shape(i)) for i in range(4)] aligned_shapes = procrustes.generalized_procrustes(shapes) shape_model = subspace_shape.learn(aligned_shapes, K=8) wings_image = get_test_image('wing_area', 'cropped', 'unlabelled', '7.png') # write_image('wings.png', wings_image) edges = canny(wings_image[:, :, 1], 3) saliency = saliency_dragonfly(wings_image) thresh = threshold(saliency) background = threshold(scipy.ndimage.distance_transform_edt(~thresh)) contours = find_contours(thresh, level=0.5) outline = max(contours, key=attrgetter('size')).astype(np.int) outline_image = np.zeros_like(edges) draw.set_color(outline_image, (outline[:, 0], outline[:, 1]), True) edges = skeletonize(edges) gaps = scipy.ndimage.filters.convolve(1 * edges, np.ones((3, 3)), mode='constant', cval=False)