So nochmal von vorn:
Von der Kamera bekomme ich das Bild als byte-Array. IGrabResult ist ein Interface von der Kamera-DLL, das die Bilder hält.
byte[] grabResult = IGrabResult.PixelData as byte[];
grabResult ist ein 1920 * 1200 großes Array mit den Graustufen-Werten (8-Bit).
Jetzt erzeuge ich ein 3x so langes Array für 24-Bit RGB und ersetze den jeweiligen Grün- bzw. Blau-Wert durch den Graustufen-Wert aus dem alten Array.
byte[] RGB = new byte[1920 * 1200 * 3];
int StartIndex = 0;
// für Grün
for (int Index = 1; Index < RGB.Length; Index += 3)
{
RGB[Index] = grabResult[StartIndex];
StartIndex++;
}
// für Blau
for (int Index = 2; Index < RGB.Length; Index += 3)
{
RGB[Index] = grabResult[StartIndex];
StartIndex++;
}
Da diese Schleife knapp 7 Mio durchlaufen werden muss, 10 Bilder pro Sekunde von der Kamera gegrabbt werden und der Zielrechner ein relativ langsamer Atom ist, dauert der Vorgang des künstlichen Einfärbens halt sehr lange.
Gibt es Möglichkeiten diesen Vorgang zu beschleunigen?