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 

Matrixelemente auslesen



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!

19.02.2018, 12:02 (Dieser Beitrag wurde zuletzt bearbeitet: 19.02.2018 12:04 von AirRider.)
Beitrag #1

AirRider Offline
LVF-Neueinsteiger


Beiträge: 5
Registriert seit: Feb 2018

2017
-
DE


Deutschland
Matrixelemente auslesen
Hallo zusammen,

wie nicht anders zu erwarten, wenn ich hier schreibe, habe ich grade einen Hänger bei einem Projekt.

Grundbeschreibung:
Ich baue gerade einen SLA Drucker dessen Ansteuerung ich über LV verwirklichen will.
Für die einzelne Ebenen lese ich einzelne Bilder ein. Davon erstelle ich dann ein Graubild. Von diesem Graubild wird ein Binärbild erzeugt, wovon wiederum die Kontur bestimmt wird.

An diesem Punkt habe ich dann 2 2D Matrizen. Eine nur für die Kontur und eine für die restliche Fläche.

Nun zu meinem Problem:

Ich will nun die Koordinaten der einzelnen Pixel in ein 2*x Array auslesen, um somit meinen Laser ansteuern zu können. Dabei sind die beiden Spalten einmal die Spalten und einmal die Zeilen der beiden Binärbildmatrizen. In diesen 2*x Array will ich also die Koordinaten der jeweiligen high Pixel einlesen. Allerdings schein ich grade zu blöd um von den jeweiligen Pixeln die Spalte und Zeile auslesen zu können.

Die entsprechende Funktion befindet sich im Case 4 der Casestruktur.

Besten Dank schon mal im Vorraus
Beste Grüße
Patrick

P.S. leider hat meine Suche hier im Forrum in dieser Richtung nicht wirklich gefruchtet. Deswegen verzeiht bitte wenn ich ein dazupassendes Thema übesehen habe.


Angehängte Datei(en)
14.0 .vi  Funktionssammlung 4.vi (Größe: 372,2 KB / Downloads: 162)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
19.02.2018, 14:27
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.411
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Matrixelemente auslesen
Hallo Patrick,

Zitat:Ich will nun die Koordinaten der einzelnen Pixel in ein 2*x Array auslesen, um somit meinen Laser ansteuern zu können.
Es wäre schon mal hilfreich, wenn du von "Arrays" reden würdest, wenn du damit arbeitest - und nicht von "Matrizen"! Das ist in LabVIEW nämlich was anderes…

Ich habe mal ein Beispiel mit LV2017 gemacht, inkl. ConditionalTunnel und ConcatenatingTunnel:
   

Bei LV2014 nimmst du halt Case-Strukturen und BuildArray-Funktionen…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.02.2018, 11:49
Beitrag #3

AirRider Offline
LVF-Neueinsteiger


Beiträge: 5
Registriert seit: Feb 2018

2017
-
DE


Deutschland
RE: Matrixelemente auslesen
Hallo Gerd,

ich danke dir. Jetztb hab ich einen Ansatz wo ich weiter ansetzen kann. Smile
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
27.02.2018, 10:57 (Dieser Beitrag wurde zuletzt bearbeitet: 27.02.2018 10:59 von AirRider.)
Beitrag #4

AirRider Offline
LVF-Neueinsteiger


Beiträge: 5
Registriert seit: Feb 2018

2017
-
DE


Deutschland
RE: Matrixelemente auslesen
Hallo zusammen,

erstmal noch mals vielen Dank an dich Gerd. Deine Lösung hat mich bis kurz vor die Vollendung des Projekts gebracht. Big Grin

Nun steh ich grade vor einem (hoffentlich) kleinen Problemchen. Ich habe jetzt das eingelesene Bild in 2 1D Arrays aus Clusterelementen. Array für die Kontur und eines für die Fläche des zu druckenden Elements. Jedes Cluster besteht aus zwei Elementen. Einmal die Pixelkoordinate in X und einmal in Y.

Jetzt zum momentanen Problem. Das Cluster Array ist immer nach dem ersten Element, also der X Koordinate sortiert. Gibt es eine Möglichkeit die Cluster nach dem zweiten Element zu sortieren ohne, dass ich die beiden Elemente tausche?

Und noch eine Frage. Gibt es eine schnellere Möglichkeit Daten an meine NI USB 6001 Karte zu schicken als das DAQmx Schreiben VI? Nach einigen Tests hab ich hier meinen aktuellen Flaschenhals, was die Geschwindigkeit angeht gefunden. Leider können die Daten nicht so schnell übergeben werden.

beste Grüße
Patrick


Angehängte Datei(en)
14.0 .vi  Funktionssammlung 26 02 2018 Labeled XY.vi (Größe: 229,48 KB / Downloads: 126)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
27.02.2018, 11:06 (Dieser Beitrag wurde zuletzt bearbeitet: 27.02.2018 11:11 von GerdW.)
Beitrag #5

GerdW Offline
______________
LVF-Team

Beiträge: 17.411
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Matrixelemente auslesen
Hallo AirRaider,

Zitat:Gibt es eine Möglichkeit die Cluster nach dem zweiten Element zu sortieren ohne, dass ich die beiden Elemente tausche?
Wenn du mit der Funktion SortArray arbeitest, dann wird ein Array of clusters immer die Reihenfolge der Elemente im Cluster beachten. Wenn du nach dem zweiten Element sortieren willst, musst du den Cluster selbst umsortieren…

Zitat:Gibt es eine schnellere Möglichkeit Daten an meine NI USB 6001 Karte zu schicken als das DAQmx Schreiben VI? Nach einigen Tests hab ich hier meinen aktuellen Flaschenhals, was die Geschwindigkeit angeht gefunden. Leider können die Daten nicht so schnell übergeben werden.
Nein: das Problem ist aber auch nicht DAQmxWrite!
Das Problem ist vielmehr, dass du in der Schleife andauernd einen Task anlegst, kurz beschreibst und gleich wieder löschst. Warum machst du so etwas? Wird das in den BeispielVIs genau so gezeigt?
Und warum überhaupt zwei Tasks für zwei Kanäle? Warum nicht nur ein Task?

Zu deinem VI:
- Warum verwendest du eine WHILE-Loop für den Druckvorgang? Warum nicht einfach eine autoindizierende FOR-Loop? Viel weniger Overhead beim Array-Handling! (Und weniger Fehler: was passiert wohl, wenn das Array in der letzten Iteration schon leer ist?)
- Beim "Arrays auslesen" brauchst du nichts an den "N"-Eingängen der FOR-Loops anschließen: AUTOINDIZIERUNG!

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.02.2018, 13:02 (Dieser Beitrag wurde zuletzt bearbeitet: 28.02.2018 13:03 von AirRider.)
Beitrag #6

AirRider Offline
LVF-Neueinsteiger


Beiträge: 5
Registriert seit: Feb 2018

2017
-
DE


Deutschland
RE: Matrixelemente auslesen
Hallo Gerd,

zuerst noch mal vielen Dank. Du hast mir wieder sehr weiter geholfen.
Ich sehe gerade ich hatte es bisher noch nicht erwähnt, aber dies ist das erste wirklich ausführliche Projekt, welches ich erstelle. Und ich bin mir ziemlich sicher, dass andere hier nicht wirklich von einem großen Projekt sprechen würden.

Zitat:Wenn du nach dem zweiten Element sortieren willst, musst du den Cluster selbst umsortieren…
Das hatte ich schon versucht, aber dann hatte es mir die Werte dann vertauscht. Habe jetzt nochmal etwas Anderes versucht und jetzt macht es was es soll.

Zitat:Nein: das Problem ist aber auch nicht DAQmxWrite!
Das Problem ist vielmehr, dass du in der Schleife andauernd einen Task anlegst, kurz beschreibst und gleich wieder löschst. Warum machst du so etwas? Wird das in den BeispielVIs genau so gezeigt?
Wie schon gesagt, hatte ich einige Tests bezüglich der Geschwindigkeit gemacht. Darunter war auch, dass ich alles aus der Schleife rausgenommen hatte außer DAQmxWrite. Dies hatte eine kaum merkliche Wirkung.
Warum ich das so mache? Ich habe bisher noch nie ein so ausführliches Projekt mit LabVIEW verwirklicht und hatte ein VI von einem ehemaligen Komolitonen zur Verfügung, auf das ich was den DAQ teil angeht aufgebaut habe.


Zitat:Und warum überhaupt zwei Tasks für zwei Kanäle? Warum nicht nur ein Task?
Zwei Tasks hatte ich deswegen eingebaut, weil ich übersehen hatte, dass ich in dem Dropdown über "suchen" beide Ausgänge anwählen kann. Blush


Zum Thema Autoindizierung:
Davon hatte ich in deiner Antwort leider zum ersten Mal gehört. Jetzt ist der ganze Auslese- und Druckvorgang sehr viel einfacher und übersichtlicher geworden danke dir Big Grin

Da jetzt erstmal wieder alles tut bedanke ich mich nochmals für die Hilfe und versuche mich dann jetzt erstmal wieder selbst.

Beste Grüße
Patrick
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
16.03.2018, 13:41
Beitrag #7

AirRider Offline
LVF-Neueinsteiger


Beiträge: 5
Registriert seit: Feb 2018

2017
-
DE


Deutschland
RE: Matrixelemente auslesen
Hallo zusammen,

Ich habe das Programm nun nochmal ein wenig abgeändert und es funktioniert nun fast einwandfrei. Die Hauptänderung besteht darin, dass ich die Bestimmung des Konturarrays so angepasst habe, dass die Anordnung der einzelnen Koordinaten nun via Kettencode sortiert wird und der Laser ohne Sprünge einmal die Kontur abfährt. Das Problem welches ich jetzt noch habe besteht darin, dass in manchen Fällen nun vom Programm die Konturlinie genommen wird und davon dann quasi die Äußere und die innere Kante im Array ausgegeben wird. Ich hab dazu mal zwei Bilder zur Verdeutlichung in angehängt.

Weiß da eventuell jemand woran es liegen könnte?

vielen Dank schon mal im Vorraus
beste Grüße
Patrick


Angehängte Datei(en) Thumbnail(s)
       

14.0 .vi  Funktionssammlung 14 03 2018.vi (Größe: 534,01 KB / Downloads: 134)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Matrixelemente mittels Variable eingeben? derTetris 15 9.181 29.03.2007 13:37
Letzter Beitrag: derTetris

Gehe zu: