LabVIEWForum.de
Array Elementweise einlesen und mittels Schwellwert ändern - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Array Elementweise einlesen und mittels Schwellwert ändern (/Thread-Array-Elementweise-einlesen-und-mittels-Schwellwert-aendern)



Array Elementweise einlesen und mittels Schwellwert ändern - DaniusM - 28.07.2015 11:40

Hallo zusammen,

ich habe ein Problem:

Ich habe ein Graustufenbild 2688x1520 in ein 2D Array gewandelt und möchte nun jedes Element prüfen, ob der Grauwert >230 ist und wenn ja ein Binär-Array erzeugen.
Anbei mein Aufbau. Allerdings hab ich das Problem, dass mein Ausgangsarray immer leer (0) ist

Kann mir jemand helfen, bzw den Fehler entdecken?
Danke vorab, Grüße.


RE: Array Elementweise einlesen und mittels Schwellwert ändern - GerdW - 28.07.2015 11:50

Hallo Danius,

was immer hilft, ist ein VI statt eines Bildes anzuhängen.
Und was auch immer hilft, ist einmal Ctrl-U zu drücken, bevor man ein Bild oder VI hochlädt…

Wieso wird dein 2D-Array mit den Bilddaten in ein 3D-Array umgewandelt?
Warum nutzt du nicht einfach die Autoindizierung, um die Pixel auszulesen?
Warum nutzt du nicht einfach die Autoindizierung, um dein boolsches Array zu erstellen?
Warum nutzt du ReplaceArraySubset ohne Schieberegister? THINK DATAFLOW!
Warum nutzt du nicht einfach Polymorphie, um die Graustufe zu testen?
Kurz: Was soll diese riesige FOR-Loop bewirken?

[attachment=53715]

Edit: Herzlich wollkommen! Big Grin


RE: Array Elementweise einlesen und mittels Schwellwert ändern - jg - 28.07.2015 11:51

Es ist schwierig, in einem Array der Größe 0x0x0 ein Element zu ersetzen. Sad

Gruß, Jens

EDIT: Korrektur: Größe 1x0x0x0 ... Hilfe, ein 4D-Array, wozu meinst du, dass du das brauchst?


RE: Array Elementweise einlesen und mittels Schwellwert ändern - Trinitatis - 28.07.2015 11:51

Polymorphie ist das Stichwort Smile


Gruß, Marko
Verdammt!
gleich 2 mal zu spät.


RE: Array Elementweise einlesen und mittels Schwellwert ändern - DaniusM - 29.07.2015 06:29

Hallo zusammen,

danke für die Antworten, passt jetzt soweit.

Ich möchte jetzt noch die >230 Pixel in dem entstandenen Binär Array zählen.

Ich habe eine True-case Struktur in die Schleife genommen und wollte darin bei jeder 1 inkrementieren, allerdings erhöht sich mein Inkrement bei mehr als 2 oder mehr aufeinanderfolgenden 1en nicht.

Habt ihr eine Idee?

Kann leider kein VI hochladen, da LV auf einem anderen Rechner läuft und der unten im Labor ist.

Danke.


RE: Array Elementweise einlesen und mittels Schwellwert ändern - jg - 29.07.2015 07:05

Glas1 Weil du kein Schieberegister verwendest? Think Dataflow!

Gruß, Jens


RE: Array Elementweise einlesen und mittels Schwellwert ändern - GerdW - 29.07.2015 07:36

Hallo Danius,

Zitat:Ich möchte jetzt noch die >230 Pixel in dem entstandenen Binär Array zählen.
Das kann man Element für Element auszählen.
Man kann aber auch das boolsche Array per "boolean to 0/1" in Zahlen umwandlen und einfach mit der Summenfunktion zusammenaddieren.
(Angesichts deiner Arraygröße würde ich zeilenweises konvertieren und summieren vorschlagen.)

So:
[attachment=53725]

Ansonsten: Jens' Hinweis beachten und LabVIEW lernen. Sowas wird in den Einsteigerkursen erläutert!


RE: Array Elementweise einlesen und mittels Schwellwert ändern - ThomasS. - 05.01.2016 11:06

Hallo Zusammen,

Mein Name ist Thomas und bin neu was die Programmierung mit LabVIEW angeht.


Zu meinem Problem. Ich muss ebenfalls Bilder auswerten. Die Anzahl der Bilder variiert dabei je nach Aufnahme. Das Einlesen der Bilder und das auslesen der Pixel habe ich auch schon geschafft.

Ich möchte, dass jedes 2D Array was entsteht untersucht wird, ob es einen Wert über 120 beinhalten, wenn nicht, dann wird das Array gelöscht und wenn es einen Wert enthält soll das Array weitergegeben werden. Ich habe hier das Problem, dass er mit bei der Case-Struktur einen Fehler ausgibt. Mit ist siweit bewusst, das der Vergleich auch ein 2D Array ausgibt, jedoch habe ich keine Lösung wie ich das machen kann.

Sie haben zwei Elemente unterschiedlichen Typs miteinander verbunden einmal ein 2D array und boolean.

Im Anhang ist einmal das Block-Diagramm und einmal ein Struktogramm, damit ihr wirklich wisst, was ich meine.

Ich hoffe ihr könnt mir helfen Smile


RE: Array Elementweise einlesen und mittels Schwellwert ändern - GerdW - 05.01.2016 11:23

Hallo Thomas,

herzlich willkommen im LabVIEW-Forum!

Zitat:Sie haben zwei Elemente unterschiedlichen Typs miteinander verbunden einmal ein 2D array und boolean.
Es gibt da Funktionen wie "OR array elements", die in solchen Fällen hilfreich sind.
Oder man macht einen Rechtsklick auf die Vergleichsfunktion und ändert den Vergleichsmodus! Steht auch in der LabVIEW-Hilfe zur Vergleichsfunktion

Zitat:einmal ein Struktogramm, damit ihr wirklich wisst, was ich meine.
Zur Umsetzung dieses Struktogramms: Du löscht zwar das Array, aber du ignorierst es nicht. (THINK DATAFLOW!)


RE: Array Elementweise einlesen und mittels Schwellwert ändern - ThomasS. - 05.01.2016 11:32

Hallo Gerd,

vielen Dank für die schnelle Antwort. Es hat geklappt! Also nochmal ein dickes Danke.

Bezüglich des Strucktogramms: Da auch nochmal ein Danke. Ich habe das sofort geändert.

Gruß,

Thomas