You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

pyramids.py 1.7KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. """
  2. Abhängigkeiten:
  3. - cv2 (OpenCV-Paket)
  4. - numpy
  5. Autor: Roberto Gelsinger
  6. Datum: 07.12.2023
  7. Version: Modulversion
  8. """
  9. import cv2
  10. import numpy as np
  11. def build_gaussian_pyramid(img, levels):
  12. """
  13. Erstellt eine Gaußsche Pyramide für ein gegebenes Bild.
  14. Diese Funktion nimmt ein Bild und die gewünschte Anzahl von Ebenen und erstellt eine Gaußsche Pyramide.
  15. Eine Gaußsche Pyramide ist eine Sammlung von Bildern, die bei jeder Ebene halbiert werden.
  16. Args:
  17. img (ndarray): Das Eingabebild.
  18. levels (int): Die Anzahl der Ebenen in der Pyramide.
  19. Returns:
  20. list: Eine Liste von Bildern, die die Ebenen der Gaußschen Pyramide darstellen.
  21. """
  22. float_img = np.ndarray(shape=img.shape, dtype="float")
  23. float_img[:] = img
  24. pyramid = [float_img]
  25. for i in range(levels-1):
  26. float_img = cv2.pyrDown(float_img)
  27. pyramid.append(float_img)
  28. return pyramid
  29. def build_video_pyramid(frames):
  30. """
  31. Erstellt eine Video-Pyramide, indem für jeden Frame eine Laplace-Pyramide erstellt wird.
  32. Für jeden Frame des Eingabevideos wird eine Gaußsche Pyramide erstellt, und diese Pyramiden werden
  33. zu einer Video-Pyramide zusammengesetzt.
  34. Args:
  35. frames (list of ndarray): Eine Liste von Frames, die das Video darstellen.
  36. Returns:
  37. list: Eine Liste von Pyramiden, jede repräsentiert einen Level der Video-Pyramide.
  38. """
  39. lap_video = []
  40. for i, frame in enumerate(frames):
  41. pyramid = build_gaussian_pyramid(frame, 3)
  42. for j in range(3):
  43. if i == 0:
  44. lap_video.append(np.zeros((len(frames), pyramid[j].shape[0], pyramid[j].shape[1], 3)))
  45. lap_video[j][i] = pyramid[j]
  46. return lap_video