Hallo zusammen,
ich versuche gerade die Filteralgorithmen für die Bildverarbeitung ohne NI Vision Development Module zu implementieren. Leider komme ich nicht weiter.
Ich habe aus einem Bild Pixel-werte generiert und möchte jetzt gerne die Werte mit jeweils unterschiedlichen Filtern (Medianfilter,Mitelwert usw) verarbeiten.
Das Problem ist, dass LabView mir die vorgefertigten Filtern zur Verfügung stellt aber nur auf der Basis der Vision Module.
Question : wie kann die Filteralgorithmus implementieren, sodass ich auf die Vision Module verzichte und das Ergebnis auf das Bild anwenden kann?
Beispiel : Formel: t({n1,n2,...nk}) = n(k+1)/2
f1(k)=11,12,11,9,13,15,14
= 9,11,11,12,13,14,15
med{f1(k)} = 12
SW : Lv 2013 Sp1
Ich hoffe mich verständlich ausgedrückt zu haben und freue mich auf eure Antwort und Bemühung.
Mfg
(28.10.2014 17:54 )Ifnotdefine schrieb: [ -> ]...
Ich habe aus einem Bild Pixel-werte generiert und möchte jetzt gerne die Werte mit jeweils unterschiedlichen Filtern (Medianfilter,Mitelwert usw) verarbeiten.
Das Problem ist, dass LabView mir die vorgefertigten Filtern zur Verfügung stellt aber nur auf der Basis der Vision Module.
Question : wie kann die Filteralgorithmus implementieren, sodass ich auf die Vision Module verzichte und das Ergebnis auf das Bild anwenden kann?
Hallo,
QUESTION?!
Du bist ja lässig.
Aber zum eigentlichen Problem:
Wenn es dir schon gelungen ist, diskrete Werte aus deinem Bild zu extrahieren, dann kannst du diese Werte auch filtern, mitteln und sonst noch was. In der Palette Signalverarbeitung findest du jede Menge Funktionen / VIs dazu. GGf. musst du dein 2D-Array noch in ein 1D-Array wandeln, oder das ganze in einer Schleife abhandeln.
Gruß, Marko
Hey Marko,
danke für deine schnelle Antwort, ich hatte mir schon diese Filter in der Palette "Signalverarbeitung" angeschaut. Das Problem ist , dass im Code eine externe Bibliothek aufgerufen wird.
Daher kann ich genauer nicht nachvollziehen, wie es von Prinzip her funktioniert.
Im Anhang habe ich markiert, was ich oben beschrieben habe.
[
attachment=51203]
Vielleicht kann mir jemand Hinweise geben.
Danke euch
Gruß
Hallo If,
für solche Fälle gibt es die LabVIEW-Hilfe, die die meisten Funktionen doch ganz gut erläutert.
So z.B.:
[
attachment=51204]
Zitat:Problem ist , dass im Code eine externe Bibliothek aufgerufen wird.
Wieso ist das ein Problem für dich?
Und diese DLL gehört zu LabVIEW, ist also streng genommen keine "externe Bibliothek"…
Viele Signalverarbeitungs-VIs von NI verwenden die lvanlys.dll. Was darin bzw in den Funktionen der DLL genau passiert, wirste auch nicht rauskriegen.
Aber was ist das Problem daran?
Gruß; marko
Danke für die Antwort,
ich möchte sage ich mal aus einem 2D Array (bestehend aus 500Werte) ein 3x3 Filter(Mittelwertfilter) anwenden und das ganze das Array durchlaufen sowohl Richtung Spalten als auch Zeilen.
Wie kann ich das mit For-schleifen oder was anderes in LabView realisieren?
Danke für eure Antwort
Hallo,
mal etwas Pseudocode:
Code:
FOR x = 0 TO ArrayXSize-1
FOR y = 0 to ArrayYSize-1
get ArraySubset(x-1, 3, y-1, 3)
result = calc with 3×3-Filter-Array
ReplaceArraySubset(x,y, result)
NEXT y
NEXT x
Also wie in jeder anderen Programmiersprache auch…
Danke für die schnelle Antwort,
den Programmcode habe ich ja schon selber in text basierten Sprachen gemacht aber die Umsetzung mit LabView fällt mir schwer, habe eigentlich nicht viele Erfahrung mit LabView. Es wäre nett, wenn ich schon ein Beispiel hätte. Dann könnte ich zu meiner Anwendung anpassen.
Danke sehr
Hallo IfNot,
so in etwa:
[
attachment=51254]
Hier noch ohne Fehlerbehandlung (Randbetrachtung!). Den Rahmen "deine Rechnung" darfst du durch etwas sinnvolles ersetzen…
Sehrrrrrrr gut ,
vielen Dank GerdW