From 60d355fed70d3e20f9fe33a550dc2a21eb6905af Mon Sep 17 00:00:00 2001
From: Dimitri Tayo Fongang Wembe <dimitri.wembe.tayo@fau.de>
Date: Wed, 7 Jun 2023 10:56:56 +0200
Subject: [PATCH] complete funktions for mcut

---
 mcut.py | 35 +++++++++++++++++++++++++++++++++--
 1 file changed, 33 insertions(+), 2 deletions(-)

diff --git a/mcut.py b/mcut.py
index a592722..f4d34b5 100644
--- a/mcut.py
+++ b/mcut.py
@@ -25,7 +25,16 @@ def cut_dimension(bbox):
             number 0 stands for red, 1 stands for green, and 2 stands for blue.
             In case of a draw, the smaller value has to be returned.
     """
-    pass # TODO
+    # TODO
+    differences = []
+    for component in bbox:
+        difference = component[1] - component[0]
+        differences.append(difference)
+
+    max_difference = max(differences)
+    longest_side_index = differences.index(max_difference)
+    return longest_side_index
+
 
 
 def recursive_median_cut(pixels, N, bbox=False):
@@ -54,7 +63,29 @@ def recursive_median_cut(pixels, N, bbox=False):
     if N == 0:
         (ravg, gavg, bavg) = imgutils.color_average(pixels)
         return [(ravg, gavg, bavg, pixel[3], pixel[4]) for pixel in pixels]
-    pass # TODO
+    # TODO
+    if bbox:
+        longest_side = cut_dimension(bbox)
+    else:
+        bbox = imgutils.bounding_box(pixels)
+        longest_side = cut_dimension(bbox)
+
+
+    # Sortiere die Pixel basierend auf der längsten Seite
+    sorted_pixels = sorted(pixels, key=lambda pixel: pixel[longest_side])
+
+    # Teile die sortierten Pixel in zwei Hälften
+    half = len(sorted_pixels) // 2
+    first_half = sorted_pixels[:half]
+    second_half = sorted_pixels[half:]
+
+    # Rufe den Median Cut-Algorithmus rekursiv für beide Hälften auf
+    first_half = recursive_median_cut(first_half, N-1, False)
+    second_half = recursive_median_cut(second_half, N-1, False)
+
+    # Füge die beiden Hälften wieder zusammen
+    result = first_half + second_half
+    return result
 
 
 def median_cut(image, ncuts=8):
-- 
GitLab