12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- """
- 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
|