![]() |
.NET Reference, Invoke Node - Wie damit umgehen - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +--- Thema: .NET Reference, Invoke Node - Wie damit umgehen (/Thread-NET-Reference-Invoke-Node-Wie-damit-umgehen) |
.NET Reference, Invoke Node - Wie damit umgehen - thz89 - 07.08.2017 14:10 Hi, ich habe leider wieder eine Frage, für deren Beantwortung ich viel zu wenig Programmierer bin, um sie mir selber zusammen zu reimen. Ich greife mit den Hersteller VIs ein Live-Bild einer IDS Kamera ab und betreibe ein bisschen Bildanalyse und Bildverarbeitung. Dazu habe ich die Bildausgabe des IDS-VI angezapft und meine Funktionen zwischen Bildausgabe und letzter IDS-Funktion gehängt. Das funktioniert grundsätzlich sehr gut, aber um die Analyse zu verbessern, will ich nun über N Bilder mitteln. Das funktioniert an dem Ort an dem ich meinen Kram im IDS-VI mache aber nicht, weil ich immer nur genau ein Bild von der Kamera übermittelt bekomme, mit dem ich dann Unfug treiben kann. [attachment=58103] Mein Ansatz wäre jetzt, dass ich das Averaging-VI (VI siehe Anhang) auflöse und die for-Schleife um die "Memory Invoke-Node" oder sogar um die "Camera Invoke-Node" lege. Aus ersterer wird das u8Image ausgegeben und ich vermute, dass ich hier die Möglichkeit habe, mir die gewünschten N Bilder in die Zwischenablage zu speichern. Ich weiß allerdings nicht was es mit den Invoke-Nodes und der .NET-Reference auf sich hat (hab nur ein bissl gegooglet und eine kurze Zusammenfassung von Microsoft gelesen), ob ich richtig mit meinem Ansatz liege, und on-top, ob ich noch irgend etwas beachten muss. Vielleicht kann mir hier jemand helfen? RE: .NET Reference, Invoke Node - Wie damit umgehen - GerdW - 07.08.2017 14:21 Hallo thz, Zitat:Mein Ansatz wäre jetzt, dass ich das Averaging-VI (VI siehe Anhang) auflöse und die for-Schleife um die "Memory Invoke-Node" oder sogar um die "Camera Invoke-Node" lege.Mein Ansatz wäre, in diesem Averaging-VI etwas sinnvolles zu machen! Momentan gibt man hier ein (in Worten: 1) Bild hinein und die Angabe, wieviele Bilder gemittelt werden sollen. Im VI wird dann dieses eine Bild x-mal aufaddiert und dann durch "x" geteilt - wo ist der Sinn dabei? Zitat:Aus ersterer wird das u8Image ausgegeben und ich vermute, dass ich hier die Möglichkeit habe, mir die gewünschten N Bilder in die Zwischenablage zu speichern.Da scheint das Bild herauszukommen. Du musst nur ein sinnvolles Averaging-VI verwenden, um über mehrere Bilder zu mitteln… RE: .NET Reference, Invoke Node - Wie damit umgehen - thz89 - 07.08.2017 16:05 Hi Gerd, danke. Ja, da hast du recht; und ich einen Denkfehler. ![]() Ich bin ursprünglich davon ausgegangen, dass die for-Schleife für jede Iteration ein neues Bild abfragt, was sie aber natürlich nicht macht - sie arbeitet ja erstmal alle Eingangsdaten ab, bevor sie von vorne beginnt. Damit muss ich vor der Mittelung erstmal N Bilder ansammeln und zwischenspeichern. Spontan würde ich sagen, dass ich das auch in einer Schleife mache, aber hier habe ich ja wieder das Problem, dass ich nicht alle N Bilder auf einen Satz in die Schleife schieben kann. lg, Thorsten (07.08.2017 14:21 )GerdW schrieb: Hallo thz, RE: .NET Reference, Invoke Node - Wie damit umgehen - jg - 07.08.2017 16:48 Du musst nicht unbedingt alle Bilder erst sammeln. Das hängt von der Art deiner Mittelung ab. Bsp.: Beim klassischen Mittelwert ist es egal, ob du über ALLE Datenpunkte mittelst, oder erst über jeweils gleich große Datenpakete mittelst, und davon nochmals einen Mittelwert bildest. Oder anders: Code: (a+b+c+d)/4 = [ (a+b)/2 + (c+d)/2 ] / 2 Gruß, Jens RE: .NET Reference, Invoke Node - Wie damit umgehen - thz89 - 08.08.2017 11:56 Aber wie bekomme ich denn aufeinanderfolgende Bilder in LabVIEW miteinander verrechnet? Ich kann natürlich jedes Bild des Video-Signals mit dem Mittelungsfaktor gewichten, aber wenn ich dann aufsummieren will, brauche ich ja auch wieder N zwischengespeicherte Bilder/Arrays; als Input habe ich aber immer nur ein einziges Bild. RE: .NET Reference, Invoke Node - Wie damit umgehen - GerdW - 08.08.2017 12:03 Hallo thz, um sich Daten zu merken gibt es Schieberegister/FeedbackNodes! Die muss man nur sinnvoll im subVI einsetzen… ![]() RE: .NET Reference, Invoke Node - Wie damit umgehen - thz89 - 09.08.2017 08:39 Also ich schätze, ich habe jetzt den Ort gefunden, an dem ich das Shieberegister setzen muss. Und zwar auf die äußerste While-Schleife des Kamera-Programms, die mir aus einem Bild ein Video macht. |