From 76074df6e1ce2b30267fd943e901f3e168f76271 Mon Sep 17 00:00:00 2001 From: s224389 <s224389@student.dtu.dk> Date: Mon, 20 Jan 2025 13:42:46 +0100 Subject: [PATCH] Delete live_wire.py --- live_wire.py | 135 --------------------------------------------------- 1 file changed, 135 deletions(-) delete mode 100644 live_wire.py diff --git a/live_wire.py b/live_wire.py deleted file mode 100644 index 71fcc28..0000000 --- a/live_wire.py +++ /dev/null @@ -1,135 +0,0 @@ -import cv2 -import numpy as np -import matplotlib.pyplot as plt -from skimage import exposure -from skimage.filters import gaussian -from skimage.feature import canny -from skimage.graph import route_through_array -from scipy.signal import convolve2d - -### Disk live wire cost image - -def compute_disk_size(user_radius, upscale_factor=1.2): - return int(np.ceil(upscale_factor * 2 * user_radius + 1) // 2 * 2 + 1) - - -def load_image(path): - return cv2.imread(path, cv2.IMREAD_GRAYSCALE) - -def preprocess_image(image, sigma=3, clip_limit=0.01): - # Apply histogram equalization - image_contrasted = exposure.equalize_adapthist(image, clip_limit=clip_limit) - - # Apply smoothing - smoothed_img = gaussian(image_contrasted, sigma=sigma) - - return smoothed_img - - -def compute_cost_image(path, user_radius, sigma=3, clip_limit=0.01): - - disk_size = compute_disk_size(user_radius) - - ### Load image - image = load_image(path) - - # Apply smoothing - smoothed_img = preprocess_image(image, sigma=sigma, clip_limit=clip_limit) - - # Apply Canny edge detection - canny_img = canny(smoothed_img) - - # Do disk thing - binary_img = canny_img - kernel = circle_edge_kernel(k_size=disk_size) - convolved = convolve2d(binary_img, kernel, mode='same', boundary='fill') - - # Create cost image - cost_img = (convolved.max() - convolved)**4 # Invert edges: higher cost where edges are stronger - - return cost_img - - -def find_path(cost_image, points): - - if len(points) != 2: - raise ValueError("Points should be a list of 2 points: seed and target.") - - seed_rc, target_rc = points - - path_rc, cost = route_through_array( - cost_image, - start=seed_rc, - end=target_rc, - fully_connected=True - ) - - return path_rc - - -def circle_edge_kernel(k_size=5, radius=None): - """ - Create a k_size x k_size array whose values increase linearly - from 0 at the center to 1 at the circle boundary (radius). - - Parameters - ---------- - k_size : int - The size (width and height) of the kernel array. - radius : float, optional - The circle's radius. By default, set to (k_size-1)/2. - - Returns - ------- - kernel : 2D numpy array of shape (k_size, k_size) - The circle-edge-weighted kernel. - """ - if radius is None: - # By default, let the radius be half the kernel size - radius = (k_size - 1) / 2 - - # Create an empty kernel - kernel = np.zeros((k_size, k_size), dtype=float) - - # Coordinates of the center - center = radius # same as (k_size-1)/2 if radius is default - - # Fill the kernel - for y in range(k_size): - for x in range(k_size): - dist = np.sqrt((x - center)**2 + (y - center)**2) - if dist <= radius: - # Weight = distance / radius => 0 at center, 1 at boundary - kernel[y, x] = dist / radius - - return kernel - - -# Other functions (to be implemented?) -def downscale(img, points, scale_percent): - """ - Downsample `img` to `scale_percent` size and scale the given points accordingly. - Returns (downsampled_img, (scaled_seed, scaled_target)). - """ - if scale_percent == 100: - return img, (tuple(points[0]), tuple(points[1])) - else: - # Compute new dimensions - width = int(img.shape[1] * scale_percent / 100) - height = int(img.shape[0] * scale_percent / 100) - new_dimensions = (width, height) - - # Downsample - downsampled_img = cv2.resize(img, new_dimensions, interpolation=cv2.INTER_AREA) - - # Scaling factors - scale_x = width / img.shape[1] - scale_y = height / img.shape[0] - - # Scale the points (x, y) - seed_xy = tuple(points[0]) - target_xy = tuple(points[1]) - scaled_seed_xy = (int(seed_xy[0] * scale_x), int(seed_xy[1] * scale_y)) - scaled_target_xy = (int(target_xy[0] * scale_x), int(target_xy[1] * scale_y)) - - return downsampled_img, (scaled_seed_xy, scaled_target_xy) \ No newline at end of file -- GitLab