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:

Wellenlängen eines Bildes bestimmen



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!

10.08.2015, 10:54
Beitrag #1

UnterBerg Offline
LVF-Neueinsteiger


Beiträge: 5
Registriert seit: Aug 2015

2014
2015
EN



Wellenlängen eines Bildes bestimmen
Hallo,

ich möchte mit einer USB-Webcam Bilder aufnehmen und diese auswerten.
Neben einem Histographen hätte ich gerne auch einen Graphen mit Wellenlänge/Intensität oder Wellenlänge/Pixelanzahl.

Mein Problem liegt darin, dass ich die Wellenlängen nicht bestimmen kann.
Hat jemand eine Idee oder gibt es überhaupt eine Möglichkeit die Wellenlängen zu erhalten??

Habe im Netz eine Tabelle mit RGB-Codes und den dazugehörenden Wellenlängen gefunden.
Eventuell könnte LabVIEW diese Werte für die jeweiligen RGB-Codes nehmen und so einen Graphen formen.
Leider fehlt mir da das nötige Wissen.

Ich nutze LabVIEW2014 mit Vision.

Vielen Dank

Grüße


Angehängte Datei(en)
0.0 .txt  wellenlänge123.txt (Größe: 18,04 KB / Downloads: 311)

14.0 .vi  Kamera.vi (Größe: 44,22 KB / Downloads: 270)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
10.08.2015, 12:13
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.411
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Wellenlängen eines Bildes bestimmen
Hallo Unterberg,

Zitat:Habe im Netz eine Tabelle mit RGB-Codes und den dazugehörenden Wellenlängen gefunden.
Du hast also ein Array mit RGB-Werten. Und eine Tabelle, die dir sagt, welcher RGB-Wert zu welcher Wellenlänge führt.
Du musst also nur schauen, welcher RGB-Wert in dieser Tabelle deinem aktuellen Messwert am nächsten kommt und die zugehörige Wellenlänge ausgeben…

Fragen/Hinweise zum VI:
Wieso nutzt du TransposeMatrix, wenn du eigentlich TransposeArray machen willst?
Es ist keine gute Idee, in einer Eventstruktur mit "default if unwired"-Tunneln zu arbeiten, jedenfalls bei Referenzen…
Ab und zu Ctrl-U schadet nicht…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.08.2015, 12:38
Beitrag #3

b.p Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 197
Registriert seit: Oct 2010

2009-14
-
DE_EN


Sonstige
RE: Wellenlängen eines Bildes bestimmen

Akzeptierte Lösung

Die Konvertierung von Wellenlaenge zu RGB ist nicht wirklich möglich (Wellenlänge impliziert monochromatisches Licht, denk mal an grau, violett etc.).
Wenn ich eine einigermassen korrekte Messung durchführen wollte, würde ich vermutlich die Spektralantwort des Kamerasensors anschauen müssen und mit dem RGB-Gewichtungswerten durchrechnen - bei einer USB-Webcam mit entsprechender Fertigungsqualität macht so was aber vermutlich keinen Sinn.

Eine Lookup-Table, so wie du sie in deinem Anhang hast, könnte dir aber zumindest eine Idee geben. Die Lookup-Table, die du hast, ist aber ziemlich schwach. Wenn du nur die RGB-Werte eines Bildes nehmen würdest, und suchen, und dann statistisch aufaddieren, dann würdest du vor allem eine grosse Häufung bei "nicht gefunden" finden.
Einfach mal so interpolieren ist auch nicht... wir haben RGB Werte.. also müsstest du in Komponenten zerlegen und gewichten, um irgendwas wie eine Approximation hinzukriegen. Also ja, man kann technisch daraus was machen, aber es geht auch leichter.

Ich würde gleich auf das HSL Farbmodell übergehen. Aus dem Hue Value so grob eine Wellenlänge errechnen und dann anzeigen lassen. Ich hab jetzt mal die erste Formel dafür verwendet, die ich im Web gefunden hab. Wie gesagt, das ist Blödsinn für violett etc, aber vermutlich trotzdem das, wonach du suchst.

VG
Birgit


Angehängte Datei(en) Thumbnail(s)
       

14.0 .vi  colorspectrum.vi (Größe: 67,3 KB / Downloads: 269)

14.0 .ctl  colorspectrum.ctl (Größe: 28,4 KB / Downloads: 289)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.08.2015, 16:24
Beitrag #4

UnterBerg Offline
LVF-Neueinsteiger


Beiträge: 5
Registriert seit: Aug 2015

2014
2015
EN



RE: Wellenlängen eines Bildes bestimmen
Vielen Dank Birgit! Genau das habe ich gesucht.

@Gerd Ich bin noch ein Neuling in Sachen LV und meistens zufrieden wenn es läuft.
Danke für die Hinweise. Ctrl-U kannte ich noch gar nicht...

Grüße
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
13.08.2015, 14:03
Beitrag #5

nurso Offline
LVF-Grünschnabel
*


Beiträge: 19
Registriert seit: Dec 2010

20xx, 8.x
2010
DE_EN


Deutschland
RE: Wellenlängen eines Bildes bestimmen
Interessantes Thema. Wäre schön, wenn dieser Thread noch eine Weile am Leben bleibt und ihr noch weitere Ergebnisse hochladet!

Birgit hat schon einige der Schwachstellen und Herausforderungen richtig benannt. Denke aber, dass sich der Ansatz doch durch unterschiedliche Maßnahmen (Hardware/Software) verfeinern lässt... Damit meine ich nicht den Kauf eines Monochromators Flop

So kann man z.B. Wellenlängen, die nur Fehler zu den theoretischen Werte der LookUp-Tabelle beitragen, mit optischen Filtern entgegentreten.

Wenn ich etwas mehr Zeit habe, werde ich mich gern etwas tiefer damit beschäftigen.


nurso Wink


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

b.p Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 197
Registriert seit: Oct 2010

2009-14
-
DE_EN


Sonstige
RE: Wellenlängen eines Bildes bestimmen
Ich glaub, ich würd erst mal eine Farbkarte kaufen, und schauen, was ich da messe.

-----------------------------

Nun, ich hätte da so ein Interferometer oder zwei im Labor stehen, die würden da durchaus als sehr teuere Monochromatoren durchgehen ;-)

Hmmmm... gute Lichtquelle (Lampe aus dem Kinobereich! Kinobranche hat echt manchmal interessante Spielsachen), mit Prisma zerlegen (Prisma in einen Halter spannen, mit kleinem Piezo neigen), auf die Probe richten, Reflektion anschauen? Müsste das mal selber mal mit unseren Optikern diskutieren, klingt nach einem netten Feierabendprojektchen :-)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
14.08.2015, 10:48
Beitrag #7

UnterBerg Offline
LVF-Neueinsteiger


Beiträge: 5
Registriert seit: Aug 2015

2014
2015
EN



RE: Wellenlängen eines Bildes bestimmen
Hallo,

ich bin doch noch auf einige Probleme gestoßen.

Die Bilder meiner Proben zeigen Interferenz bzw. Beugungsmuster von Gitterstrukturen, die ich untereinander vergleichen möchte.
Es sind noch störende Reflexionen enthalten und die Qualität der Bilder ist generell noch gering,
allerdings sieht man, dass ein Großteil der Bilder schwarz ist.

Wenn Schwarz wie auch Rot einen Hue=0 hat, dann spuckt er mir eine Wellenlänge von 650nm raus.
Ist es möglich die Schwarzanteile im Bild zu entfernen?

Eventuell könnte man es mit ROI machen und so nur das Farbmuster auswählen.
Habe im Example-Finder ein Beispiel rausgesucht, aber man muss die Koordinaten des Rechtecks per Hand eingeben.
Beim Vergleichen der Bilder käme es dann aber zu ungenauen Ergebnissen, weil die Position der Muster von Probe zu Probe nie exakt gleich ist.

Gruß


Angehängte Datei(en) Thumbnail(s)
       

14.0 .vi  ROI extract.vi (Größe: 42,39 KB / Downloads: 235)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.08.2015, 13:26 (Dieser Beitrag wurde zuletzt bearbeitet: 14.08.2015 13:33 von b.p.)
Beitrag #8

b.p Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 197
Registriert seit: Oct 2010

2009-14
-
DE_EN


Sonstige
RE: Wellenlängen eines Bildes bestimmen
Hallo,

ROI ist ein bisschen schwierig, weil vordefinierte ROI ja immer Polygone oder Kreise oder so Kram sind. Man kann halt ein Binärbild nehmen, und dann mit MaskToROI sich was definieren lassen, aber ich glaub nicht, das es nötig ist.
Ich würde das Bild erst mal thresholden, zB in der Luminance Plane. Alle Koordinaten, die da einen zu kleinen Wert haben (also defakto schwarz sind) auf beliebige Weise nicht beruecksichtigen. Oder Color Thresholding, das müsste hier auch reichen. Entweder im Histogram rauskicken, oder (das ist die Variante für Faule Blush), erst durch Farbe 1 ersetzen, bereits bekannte Analyse machen, dann durch Farbe 2 ersetzen, bereits bekannte Analyse machen, und dann aus dem Ergebnis den Einfluss von Schwarz finden.

Viele Grüsse,
Birgit

Edit: es geht auch theoretisch mit 1 Farbe, aber .. wenn du zB mit Rot 1 ersetzt und ein Teil deines nicht-tiefschwarzen Schwarzes hat genau diesen Hue Wert, dann kriegst du den nicht raus.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30.08.2015, 17:01
Beitrag #9

UnterBerg Offline
LVF-Neueinsteiger


Beiträge: 5
Registriert seit: Aug 2015

2014
2015
EN



RE: Wellenlängen eines Bildes bestimmen
Hallo,

mit den Threshold kam ich nicht weiter, allerdings habe ich einen RBGtoLambda Code gefunden.
http://codingmess.blogspot.de/2010/02/tr...ength.html

1)
Der Code ist in Python geschrieben, aber habe ihn in LV einsetzen können.
Allerdings kann ich keine Arrays einfügen bzw. nicht die Werte für R,G und B.
Die Werte sind nicht als Array definiert, aber bin zu unerfahren, um das passend zu machen.
Jemand einen Vorschlag?

2)
Ich möchte in einem weiteren Schritt zwei Bildarrays auf Gleichheit prüfen.
Es soll ein prozentualer Wert ausgespuckt werden.
Bisher habe ich das mit einem Mean-Wert der Arrays gemacht.
Habe aber das Gefühl, dass die Ergebnisse eher ungenau sind.

Gruß


Angehängte Datei(en) Thumbnail(s)
   

14.0 .vi  RGBtoWavelength.vi (Größe: 11,89 KB / Downloads: 233)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30.08.2015, 17:38 (Dieser Beitrag wurde zuletzt bearbeitet: 30.08.2015 17:39 von GerdW.)
Beitrag #10

GerdW Offline
______________
LVF-Team

Beiträge: 17.411
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Wellenlängen eines Bildes bestimmen
Hallo Underberg,

wenn man Arrays verarbeiten will, aber nur eine Funktion für skalare Inputs hat, kann man doch so gut wie immer mit einer autoindizierenden FOR-Loop um diese Funktion herum arbeiten…

Außerdem könnte dein Python-Code in LabVIEW so aussehen:
   
(Ich habe nur den Case für "highind==1" implementiert, der Rest ist aber analog zum gezeigten und damit trivial… Big Grin)

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
  Kann man im VBAI auf Werte des vorherigen Bildes zugreifen? Christian.Schmitt 4 7.528 11.03.2015 14:00
Letzter Beitrag: ostone
  Vision Builder: Benennung des exportierten VI, camera handle, Spiegelung des Bildes S.D. 2 4.713 21.06.2013 10:36
Letzter Beitrag: S.D.
  Versuche das ROI zum Zentrum des Bildes zu verschieben Dimasq 2 3.900 10.03.2012 19:47
Letzter Beitrag: Dimasq
  Radius eines Kreises bestimmen Johannes T. 6 6.402 16.04.2010 21:49
Letzter Beitrag: Johannes T.
  Bittiefe eines Bildes gottfried 2 3.989 08.02.2009 11:29
Letzter Beitrag: gottfried

Gehe zu: