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 

Falschfarbenbild erstellen mit DLL und NiVision (Grau->Farbe)



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!

28.08.2008, 12:39 (Dieser Beitrag wurde zuletzt bearbeitet: 28.08.2008 14:14 von jg.)
Beitrag #1

p3t3rpoe Offline
LVF-Neueinsteiger


Beiträge: 7
Registriert seit: Aug 2008

8.2
2008
de

23564
Deutschland
Falschfarbenbild erstellen mit DLL und NiVision (Grau->Farbe)
Hallo,

ich mache gerade ein Praktikum in einer Firma und soll ein Graubild farbig einfärben.
Mit LabVIEW wird das bisher schon gemacht, es dauert aber einfach zu lange!
Da ich (noch) informatik studiere und mit LabVIEW bisher noch nie gearbeitet habe, habe ich kurzerhand eine DLL in C
geschrieben, die von einem IMAQ (Bild) einen Speicherbereich bekommt und dann dort die Werte hineinschreibt.

Für einfaches Rot-Färben sieht dass dann so aus:
(Format des Bildes ist -RBG)
"niImage" ist dabei der besagte Speicherbereich

DLL_API void getSketchyRedImage(const float *const floatArray) {
uint32_t pixelIndex=0;
uint32_t value;
//für alle Pixel des Bildes
for (pixelIndex=0; pixelIndex<(image_height*image_width); pixelIndex++) {
//schiebe 'Wert einfach in Blauwert (RGB)
niImage[pixelIndex] = ((uint32_t) floatArray[pixelIndex])<<16;
}
}

[COMPILER ist Intel 10.2 mit allen Optimierungen, auch unpräzise floats erlaubt]

Soweit sehr einfacher Code, der auch nur für Werte des floatArrays zwischen 0 und 255 funktioniert (was auch gegeben ist).
Das Bild wird mit einem 'Image Display' dargestellt.

In der Hauptschleife des LabVIEW-Programms steht NUR der obige Code als DLL (     ),
bzw. der Intensitätsgraph (     )
(Anschlüsse davor irrelevant und der Übersichtlichkeit halber entfernt.
Andere Elemente dienen der Zeitmessung und dem Terminieren nach 10000 Durchläufen).
Will ich 10.000 Bilder mit 128kB einfärben, so dauert das 12 Sekunden.
Nehme ich einfach einen Intensitätsgraph, so dauert das nur ca. 2 Sekunden.

Woher kommt also die schlechte Leistung?
Dauert die Anzeige mit dem Image-Display so viel länger?
Ist die Anbindung an C so schlecht?
(Beide Anzeigen sind asynchron, Fehlererkennung ist bei der DLL unterdrückt)

Wenn wer ne Idee hat, oder spekulieren will, 'bescheid' sagen!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Nachrichten in diesem Thema
Falschfarbenbild erstellen mit DLL und NiVision (Grau->Farbe) - p3t3rpoe - 28.08.2008 12:39

Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Numeric Control nach Case deaktivieren und grau sanjo 2 5.713 26.04.2012 11:50
Letzter Beitrag: sanjo

Gehe zu: