From 594eb14dffcef65142130ec4c81b0a879df84d47 Mon Sep 17 00:00:00 2001
From: Christopher Rhodes <christopher.rhodes@embl.de>
Date: Sat, 30 Nov 2024 07:08:10 +0100
Subject: [PATCH] Rescale channels separately unless making an RGB image

---
 model_server/base/roiset.py | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/model_server/base/roiset.py b/model_server/base/roiset.py
index df3714ce..3977700c 100644
--- a/model_server/base/roiset.py
+++ b/model_server/base/roiset.py
@@ -973,7 +973,11 @@ class RoiSet(object):
                 mask = roi.binary_mask
 
             if rescale_clip is not None:
-                patch = rescale(patch, rescale_clip)
+                if rgb_overlay_channels:  # rescale all equally to preserve white balance
+                    patch = rescale(patch, rescale_clip)
+                else:
+                    for ci in range(0, pc):  # rescale channels separately
+                        patch[:, :, ci, :] = rescale(patch[:, :, ci, :], rescale_clip)
 
             if kwargs.get('draw_bounding_box') is True and expanded:
                 bci = kwargs.get('bounding_box_channel', 0)
-- 
GitLab