Hallo,
ich habe die Aufgabe bekommen ein Programm zu entwickeln um anhand eines *.tiff Bildes (aufgenommen von einem Mikroskop) verschiedene Phase zu ermitteln. Diese Phase
besitzen verschiedene Graustufen (hellgrau, dunkelgrau, mittelgrau, what ever). Diese "Graustufen" können sich je nach Lichtstärke der Mikroskoplampe ändern, deshalb muss der
spätere Benutzer diese anpassen können.
Ich habe nun ein weiteres Programm gemacht, indem dies möglich sein soll.
Programm-Ablauf:
Einlesen der Bilder - Einlesen des *.ini- Files mit den Thresholds (RGB, HSL) vorgefertigt - Weitergabe dieser Einstellungen an Schieberegler (für jede Phase 6 Schieberegler RGB HSL)
-Phase werden detektiert - Ausgabe durch IMAQ Image für jede Phase
Nun soll der Benutzer selber die Schieberegler betätigen um die Thresholds zu verändern, habe das über Eventstrukturen gelöst (Wertänderung Schieberegler => neue Berechnung und Ausgabe
der Phase).
Das Programm funktioniert.
Nun das Große aber... für meinen Professor läuft das Programm zu langsam.
Er hat früher mit dem Color Threshold Example.vi (von der NI Homepage) gearbeitet. Da wird nur ein RGB und HSL Bild erstellt und mittels
Schieberegler verändert, also keine Phasen bestimmt (da steckt mit Partikelfilter, Erode/Dilate, etc.noch mehr Rechenleistung dahinter).
Das heißt dort war die Veränderung durch den Schieberegler sofort ersichtlich. Bei mir dauert es 2-3 Sekunden bis die Berechnung neu durchgeführt ist.
Leider darf ich das Programm in dem Sinne nicht vollständig posten (Projekt steht in Zusammenarbeit mit einer Firma und meiner Diss).
Ich versuche es vereinfacht zu erklären bzw. ein vereinfachtes Programm zu posten sollte es zu unverständlich sein.
so schaut das Frontpanel aus.
so ist die Grundstruktur des Programmaufbaues
in fast jedem Event Case wird die Berechnung durchgeführt (Schieberegler Änderung, NEXT Image Button, Timeout)
Im Endeffekt ändern sich aber nur die Schieberegler Werte für je eine Phase. 2 Phasen sind von der dritten äbhängig. Heißt
einmal brauch ich eine vollständige Berechnung, bei den anderen Phasen müssen nicht alle Berechnungen durchgeführt werden.
Ich brauche am meisten CPU-Leistung für IMAQ MultiColorThreshold und für den Partikelfilter.
Also nun die konkrete Frage: Wie muss ich das Programm umbauen, dh. die Phasenberechnung wohin verschieben, dass z.B. MultiColorThreshold
nur für eine Phase ausgeführt wird und für die anderen Phase die vorherige Berechnung vom 1. Timeout-Durchlauf verwendet werden?
Ich komme nicht darauf wo und wie ich die Referenz von IMAQ Image bei den zwischenstufen(nach Multicolor Threshold, nach Partikelfilter etc.) wieder aufrufen kann.
Also ich brauche einen "Zwischenspeicher" für meine IMAQ Referenzen von vorherigen Event Case Berechnungen.
Ich hoffe es versteht jemand das Problem und kann mir helfen.
Gruß
Birgit
ps. Arbeite erst seit ein paar Monaten mit Labview => bin Anfänger was diese Art der Programmierung angeht.
mi SP1 mit NI Vision Modul