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:

Farbmittelwert aus einem Bild herrauslesen



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!

13.12.2018, 14:28
Beitrag #1

ManfredMustermann Offline
LVF-Neueinsteiger


Beiträge: 4
Registriert seit: Dec 2018

17
-
DE



Farbmittelwert aus einem Bild herrauslesen
Hallo miteinander,

ich soll für ein Projekt Bilder miteinander vergleichen, arbeite aber zum ersten Mal mit LABView. Die Bilder sind Schwarz/Weiß (grau) und einige sind etwas dunkler als Andere.
Ein Bild kann ja beispielsweise mit dem Befehl "JPEG-Datei lesen" in ein Nicht-Numerischen-Cluster zerlegt werden und dann mit dem Befehl "1D-Pixmap nach 2D" in ein 2D-Array umgewandelt werden.
Somit werden ja die 3 RGB Werte im 2D-Array gespeichert, oder?
{{0, 0, 0} //für Schwarz und, {255, 255, 255} //für Weiß und natürlich die Grausstufen dazwischen}

Jetzt schon mal meine erste Frage: Wie werden diese Werte im Array gespeichert? Als Dezimalzahlen oder als Hexadezimalzahlen? Der Befehl "1D-Pixmap nach 2D" gibt mir ja ein Numerischen Wert aus, somit sollte es ja eigentlich die Dezimalzahlen sein, oder habe ich hier etwas falsch verstenden?

Mich interessieren natürlich auch nicht die 3 Werte sondern, da die Bilder eh nur Schwarz/Weiß sind, ein zusammengefasster Wert (z.B. 127 für Grau) Wie kann ich das bewerkstellingen?

Ich habe auch schon versucht das 2D-Array mit der Funktion "Array umformen" in ein 1D-Array umzuwandeln, aber dann wird der Summenwert aus dem Array = 0 womit auch immer der Mittelwert 0 wird. Wo ist hier mein Denkfehler? Beim umwandeln

Im Anhang habe ich ein Bild des Blockdiagramms und 2 Testbilder eines in Halb Schwarz und Halb Weis und eines im Grauton der RGB Farben 127. Ziel ist, das beide Bilder den Selben Wert ergeben.

Danke schon mal im Voraus


Angehängte Datei(en) Thumbnail(s)
           
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
13.12.2018, 16:10 (Dieser Beitrag wurde zuletzt bearbeitet: 13.12.2018 16:22 von GerdW.)
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 15.829
Registriert seit: May 2009

09SP1, 11SP1, 17 (18)
1995
DE_EN

10×××
Deutschland
RE: Farbmittelwert aus einem Bild herrauslesen

Akzeptierte Lösung

Hallo Manfred,

herzlich willkommen im Forum!

Zitat:arbeite aber zum ersten Mal mit LABView
Was man an der Schreibweise von LabVIEW (!) merkt… Big Grin
Schau mal in meine Signatur!

Zitat:Wie werden diese Werte im Array gespeichert?
RGB, je ein Byte…

Als Dezimalzahlen oder als Hexadezimalzahlen?
Wo ist der Unterschied? Zahl ist Zahl!
Du bekommst ein U8-Array…

Zitat:Der Befehl "1D-Pixmap nach 2D" gibt mir ja ein Numerischen Wert aus, somit sollte es ja eigentlich die Dezimalzahlen sein, oder habe ich hier etwas falsch verstenden?
Du bekommst ein U8-Array mit den Pixelwerten.
Es sind eben U8-Werte, ob du sie nun als Dezimal- oder auch Hex-, Binär- oder Oktalzahl anzeigen lässt, bleibt dir überlassen…

Zitat:da die Bilder eh nur Schwarz/Weiß sind, ein zusammengefasster Wert (z.B. 127 für Grau) Wie kann ich das bewerkstellingen?
Du könntest die 3 RGB-Werte mitteln. Es gibt aber auch andere Methoden, einen Grauwert zu bestimmen.
Literaturstudium oder Wikipedia helfen da weiter…

Zitat:Ziel ist, das beide Bilder den Selben Wert ergeben.
Wenn das Ziel ist, immer den gleichen Wert auszugeben, solltest du eine Konstante verwenden! Big Grin
Wie wäre es, statt einer Konstante "16384" einfach mal immer die korrekte Anzahl an Pixeln zu verwenden?^

Außerdem:
   
- Wenn du ein 24bit-Bild einliest, solltest du auch dessen Bilddaten verwenden…
- Ich habe hier nur das LSB ( wie Byte) verwendet, da du ja Graustufenbilder benutzt…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.12.2018, 11:29 (Dieser Beitrag wurde zuletzt bearbeitet: 14.12.2018 13:53 von ManfredMustermann.)
Beitrag #3

ManfredMustermann Offline
LVF-Neueinsteiger


Beiträge: 4
Registriert seit: Dec 2018

17
-
DE



RE: Farbmittelwert aus einem Bild herrauslesen
Hallo GerdW,

schon mal ein riesiges Danke, dass du dir die Mühe gemacht hast! Das VI funktioniert super! Ich hätte allerdings noch ein paar Fragen!

Zitat:Wie wäre es, statt einer Konstante "16384" einfach mal immer die korrekte Anzahl an Pixeln zu verwenden?^
Die Bilder haben eine Abmessung von 128 x 128 Pixel, macht zusammen 16384. Ich dachte dies müsse die Größe des Arrays sein? Aber egal, brauche ich ja nicht.

Das VI von dir funktioniert zwar, aber ich kann es nicht ganz nachvollziehen. Vllt kannst du mir ein paar Sachen erklären, da ich es gern verstehen möchte:

Du benutzt hier zweimal hintereinander die "Zahl teilen"-Funktion (ich werde auch aus der Hilfe von LabVIEW nicht schlau) und benutzt weiter den lo(x) (numerisch niedrigstwertiges Byte). Was genau macht diese Funktion? Und warum zweimal hintereinander? Mittelst du damit die RGB Werte?
Diese Frage hat sich erledigt, durch etwas "rumspielen" habe ich jetzt verstanden, was die "Zahl teilen"-Funktion bewirkt.
Aber warum benutzt du 2 mal den lo(x) Ausgang? Somit musst du doch die Funktion 2 mal verwenden, anstatt nur einmal den hi(x) Ausgang? Dadurch kann man eine der beiden Funktionen sparen, habe ich jetzt mitbekommen.

Außerdem benutzt du dann die Funktion "Matrixgröße" und multiplizierst dann Zeilen- und Spaltenzahl, macht soweit Sinn um die gesamte Größe der Matrix (Array?) zu ermitteln. Wieso funktioniert die Funktion "Array-Größe" in diesem Fall nicht? Du verwendest ja auch für den Dividend des Mittelwertes die Funktion "Array-Elemente addieren".

Danke schon mal im Vorraus
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.12.2018, 18:10 (Dieser Beitrag wurde zuletzt bearbeitet: 15.12.2018 18:14 von GerdW.)
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 15.829
Registriert seit: May 2009

09SP1, 11SP1, 17 (18)
1995
DE_EN

10×××
Deutschland
RE: Farbmittelwert aus einem Bild herrauslesen
Hallo Manfred,

Zitat:Die Bilder haben eine Abmessung von 128 x 128 Pixel, macht zusammen 16384.
Momentan haben sie vielleicht diese Größe, in Zukunft dann vielleicht nicht mehr. Und dann viel Spaß beim Debuggen…
Warum also nicht so programmieren, dass man aus seinen VIs nicht auch gut modularisierbare Funktionen machen kann?

Zitat:Aber warum benutzt du 2 mal den lo(x) Ausgang?
Weil ich das niederwertigste Byte aus deinem U32 haben will.
Dazu muss ich das U32 zweimal teilen.
Andere Alternative wäre ein AND mit 0x000000FF…

Zitat:Somit musst du doch die Funktion 2 mal verwenden, anstatt nur einmal den hi(x) Ausgang? Dadurch kann man eine der beiden Funktionen sparen, habe ich jetzt mitbekommen.
Der "hi(x)"-Ausgang liefert dir meist einen Wert nach dem Schema 00XX (Hex-Schreibweise, XX für beliebige Werte) - muss das aber nicht immer tun: LabVIEW verwendet für bestimmte Farbwerte auch das oberste Byte…

Zitat:Außerdem benutzt du dann die Funktion "Matrixgröße" und multiplizierst dann Zeilen- und Spaltenzahl, macht soweit Sinn um die gesamte Größe der Matrix (Array?) zu ermitteln.
Man kann Matrix-Funktionen auch auf 2D-Arrays anwenden, so wie diese. Der Vorteil ist hier, dass man manchmal beide Werte einzeln benötigt und so auch gleich bekommt. Bei ArraySize müsste man dan erst wieder IndexArray verwenden.

Zitat:Wieso funktioniert die Funktion "Array-Größe" in diesem Fall nicht?
Die würde ebenso funktionieren. Niemand hat was anderes behauptet…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.12.2018, 15:50
Beitrag #5

ManfredMustermann Offline
LVF-Neueinsteiger


Beiträge: 4
Registriert seit: Dec 2018

17
-
DE



RE: Farbmittelwert aus einem Bild herrauslesen
Nochmal Danke für deine Antwort GerdW,

Zitat:
Zitat:Außerdem benutzt du dann die Funktion "Matrixgröße" und multiplizierst dann Zeilen- und Spaltenzahl, macht soweit Sinn um die gesamte Größe der Matrix (Array?) zu ermitteln.
Man kann Matrix-Funktionen auch auf 2D-Arrays anwenden, so wie diese. Der Vorteil ist hier, dass man manchmal beide Werte einzeln benötigt und so auch gleich bekommt. Bei ArraySize müsste man dan erst wieder IndexArray verwenden.

Sorry, das ist mir zu hoch... Ich habe das gerade probiert und bekomme jetzt jedes mal unterschiedliche Werte... Nach "Array-Größe" habe ich die Funktion "Array indizieren" angehängt und je nachdem welche Konstante ich für den Index eingebe bekomme ich andere Werte?


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.12.2018, 16:10
Beitrag #6

GerdW Offline
______________
LVF-Team

Beiträge: 15.829
Registriert seit: May 2009

09SP1, 11SP1, 17 (18)
1995
DE_EN

10×××
Deutschland
RE: Farbmittelwert aus einem Bild herrauslesen
Hallo Manfred,

Zitat:Sorry, das ist mir zu hoch... Ich habe das gerade probiert und bekomme jetzt jedes mal unterschiedliche Werte... Nach "Array-Größe" habe ich die Funktion "Array indizieren" angehängt und je nachdem welche Konstante ich für den Index eingebe bekomme ich andere Werte?
Ein 2D-Array hat zwei Dimensionen, ArraySize liefert also ein Array mit 2 Elementen (Anzahl Zeilen, Spalten).
Wenn du jetzt den Index am IndexArray änderst, bekommst du einmal die Spaltenzahl, und einmal die Zeilenzahl: wie bei MatrixSize eben auch…

Bei mehrdimensionalen Arrays liefert ArraySize dann eben Arrays mit noch mehr als 2 Elementen.

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
19.12.2018, 10:40
Beitrag #7

ManfredMustermann Offline
LVF-Neueinsteiger


Beiträge: 4
Registriert seit: Dec 2018

17
-
DE



RE: Farbmittelwert aus einem Bild herrauslesen
Hallo GerdW,

ja, habe es jetzt auch hinbekommen. Die beiden Elemente muss ich dann miteinander multiplizieren, das hatte mir noch gefehlt...

Danke nochmal, werde nach Silvester wahrscheinlich noch ein paar Fragen haben, aber die sind dann ein anderes Thema...
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
  Bild mit Koordinaten in Picture zeichnen oder Bild an Bild zeichnen Planich 4 4.296 26.10.2012 10:14
Letzter Beitrag: Planich
  Zwei Graphiken in einem 2-D Bild ohne Flackern ausgeben toifl1987 8 3.350 28.02.2011 11:30
Letzter Beitrag: toifl1987

Gehe zu: