Spaces:
Runtime error
Runtime error
import numpy as np | |
import cv2 | |
from scipy.interpolate import Rbf | |
def apply_tps_warp(image, mask, warp_strength=5.0): | |
height, width = image.shape[:2] | |
y, x = np.where(mask > 0) | |
num_points = min(100, len(x)) | |
indices = np.random.choice(len(x), num_points, replace=False) | |
src_points = np.array([x[indices], y[indices]]).T | |
dst_points = src_points + np.random.randint(-warp_strength, warp_strength, src_points.shape) | |
# Apply Thin Plate Spline warping | |
rbf_x = Rbf(src_points[:, 0], src_points[:, 1], dst_points[:, 0], function='thin_plate') | |
rbf_y = Rbf(src_points[:, 0], src_points[:, 1], dst_points[:, 1], function='thin_plate') | |
grid_x, grid_y = np.meshgrid(np.arange(width), np.arange(height)) | |
map_x = rbf_x(grid_x, grid_y).astype(np.float32) | |
map_y = rbf_y(grid_x, grid_y).astype(np.float32) | |
warped_image = cv2.remap(image, map_x, map_y, interpolation=cv2.INTER_LINEAR, borderMode=cv2.BORDER_REFLECT) | |
return warped_image |