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!
26.03.2012, 14:01 (Dieser Beitrag wurde zuletzt bearbeitet: 26.03.2012 14:02 von Mietzekatze.)
Kannst du mal ein Probebild oder so was hochladen?
Es gibt einige vis, die so was in die Richtung machen, aber dazu müsste ich wissen, was deine ominösen weißen Linien, etc sind..
So kann ich dir nur sagen: Linien als Array extrahieren, dann Max von Array (wenns sein muss interpolieren).
Gruß,
Birgit
mal ein einfacher Lösungsansatz: Blurring/Weichzeichnen und Umwandlung nach Schwarz/Weiß per Schwellwert. Zwei simple Verfahren aus der Bildbearbeitung...
Das würde aber dan wieder nur globale Maxima erfassen, brauche aber ein verfahren das die lokalen sucht, mache Punkte sind interessant auch wenn sie nicht so deutlich sind, nur weil sie umgeben von schwarzen Pixeln sind. Im Gegensatz sind einige sehr helle Punkte uninteressant, da neben diesesn noch viel Hellere liegen.
LG und Thx
28.03.2012, 08:56 (Dieser Beitrag wurde zuletzt bearbeitet: 28.03.2012 08:57 von GerdW.)
Zitat:mache Punkte sind interessant auch wenn sie nicht so deutlich sind
Dann solltest du "lokale Maxima" besser definieren!
Nach dem von mir genannten Ablauf erhälst du ein Bild mit mehreren weißen "Flecken". Du darfst jetzt noch die Position dieser "Flecken" bestimmen - ob die Größe der Flecken für dich interessant ist, kann ich nicht entscheiden. Ob/wieviele "kleinere" lokale Maxima in der Auswertung entscheiden, kannst du über den Weichzeichner-Radius und den "Grau nach BW"-Schwellwert selbst steuern!
Das Problem besteht einfach darin, dass es nicht einen Schwellwert gibt, welcher für das gesamte Bild entscheident ist, sondern, dieser Schwellwert eben eher der Anstieg zu den Nachbarpixeln darstellen soll.
Im Moment versuche ich das Bild in ein Array [Farbwert, x-Wert, y Wert] zu packen und dann jedes Pixel auf seine "Nachbaren" hin zuuntersuchen.
Vlt ist es auch besser das Bild in eine Matrix zu konvertieren Anzahl der Pixel ist gleich Anzahl der Zeilen und Spalten.
An der Stelle steht, dann halt der Farbwert.
Gibt es dafür schon eine Funktion?
LG
28.03.2012, 11:37 (Dieser Beitrag wurde zuletzt bearbeitet: 28.03.2012 11:39 von Hook1986.)
um aus einem Image ein Array zu bekommen gibt es die Funktion "Imaq Image to Array". Die findest du ganz einfach unter "Vision and Motion" -> "Vision Utilities" -> "Pixel Manipulation".
Dann bekommst du aus deinem Imaq Image eine Array, welches dir die Grauwerte von jedem Pixel beinhaltet.
Was sollst du denn eigentlich genau machen mit deinem Programm? Wie groß sollen denn deine lokalen Stellen sein? Könnte auch ein "Maximumfilter" (siehe Bildverarbeitung) hilfreich sein?
Danke für den Tip, ImagetoArray funktionierte nach ein paar Kompatibilitätsproblemen jetzt und somit kann ich ja ganz einfach in eine Matrix umwandeln.
Was meinst du mit Maximum filter, wo finde ich den in LV?
LG und Thx
(28.03.2012 09:03 )Mietzekatze schrieb: Das Problem besteht einfach darin, dass es nicht einen Schwellwert gibt, welcher für das gesamte Bild entscheident ist, sondern, dieser Schwellwert eben eher der Anstieg zu den Nachbarpixeln darstellen soll.
Im Moment versuche ich das Bild in ein Array [Farbwert, x-Wert, y Wert] zu packen und dann jedes Pixel auf seine "Nachbaren" hin zuuntersuchen.
Vlt ist es auch besser das Bild in eine Matrix zu konvertieren Anzahl der Pixel ist gleich Anzahl der Zeilen und Spalten.
An der Stelle steht, dann halt der Farbwert.
Gibt es dafür schon eine Funktion?
LG
Klingt mir irgendwie danach dass Du eigentlich die Ableitung der Intensität des Bildes haben willst. Das ist bei nicht verrauschten Bildern wohl die deutlichste Form um lokale Bildänderungen sichtbar zu machen. Also nicht lokale Maxima im Bild aber lokale Maxima der Ableitung des Bildes.
Bei Rauschen müsste man allenfalls den Pixelbereich um die Ableitung zu berechnen grösser machen.