瀏覽代碼

Merge branch 'master' of gogs.univ-littoral.fr:Prise3D/Thesis-CommonModules

Jérôme BUISINE 4 年之前
父節點
當前提交
5f7d01f3c5
共有 1 個文件被更改,包括 30 次插入1 次删除
  1. 30 1
      classes/Transformation.py

+ 30 - 1
classes/Transformation.py

@@ -1,13 +1,23 @@
+# main imports
 import os
+import numpy as np
 
+# image processing imports
+from ipfml.processing import transform
 from ipfml.processing import reconstruction
+from ipfml.filters import convolution, kernels
+from ipfml import utils
+
+from PIL import Image
+
 
 # Transformation class to store transformation method of image and get usefull information
 class Transformation():
 
-    def __init__(self, _transformation, _param):
+    def __init__(self, _transformation, _param, _size):
         self.transformation = _transformation
         self.param = _param
+        self.size = _size
 
     def getTransformedImage(self, img):
 
@@ -23,6 +33,20 @@ class Transformation():
             n_components = self.param
             data = reconstruction.fast_ica(img, n_components)
 
+        if self.transformation == 'min_diff_filter':
+            w_size, h_size = list(map(int, self.param.split(',')))
+            h, w = list(map(int, self.size.split(',')))
+
+            # bilateral with window of size (`w_size`, `h_size`)
+            lab_img = transform.get_LAB_L(img)
+
+            lab_img = Image.fromarray(lab_img)
+            lab_img.thumbnail((h, w))
+
+            diff_img = convolution.convolution2D(lab_img, kernels.min_bilateral_diff, (w_size, h_size))
+
+            data = np.array(diff_img*255, 'uint8')
+            
         if self.transformation == 'static':
             # static content, we keep input as it is
             data = img
@@ -45,6 +69,11 @@ class Transformation():
             n_components = self.param
             path = os.path.join(path, 'N' + str(n_components))
 
+        if self.transformation == 'min_diff_filter':
+            w_size, h_size = list(map(int, self.param.split(',')))
+            w, h = list(map(int, self.size.split(',')))
+            path = os.path.join(path, 'W_' + str(w_size)) + '_' + str(h_size) + '_S_' + str(w) + '_' + str(h)
+
         if self.transformation == 'static':
             # param contains image name to find for each scene
             path = self.param