2016-06-29 16 views
4

Mein aktueller Arbeitsablauf umfasst den Umgang mit 8-Bit-Auflösungsdaten, die im 16-Bit-Format und im 64-Bit-Format geschrieben wurden. Zum Beispiel:Arbeiten mit 14-Bit-Daten in Python

b = np.fromfile(file, dtype='uint8') 
data1 = b[:2].view(np.int16) 
data2 = b[2:10].view(np.int64) 
# alternative: struct.unpack 

Ich habe gerade 14-Bit-Auflösung Daten - was ein entsprechender ähnlicher Ansatz wäre, diese Daten zu laden, da es keine 14-Bit-Typen stehen zur Verfügung?


bearbeiten: in den Kommentaren beantwortet - Danke honza_p.

Lesen Sie sie als 16-Bit und verschieben Sie 2 Bits.

+3

Sind die gespeicherten Daten wirklich mit 14 Bits pro Element gepackt? Unabhängig von der 14-Bit-Auflösung würde ich erwarten, dass sie im 16-Bit-Format gespeichert werden. Zumindest war dies der Fall, als wir 14-Bit-Daten hatten. –

+0

Ich bin mir nicht sicher, wie sie tatsächlich gespeichert werden. Also hast du sie als 16bit geladen und sie als 16bit oder verworfene/verschobene 2 Bits verarbeitet? Und diese 2 zusätzlichen Bits sind normalerweise Teil des nächsten Datenpunkts oder einfach nur Müll? –

+1

Ich würde davon ausgehen, dass sie 0 sein werden. Versuchen Sie, die Daten als 16bit zu laden, und Sie werden sehen, ob das, was Sie bekommen sinnvoll (vielleicht Vielfache von 4s oder Werte im Bereich von 0..16383) –

Antwort

0

Hinzufügen als eine Antwort, falls Kommentare verschwinden.

Lesen Sie sie als 16-Bit und verschieben Sie 2 Bits.