Skip to content
Snippets Groups Projects
Select Git revision
  • main
1 result

README.md

Blame
  • Strawberry Volumen Estimation

    Projektdetails

    • Titel des Projekts: Entwicklung und Evaluation einer innovativen Methode zur nicht invasiven Volumenabschätzung von Erdbeeren
    • Autorin / Erzeugerin: Julia Brüninghaus
    • Datum der letzten Änderung: 24.03.2025

    Inhaltsverzeichnis

    1. Beschreibung
    2. Installation
    3. Anwendung
    4. Erklärung
    5. Weitere Hinweise

    Beschreibung

    Das Projekt zielt darauf ab, das Volumen von Erdbeeren anhand von 3D-Punktwolken automatisiert zu ermitteln. Es werden Algorithmen zur Segmentierung, geometrischen Modellierung und Validierung der Ergebnisse eingesetzt. Die präzise Volumenbestimmung von Erdbeeren ist zentral für die Qualitätskontrolle und Optimierung von Ernteprozessen im vertical farming. Die Punktewolke muss möglichst nur die Erdbeere umfassen und die Längsachse der Erdbeeren muss der y-Achse entsprechen. Die Erdbeere muss ohne Verdeckungen als Punktewolke erfasst worden sein. Ausgelegt auf Python 3.12


    Installation

    #Am besten wird das Repository in 
    #Klonen des Repositories
    git clone https://git.rwth-aachen.de/julia.brueninghaus/strawberry_estimation.git
    
    #Installieren der nötigen Bibliotheken
    pip install -r /path/to/requirements.txt

    Anwendung

    Wenn alle benötigten Bibliotheken installiert sind, kann das Modul verwendet werden. Hier ist ein Beispiel für das einlesen und verarbeiten einer Punktewolke. Die Beispiel Punktewolke kann im Ordner Data gefunden werden.

    # Create an instance of Volumen_estimation with a specified point cloud file and number of disks
        pcl = Volumen_estimation(
            data_path=r"Data\S1_0_c_f.ply",
            n_disk=8
        )
    
        # Segment the point cloud into horizontal slices
        pcl.get_disks()
    
        # Fit superellipses to each disk
        pcl.fit_superellipses()
    
        # Optionally smooth the boundaries between disks
        pcl.smooth_results()
    
        # Compute the total volume
        pcl.volumen_strawberry()
    
        # Visualize the fitted results
        pcl.plot_ellipses()

    Erklärung

    SuperellipseFitter

    Die SuperellipseFitter-Klasse passt eine Menge von 2D-Punkten an ein Superellipse-Modell (Lamé-Kurve) an, indem sie einen nichtlinearen Kleinste-Quadrate-Optimierungsalgorithmus verwendet.

    Wichtige Attribute und Methoden

    • Attribute:

      • points – Die anzupassenden 2D-Punkte
      • initial_guess, lower_bounds, upper_bounds – Parameter für die Optimierung
      • parms – Die ermittelten Parameter [x₀, y₀, a, b, n, theta]
      • result – Das Ergebnis des Optimierungsverfahrens
    • Methoden:

      • superellipse_residuals(parms) – Berechnet den Abstand zwischen den Punkten und der Superellipse
      • fit() – Führt die Optimierung durch und passt die Superellipse an
      • get_area(parms) – Berechnet den Flächeninhalt der Superellipse anhand der Beta-Funktion

    VolumenEstimation

    Die Volumen_estimation-Klasse lädt und verarbeitet eine 3D-Punktwolke (z. B. einer Erdbeere), indem sie sie entlang der y-Achse in horizontale Scheiben („Disks“) unterteilt.
    Für jede Scheibe wird ein benutzerdefinierter SuperellipseFitter verwendet, um die unteren und oberen Grenzen anzupassen. Anschließend werden die Scheibenvolumina mithilfe einer approximierten Kegelstumpfformel berechnet und aufsummiert, um das Gesamtvolumen zu ermitteln.

    Wichtige Attribute und Methoden

    • Attribute:

      • data_path – Pfad zur .ply-Datei
      • n_disk – Anzahl der Scheiben
      • pcl und points – Geladene Punktwolke und deren Punkte
      • disks – Unterteilungen der Punktwolke
      • results – Ergebnisse der Superellipse-Anpassung
    • Methoden:

      • load_data(data_path) – Lädt die Punktwolke
      • get_disks() – Teilt die Punktwolke in Scheiben auf
      • fit_superellipses() – Passt pro Scheibe zwei Superellipsen an (untere und obere Grenze)
      • smooth_results() – Glättet die Übergänge zwischen benachbarten Scheiben
      • volumen_strawberry() – Summiert die Scheibenvolumina zum Gesamtvolumen
      • plot_ellipses() – Visualisiert die Rohdaten und die angepassten Superellipsen

    TestManager

    Das TestManager-Modul bietet ein umfassendes Werkzeug zur Qualitätsanalyse von Erdbeer-Punktwolken.
    Es umfasst die folgenden Schritte: Alle .ply-Dateien aus einem angegebenen Ordner werden geladen und vorverarbeitet. Dabei werden u. a. die Ausrichtung korrigiert (z. B. Vertauschung von y- und z-Koordinaten), die Punktwolken in Hälften, Viertel oder Sektoren aufgeteilt und rotiert, um die Daten zu standardisieren. Mit Hilfe eines benutzerdefinierten PointCloud-Moduls wird die Punktwolke in horizontale Scheiben unterteilt, an die jeweils Superellipsen angepasst werden. Die einzelnen Scheibenvolumina werden mit einer Frustum-ähnlichen Formel abgeschätzt, und es erfolgt eine Fehleranalyse (z. B. MSE, MAPE) im Vergleich zu bekannten Referenzwerten. Das Modul enthält Funktionen zur Visualisierung der transformierten und analysierten Punktwolken sowie zur Speicherung von Ergebnissen (z. B. als CSV-Dateien).

    Wichtige Attribute und Methoden

    • Attribute:

      • folder – Pfad zum Ordner mit Daten
      • files und path – Dateinamen und vollständige Pfade der .ply-Dateien
      • real_volumen – Referenzwerte zur Validierung
    • Methoden:

      • n_disk_test(n_disks, save_folder) – Berechnet das Volumen für verschiedene Scheibenanzahlen und speichert die Ergebnisse
      • volumen_test(save_folder, n) – Berechnet das Volumen für eine feste Scheibenanzahl
      • mse_error(calculated_volumen, real_data) und mape(calculated_volumen, real_data) – Berechnen Fehlerkennzahlen
      • plot_disk_test(disks, mse, mape) und plot_volumen_test(calculated_volumen) – Visualisieren die Ergebnisse

    Weitere Hinweise

    • Datenqualität:
      Die Punktwolke muss ausschließlich die Erdbeere umfassen und in der korrekten Ausrichtung (Längsachse entlang der y-Achse) vorliegen.

    • Softwareanforderungen:
      Erforderlich sind Python 3.12, Open3D, NumPy, scikit-learn und pandas.

    • Anwendungsbereich:
      Das System eignet sich zur automatisierten Qualitätskontrolle und Volumenbestimmung im Vertical Farming.