diff --git a/Common/geometry.py b/Common/geometry.py
index be94595b490ada866ba66a17ee7a53fd892387b8..7955555c6c08c74596f6c8bb8f3da12d7fc599ed 100644
--- a/Common/geometry.py
+++ b/Common/geometry.py
@@ -115,7 +115,8 @@ def compute_displacement_with_masks(_src: otb.Application, _tgt: otb.Application
     ref_mask = 1 - _tgt_msk.GetImageAsNumpyArray(out_param_tgt_msk)
     mask = np.all((mask, ref_mask), axis=0).astype(int)
     H, W = mask.shape
-    cnt, cov, cov_ext = get_patch_centers(mask, geobin_size, num_geobins, margin=margin)
+    ratio = np.sum(mask)/(H*W) #scale number of bins based on coverage ratio
+    cnt, cov, cov_ext = get_patch_centers(mask, geobin_size, int(ratio*num_geobins), margin=margin)
     _src_msk.FreeRessources()
     _tgt_msk.FreeRessources()