diff --git a/aliby/tile/traps.py b/aliby/tile/traps.py
index 5d3e25fee5a01829fb4640a77971b40219a01e72..94d6c4cd8072fb269c94be35bdaee30f7c1d56c4 100644
--- a/aliby/tile/traps.py
+++ b/aliby/tile/traps.py
@@ -24,14 +24,28 @@ def stretch_image(image):
     return image
 
 
-def segment_traps(image, tile_size, downscale=0.4):
+def segment_traps(
+    image,
+    tile_size,
+    downscale=0.4,
+    disk_radius_frac=None,
+    square_size=None,
+    min_frac_tilesize=None,
+):
+    if disk_radius_frac is None:
+        disk_radius_frac = 0.01
+    if square_size is None:
+        square_size = 3
+    if min_frac_tilesize is None:
+        min_frac_tilesize = 0.8
+
     # Make image go between 0 and 255
     img = image  # Keep a memory of image in case need to re-run
-    # stretched = stretch_image(image)
-    # img = stretch_image(image)
     # TODO Optimise the hyperparameters
-    disk_radius = int(min([0.01 * x for x in img.shape]))
-    min_area = 0.2 * (tile_size ** 2)
+
+    disk_radius = int(min([disk_radius_frac * x for x in img.shape]))
+    min_area = min_frac_tilesize * (tile_size ** 2)
+
     if downscale != 1:
         img = transform.rescale(image, downscale)
     # entropy_image = entropy(img_as_ubyte(img), disk(disk_radius))
@@ -41,7 +55,7 @@ def segment_traps(image, tile_size, downscale=0.4):
 
     # apply threshold
     thresh = threshold_otsu(entropy_image)
-    bw = closing(entropy_image > thresh, square(3))
+    bw = closing(entropy_image > thresh, square(square_size))
 
     # remove artifacts connected to image border
     cleared = clear_border(bw)