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 

Pixelanzahl in Graustufenbild 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!

13.09.2010, 13:26 (Dieser Beitrag wurde zuletzt bearbeitet: 13.09.2010 13:29 von jg.)
Beitrag #1

Mister Wong Offline
LVF-Neueinsteiger


Beiträge: 5
Registriert seit: Sep 2010

2009
-
de


Deutschland
Pixelanzahl in Graustufenbild bestimmen
Hallo liebe LV-Gemeinde,

seit geraumer Zeit plage ich mich mit dem Versuch herum, die Pixelanzahl eines Graustufenbildes zu bestimmen, nur leider ohne Erfolg und mit viel Frust und daher hoffe ich dass ihr mir vielleicht helfen könnt.

Ich will ein VI erstellen, dass ein Graustufenbild (8 bit=255 Werte, normalerweise 640 * 480 Pixel) von der Festplatte lädt und dann von jedem einzelnen Pixel den Grauwert bestimmt. Am Ende möchte ich die Grauwerte aller Pixel aufsummieren und auf dem Bildschirm als Zahl angeben.

Das Bild einlesen klappt, auch konnte ich die Pixelwerte in ein Array übergeben und z.B. in einer Excel-Tabelle ausgeben und ansehen um zu verifizieren dass soweit alles funktioniert hat.

Nun hänge ich jedoch bei der Aufgabe, die Werte aus dem Array korrekt zu lesen/sortieren und dann aufzusummieren. Mein zugegebenermaßen geringes LabVIEW Wissen scheitert jedes Mal an diesem Punkt.

Ich habe schon versucht mit dem Block "Add Array Elements" die Zellen zu addieren, jedoch stimmt das Ergebnis nicht (wäre wohl zu einfach). -> siehe angefügtes VI

Ich habe auch schon versucht, dass Array mit mehreren unterschiedlichen Array-Blöcken zu be-/verarbeiten, jedoch bekomme ich immer falsche Ergebnisse heraus.
Es ist auch merkwürdig, dass sobald die Summe die Zahl 255 übersteigt, LabVIEW wieder von null anfängt zu zählen, obwohl ich doch einen U64-Zahlentyp benutze (oder woher kommt das Problem?)

Könnt ihr mir mit dem Array helfen? Ich verzeifel so langsam daran, wäre also dankbar für eure Hilfe.

Gruß

Lv09_img2


Angehängte Datei(en)
Sonstige .vi  Pixel_z_hlen.vi (Größe: 42,06 KB / Downloads: 219)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
13.09.2010, 13:56
Beitrag #2

SeBa Offline
LVF-Guru
*****


Beiträge: 2.025
Registriert seit: Oct 2008

09SP1 & 10 FDS
2008
DE

65xxx
Deutschland
Pixelanzahl in Graustufenbild bestimmen
Hab leider kein Vision...

...aber ich würd es so machen:

   
   

Gruß SeBa


PS:
evtl. nach Vision verschieben...

Dieser Beitrag soll weder nützlich, informativ noch lesbar sein.

Er erhebt lediglich den Anspruch dort wo er ungenau ist, wenigstens eindeutig ungenau zu sein.
In Fällen größerer Abweichungen ist es immer der Leser, der sich geirrt hat.

Rette einen Baum!
Diesen Beitrag nur ausdrucken, wenn unbedingt nötig!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
13.09.2010, 14:30
Beitrag #3

Mister Wong Offline
LVF-Neueinsteiger


Beiträge: 5
Registriert seit: Sep 2010

2009
-
de


Deutschland
Pixelanzahl in Graustufenbild bestimmen
Vielen Dank Seba,

es hat völlig genügt nur die U64 Umwandlung zu machen, die ganzen Sachen mit den Arrays sind dabei völlig überflüssig. Vielen Dank, hätte ich bloß früher gefragt, hätte ich mir 3 Tage Arbeit erspartSmile
Nur noch eine Frage, was macht denn die U64 Umwandlung und warum bricht er sonst bei 255 ab obwohl ich es mit U64 anzeige?

Danke nochmalWink
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
13.09.2010, 14:51 (Dieser Beitrag wurde zuletzt bearbeitet: 13.09.2010 14:52 von GerdW.)
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 17.430
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
Pixelanzahl in Graustufenbild bestimmen
Hallo Mr. Wong,

"was macht denn die U64 Umwandlung und warum bricht er sonst bei 255 ab obwohl ich es mit U64 anzeige?"
Überlege doch mal kurz, wieviele U8-Werte du (durchschnittlich) aufsummieren kannst, bevor du den Wertebereich eines U8 überschreitest! Und dann stelle dir obige Frage nochmal...Smile

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

Mister Wong Offline
LVF-Neueinsteiger


Beiträge: 5
Registriert seit: Sep 2010

2009
-
de


Deutschland
Pixelanzahl in Graustufenbild bestimmen
Hi GerdW,

du hast vollkommen recht, es bringt mir ja nichts die Werte mit U64 anzuzeigen wenn ich sie davor nur als U8 zulasse, daher muss ich natürlich auch die Umwandlung machen. Entschuldigung für die dumme Frage.

Bei genauerem Überlegen fällt mir auch auf, dass meine Methode mit der Grautwertpixelzählung ziemlich sinnlos ist, da ich eigentlich zwei Grauwertbilder anhand ihrer Pixel vergleichen wollte.

Daher sollte ich besser die Grauwertdifferenz jedes einzelnen Pixels zweier Bilder bestimmen, beziehungsweise deren Betrag.
Daher funktioniert die Methode mit der einfachen Summierung des Arrays natürlich nicht mehr.

Ich habe jetzt versucht, die beiden Bilder von einander zu "subtrahieren" und dann die Grauwertgesamtpixel zu berechnen, dies würde auch soweit funktionieren falls jedes Pixel bei Bild 1 immer einen mindestens gleich großen bzw. größeren Grauwert als das korrespondierende Pixel bei Bild 2 hätte sofern ich die Subtraktion Bild 1 - Bild 2 vornehme.

Hat jedoch z.B. ein gewisses Pixel in Bild 1 den Grauwert 54, das zugehörige Pixel in Bild 2 jedoch den Grauwert 55, so erhalte ich als Ergebnis 255 was natürlich total falsch ist um mir mein gesamtes Ergebnis verfälscht. Richtigerweise sollte in diesem Fall das Ergebnis 1 (also der Betrag) sein um ein korrektes Pixelergebnis zu erhalten.

Ich fürchte jetzt komme ich nicht um die Array-Aufsplittung bzw. Zerlegung rum, oder?
Hat jemand ne Idee wie ich das bewerkstelligen könnte? Kann mir jemand Tipps geben bzw. mir unter die Arme greifen?

Vielen Dank im Voraus,

Gruß Mister Wong
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
13.09.2010, 15:12
Beitrag #6

GerdW Offline
______________
LVF-Team

Beiträge: 17.430
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
Pixelanzahl in Graustufenbild bestimmen
Hallo Mr. Wong,

einfach das Ergebnis der Subtraktion nach I8 wandeln...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
13.09.2010, 15:30 (Dieser Beitrag wurde zuletzt bearbeitet: 13.09.2010 15:36 von Mister Wong.)
Beitrag #7

Mister Wong Offline
LVF-Neueinsteiger


Beiträge: 5
Registriert seit: Sep 2010

2009
-
de


Deutschland
Pixelanzahl in Graustufenbild bestimmen
Danke GerdW für die ultraschnelle Antwort,

ich werds gleich probieren. Das mit der Typenumwandlung scheint sehr praktisch in LabVIEW zu sein, so hab ich das noch nie betrachtet.

So, ich habs probiert, funktioniert ja super. LabVIEW ist echt stark wenn man es richtig beherrscht.

Es ist mir ein wenig peinlich nochmal ne ne Frage zu stellen, aber wenn ich jetzt noch daran interessiert wäre nicht nur die Pixelfehlerdifferenz zu bestimmen sondern auch generell die Anzahl der Pixel, deren Werte unterschiedlich sind, funktioniert das auch so einfach oder müsste ich da nun wirklich zu Arrays greifen?

Viele Grüße

Mister Wong
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
13.09.2010, 16:41
Beitrag #8

GerdW Offline
______________
LVF-Team

Beiträge: 17.430
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
Pixelanzahl in Graustufenbild bestimmen
Hallo MrWong,

Ungleich, Bool nach 1/0, nach U32, SumArray...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.09.2010, 07:30
Beitrag #9

Mister Wong Offline
LVF-Neueinsteiger


Beiträge: 5
Registriert seit: Sep 2010

2009
-
de


Deutschland
Pixelanzahl in Graustufenbild bestimmen
Hallo GerdW,

danke für den Tipp mit der Pixelanzahl, das funktioniert super.

Allerdings klappt die Bestimmung der Pixelfehlerdifferenz so wie du es vorgeschlagen hast nicht völlig korrekt.
Ich hab nach der Subtraktion und nach der Konvertierung in I8 Werte im Bereich von -127 bis +127.
Danach muss man noch den Betrag nehmen um nur positive Zahlen zu erhalten, sonst bekäme ich ein falsches Ergebnis.
Außerdem muss man glaube ich danach wieder z.b. in U64 wandeln um einen genügend großen Zahlenbereich für die Berechnung der Pixelfehlerdifferenz zu erhalten. Wenn man danach die Summe bildet scheint das Ergebnis richtig zu sein.

Allerdings gibt es einen kritischen Punkt. Wenn der Grauwertunterschied zweier Pixel exakt 128 beträgt erhält man durch die Konvertierung in U32/U64 komplett falsche Werte. Dazu muss man jedoch sagen dass es ziemlich unwahrscheinlich ist, dass bei zwei ähnlichen Bildern es einen so enormen Unterschied in den Grauwerten zweier Pixel gibt.

Vielen Dank nochmal !

Gruß

Mister Wong
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Gehe zu: