INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Dieses Thema hat akzeptierte Lösungen:

Mittels Color Threshold verschiedene Phase detektieren



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

08.08.2012, 10:08
Beitrag #1

Teala Offline
LVF-Neueinsteiger


Beiträge: 8
Registriert seit: Mar 2012

Fall 2011
2011
EN


Oesterreich
Mittels Color Threshold verschiedene Phase detektieren
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.
lv11_img mi SP1 mit NI Vision Modul
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
08.08.2012, 12:08 (Dieser Beitrag wurde zuletzt bearbeitet: 08.08.2012 12:09 von GerdW.)
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.470
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Mittels Color Threshold verschiedene Phase detektieren
Hallo Birgit,

Zitat:Also ich brauche einen "Zwischenspeicher" für meine IMAQ Referenzen von vorherigen Event Case Berechnungen.
Das Stichwort lautet "shift register" oder "feedback node". Da dir das nicht bekannt ist, möchte ich gern auf die LabVEW-Einsteigerkurse verweisen, siehe Link in der Signatur...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.08.2012, 07:06
Beitrag #3

Teala Offline
LVF-Neueinsteiger


Beiträge: 8
Registriert seit: Mar 2012

Fall 2011
2011
EN


Oesterreich
RE: Mittels Color Threshold verschiedene Phase detektieren

Akzeptierte Lösung

Hallo Gerd,

vielen Dank für deinen Tipp, haben das gleich mal angewendet. Fühlbar ist es nicht schneller geworden, aber
brauchen kann ich es auf jeden Fall *gg*. Tja shift register gabs halt in Turbo Pascal noch nicht...

Bin nun dabei das Programm zu "teilen" und einen Teil der Rechnenoperationen auszulagern, damit geht
es um einiges schneller die Thresholdseinstellungen sichtbar zu machen. Partikelfilter und Erode/Dilate
werden auf Buttonklick angewendet.



Gruß
Birgit
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Threshold im OCR-Setup gesperrt Armin_S. 0 4.311 05.12.2014 16:54
Letzter Beitrag: Armin_S.
  Threshold liefert nur schwarzes Bild LabVIEW86 4 5.338 04.05.2011 08:22
Letzter Beitrag: LabVIEW86
  Histogramm & Threshold von einem Bild ialocin82 8 9.813 29.10.2010 11:49
Letzter Beitrag: unicorn
  Image - FFT - view Radius & Phase - back 2 Image gottfried 1 5.973 05.07.2010 07:17
Letzter Beitrag: kaiman
  (Color) Pattern Matching: Auflösung des Templates relevant (un/gerade)?? Niemand 0 4.397 25.12.2007 09:33
Letzter Beitrag: Niemand
  Verschiedene LED's erkennen Fireblade79 8 6.608 13.10.2006 20:29
Letzter Beitrag: Fireblade79

Gehe zu: