""" Abhängigkeiten: - cv2 (OpenCV-Paket) - numpy Autor: Roberto Gelsinger Datum: 07.12.2023 Version: Modulversion """ import cv2 import numpy as np def build_gaussian_pyramid(img, levels): """ Erstellt eine Gaußsche Pyramide für ein gegebenes Bild. Diese Funktion nimmt ein Bild und die gewünschte Anzahl von Ebenen und erstellt eine Gaußsche Pyramide. Eine Gaußsche Pyramide ist eine Sammlung von Bildern, die bei jeder Ebene halbiert werden. Args: img (ndarray): Das Eingabebild. levels (int): Die Anzahl der Ebenen in der Pyramide. Returns: list: Eine Liste von Bildern, die die Ebenen der Gaußschen Pyramide darstellen. """ float_img = np.ndarray(shape=img.shape, dtype="float") float_img[:] = img pyramid = [float_img] for i in range(levels-1): float_img = cv2.pyrDown(float_img) pyramid.append(float_img) return pyramid def build_video_pyramid(frames): """ Erstellt eine Video-Pyramide, indem für jeden Frame eine Laplace-Pyramide erstellt wird. Für jeden Frame des Eingabevideos wird eine Gaußsche Pyramide erstellt, und diese Pyramiden werden zu einer Video-Pyramide zusammengesetzt. Args: frames (list of ndarray): Eine Liste von Frames, die das Video darstellen. Returns: list: Eine Liste von Pyramiden, jede repräsentiert einen Level der Video-Pyramide. """ lap_video = [] for i, frame in enumerate(frames): pyramid = build_gaussian_pyramid(frame, 3) for j in range(3): if i == 0: lap_video.append(np.zeros((len(frames), pyramid[j].shape[0], pyramid[j].shape[1], 3))) lap_video[j][i] = pyramid[j] return lap_video