LabVIEWForum.de - Probleme bei der Veränderung von Pixelwerten

LabVIEWForum.de

Normale Version: Probleme bei der Veränderung von Pixelwerten
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen!

Ich möchte ein Programm erstellen welches die Kantenschärfe eines Bildes(8-Bit Graustufen) berechnet. Dafür lade ich das Bild zweifach ein, benutze einen Kantenerkennungsbaustein und überlagere beide Bilder, sodass ich die Kanten im Originalbild markiert habe. Im Bereich dieser Kanten muss ich nun weiter rechnen. Erst mal nebensächlich, aber damit ihr wisst worum es im Groben geht.
Nun zum Problem: Die Kanten werden durch Labview mit dem Pixelwert "0" markiert. Jedoch kommt es auch bei dem originalen Foto zum wert "0", also weiß ich nur doch die Aussage "pixelwert=0" nicht 100% ob sich da auch wirklich eine Kante befindet. Meine Idee war im originalbild alle Pixel die den Wert "0" haben um 1 zu erhöhen.

Ich hatte einmal die Idee das mit einem Vergleich und einer For-Schleife zu realisieren, nur leider scheitere ich da an den Boolean Arry das dich dann bildet...meine zweite Idee wäre in dem Arry jedes Pixel das den Wert 0 hat ersetzen.

Im Anhang ist der Screenshot mit dem Versuch der For-Schleife.

Vielen Dank fürs lesen schon mal

Mit freundlichen Grüßen

Josh

LV-2014 Sp1
Hallo Josh,

Zitat:Im Anhang ist der Screenshot mit dem Versuch der For-Schleife.
Echt? Wo?

- Wenn du einzelne Pixel testen willst, solltest du nicht mit einem 2D-Array vergleichen!
- Wenn du einzelne Pixel haben willst, solltest du ein 2D-Array mit zwei geschachtelten und autoindizierenden FOR-Loops bearbeiten.
- Wenn dir die einfache Lösung ausreicht, kannst du das komplette Array einfach "+1" rechnen…

Tipps:
- Es gibt eine fertige "+1"-Funktion.
- Es gibt ein AutoCleanup-Tool (Ctrl-U).
- Du kannst ein 2D-Array auch mit einer skalaren Null vergleichen, du musst nicht erst ein 2D-Array mit lauter Nullen erstellen.
(27.01.2016 16:22 )GerdW schrieb: [ -> ]- Wenn dir die einfache Lösung ausreicht, kannst du das komplette Array einfach "+1" rechnen…
Kleiner Schönheitsfehler: Alle "255" Werte bekommen dann zwecks U8-Bereich und Überlauf den Wert 0.

[attachment=55175]

Gruß, Jens
Hallo,

Mist, doch was übersehen… Big Grin

Denn eben so:
[attachment=55176]
FOR-Loops sind überbewertet… Big Grin

Oder so:
[attachment=55177]
Offtopic2
(27.01.2016 16:46 )GerdW schrieb: [ -> ]FOR-Loops sind überbewertet… Big Grin

Aha, und wie war das...

(27.01.2016 16:22 )GerdW schrieb: [ -> ]- Wenn du einzelne Pixel haben willst, solltest du ein 2D-Array mit zwei geschachtelten und autoindizierenden FOR-Loops bearbeiten.
Box Rofl

Nix für ungut, Jens
Hallo Jens,

Zitat:wie war das: "Wenn du einzelne Pixel haben willst, …"
Ich will keine einzelnen Pixel haben, der OP vielleicht schon…
Wink
Offtopic2
@Gerd:
Blush Ach so war das gemeint... Blush

Gruß, Jens
Vielen Dank für die vielen Tipps!
Ich werde die mal testen und gucken welche davon mich zum Ziel führt.
Mit der +1 Variante hab ichs Probiert aber dann hatte ich danach n schwarzes Bild und das war nicht sinn der Übung Big Grin

Ich brauch ja ein 2D-Arry da das bild ja ein eben solches ist und lieg ich da jetzt falsch?


Gruß, Josh
Hallo Josh,

Zitat:Ich brauch ja ein 2D-Arry da das bild ja ein eben solches ist und lieg ich da jetzt falsch?
Jein.
Die meisten Bildfunktionen erwarten Daten im 2D-Format: ein Bild ist eben meist zweidimensional.
Aber das heißt nicht, dass du die Daten deswegen zwingend in diesem Format bearbeiten musst. Manchmal kann es z.B. auch hilfreich sein, so ein Bild in ein 1D-Array zu "reshapen"…
Hello again!

Mit der Lösung von jg bin ich zu dem Ergebniss das ich mir gewünscht habe gekommen. Vielen Dank für eure Unterstützung.

P.S. das war ja gar kein Screenshot von meinem Versuch mit der For-Schleife Rolleyes sorry dafür!

Nun werd ich mich an die anderen Probleme die da Auftauchen kümmern Wink

Vielen Spaß und ein schönen Tag noch

Josh
Referenz-URLs