Bitmap in .txt konvertieren.

Gast #3384350
Lesenswert?

Böser Kommunist schrieb:
> Ich will ein Bild  via UART  an FPGA-Board übersenden.
cat meinBild.bmp >> /dev/ttyS0

und schon hast es am FPGA-Board. Im FPGA musst nur noch den Header 
überspringen und dann kommen die Bilddaten wunderschön leicht 
verarbeitbar binär rein. Wozu erst kompliziert die Zahlen dezimal 
darstellen und im FPGA wieder binär zurückrechnen?! Das BMP-Format ist 
supereinfach zu verarbeiten (kannst quasi direkt so in Video-RAM => 
RAMDAC schieben), ganz im Gegensatz zu deinem komischen Textformat.
#3384353
Lesenswert?

Okay. Wieso geht das nicht mit 8-Bit-Worten? Dem UART ist es egal ob Du 
Text oder Binärdaten überträgst.

Wenn es nur druckbare Zeichen sein dürfen, dann kannst Du auch sowas wie 
ein base64_encode verwenden, das wird z.B. in eMails gemacht.

Aber auf jeden Fall würd ich kein Bitmap dermaßen in Textform aufblasen 
wie Du es vor hast. Sonst wird aus einer 2 MByte .BMP-Datei eine 9..10 
MByte Textdatei. Sowas willst Du nicht durch einen UART jagen.
Gast #3384356
Lesenswert?

> Ich will ein Bild  via UART  an FPGA-Board übersenden.

Mögliche sinnvolel Herangehensweisen:
- bring dem FPGA ein vernünftiges Format bei, z.B. JPEG oder PNG.
- nimm fertige, primitiv-einfach zu benutzende Bibliotheken wie opencv 
und boost und schreib Dir ein kurzes Progrämmchen für die Aufgabe
- nimm convert aus ImageMagick um das Bild als Text zu dumpen, parse das 
Ergebnis adäquat..
1
$ time convert some.jpg out.txt
2
real    6m23.164s
3
user    6m21.200s
4
sys     0m1.484s
5
$ echo .oO\(nichtgradschnell\) > /dev/null
6
$ ls -sh out.txt 
7
855M out.txt
8
$ head -n 3 out.txt 
9
# ImageMagick pixel enumeration: 5184,3456,255,srgb
10
0,0: ( 41, 61, 98)  #293D62  srgb(41,61,98)
11
1,0: ( 26, 46, 79)  #1A2E4F  srgb(26,46,79)
Gast #3384696
Lesenswert?

>> - bring dem FPGA ein vernünftiges Format bei, z.B. JPEG ...
[oder PNG]
>
> Nicht jeder möchte, dass die Bilder bei der Übertragung verändert und
> vermatscht werden. Bei Bildkompression auf der Übertragungsstrecke
> sollte man sich über die Bildinhalte im klaren sein.

..deswegen nimmt man dafür selbstredend das Format, in dem die Originale 
eh vorliegen (z.B. JPEG) oder ein verlustfreie komprimierendes welches.

> die Bilder (ca. 512x512) werden nur zur Mustererkennung verwendet

Ok, das ist nicht groß. Klingt aber auch nicht nach JPEG :-)

Übrigens der Vollständigkeit wegen: Sowohl BMP (RLE) als auch TIFF (LZW 
und andere (und verlustbehaftet JPEG)) können verlustfrei packen - 
Effizienz inhaltsabhängig.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren