From 81b4e2a2d9f0da86a61f6348dccd4467e181a7ea Mon Sep 17 00:00:00 2001 From: "raffaele.gaetano" <raffaele.gaetano@cirad.fr> Date: Sat, 3 Jun 2023 10:03:18 +0200 Subject: [PATCH] WIP: upscaling. --- OBIA/OBIABase.py | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/OBIA/OBIABase.py b/OBIA/OBIABase.py index 113697a..ff0bd8d 100644 --- a/OBIA/OBIABase.py +++ b/OBIA/OBIABase.py @@ -332,12 +332,29 @@ class OBIABase: obj.SetParameterOutputImagePixelType('out', otb.ImagePixelType_uint16) obj.ExecuteAndWriteOutput() - def true_pred_bypixel(self, labels, predicted_classes): #TOBECHANGED - pred_c = np.zeros(np.max(self.ref_obj_layer)+1) + def true_pred_bypixel(self, labels, predicted_classes): + pred_c = np.zeros(np.max(self.ref_db['orig_label']).astype(int)+1) pred_c[labels] = predicted_classes - pred = pred_c[self.ref_obj_layer] + support = [] + for tn, t in self.tiled_objects(on_ref=True): + support.append(t[np.isin(t, labels)]) + support = np.concatenate(support) + pred = pred_c[support] true_c = np.zeros(np.max(self.ref_db['orig_label']).astype(int)+1) # ATTENTION: works if "labels" is sorted (as provided by get_reference_...) true_c[labels] = self.ref_db.loc[self.ref_db['orig_label'].isin(labels),'class'].to_numpy(dtype=int) - true = true_c[self.ref_obj_layer] + true = true_c[support] return pred[pred>0], true[pred>0] + + def tiled_objects(self, on_ref=False): + assert(self.tiles is not None) + idx = -1 if on_ref else 0 + r = otb.itkRegion() + for tn, t in self.tiles.items(): + r['index'][0], r['index'][1] = t[0], t[1] + r['size'][0], r['size'][1] = t[2], t[3] + self.ref_obj_layer_pipe[idx].PropagateRequestedRegion('out', r) + arr = self.ref_obj_layer_pipe[idx].GetImageAsNumpyArray('out').astype(np.uint32) + yield tn, arr + + -- GitLab