Hallo, ich versuche schon seit langem ein 5x5 BMP-Bild in vhdl zu lesen aber mein Algorithmus funktioniert nicht richtig. Anbei findet ihr das originale Bild mit den BMP-Pixeldaten (beide in hex-Code) und den Code-Ausschnitt zum Lesen als Anhänge. Ich weiß nicht, was in meinem Algorithmus falsch ist, aber vielleicht könnt ihr mir sagen, was drin falsch ist. Hinweis: Das BMP-Bild ist ein binäres Bild und besteht aus 54 Bytes Header und 25 Bytes Pixeldaten. Vielen Dank im voraus und viele Grüße
Yann B. schrieb: > aber > mein Algorithmus funktioniert nicht richtig. Ich kann da in deinem VHDL keinen Algorithmus erkennen. Es wird auch keine Datei gelesen. Hänge doch mal die .BMP und die vollständige .VHD an.
moin, ich könnte mich irren, aber soweit ich weiß werden die rohen Bild-Daten auf dem Kopf gespeichert. Also sie unterste Reihe steht dann oben und umgekehrt. das erste Byte 0x00 ist der Index für den Pixel gefolgt von 4 Byte Bilddaten (Alpha-Transparent,R,G,B). grüüßee (:
Micha W. schrieb: > ich könnte mich irren, aber soweit ich weiß werden die rohen Bild-Daten > auf dem Kopf gespeichert. Also 0,0 ist wie üblich oben links in der Ecke.
Gustl B. schrieb: > Micha W. schrieb: >> ich könnte mich irren, aber soweit ich weiß werden die rohen Bild-Daten >> auf dem Kopf gespeichert. > > Also 0,0 ist wie üblich oben links in der Ecke. Okay, das Bild steht von den Zeilen aus gesehen auf dem Kopf. Also Daten von links nach rechts sind i.O. aber die oberste Zeile steht unten und die zweite als Vorletzte usw. Und was ich jetzt erst sehe... Die Pixeldaten beschreiben ein Bild von nur 1x5 Pixeln.
:
Bearbeitet durch User
Exakt. So ist das wirklich üblich. Ich weiß zwar nicht wieso, aber vermutlich vom klassischen Fernseher. Da wird das Bild von links nach rechts und von oben nach unten aufgebaut. Das erste Pixel ist also links oben. Bei VGA und dann auch bei den anderen Nachfolgern ist das genauso. Das hat man dann auch für Bildformate übernommen und sogar Layoutsoftware macht das so. In Indesign ist die Ecke links oben vom "Papier" bei 0,0. Micha W. schrieb: > Die Pixeldaten beschreiben ein Bild von nur 1x5 Pixeln Wieso?
:
Bearbeitet durch User
Gustl B. schrieb: > Micha W. schrieb: >> Die Pixeldaten beschreiben ein Bild von nur 1x5 Pixeln > > Wieso? Weil das 5x5 Byte sind - ich gehe von einem 32Bit-Bitmap aus. 1. Byte Index der Zeile - 2. Byte Alpha - 3./4./5. Byte R/G/B. Das ist 1 Pixel. 5 Zeilen - also 1x5 Pixel. Selbst wenn es ein 1 Bit-Bitmap ist so besteht jeder Pixel mit einem 0-basiertem Index. Und das ist bei 0xFF wohl nicht der Fall :/ An den TO: Schau Dir mal den Header deiner BMP an und guck, wie das BMP formatiert ist. Da gibt es einiges zu beachten. https://de.wikipedia.org/wiki/Windows_Bitmap#Vor-_und_Nachteile grüüßee (:
:
Bearbeitet durch User
Gustl B. schrieb: > Ich kann da in deinem VHDL keinen Algorithmus erkennen. Es wird auch > keine Datei gelesen. Mit dem Algorithmus meine einfach das Iterationsverfahren über (i,j), um die Lese-Adressen zu erzeugen. > Hänge doch mal die .BMP und die vollständige .VHD an. Unwichtig, weil das zu lesende Bild genau wie angehängt aussieht und von einem Flash-Speicher gelesen wird.
Micha W. schrieb: > ich könnte mich irren, aber soweit ich weiß werden die rohen Bild-Daten > auf dem Kopf gespeichert. Also sie unterste Reihe steht dann oben und > umgekehrt. das erste Byte 0x00 ist der Index für den Pixel gefolgt von 4 > Byte Bilddaten (Alpha-Transparent,R,G,B). So sieht doch das angehängte (unten stehende) Bild (BMP-Pixeldaten) aus. Ich habe mir einfach den Header gespart aber wie du siehst, fangen die Pixeldaten ab Index 54 an. Was die Farbkomponenten (R,G,B) angeht, habe ich nicht für jedes Pixel das entsprechende Byte im Bild eingetragen, weil es um ein binäres Bild angeht, spricht R=G=B.
:
Bearbeitet durch User
Micha W. schrieb: > Und was ich jetzt erst sehe... Die Pixeldaten beschreiben ein Bild von > nur 1x5 Pixeln. Wo siehst du das?
was ich öfters ein und ausgelesen hab, ist ein GPM Bild. Das ist einfach mit Irfanview anzuzeigen bzw abzuspeichern
WOKO schrieb: > was ich öfters ein und ausgelesen hab, ist ein GPM Bild. Das ist einfach > mit Irfanview anzuzeigen bzw abzuspeichern Nutze ich auch gern das Format, dann hat man den 8bit Aerger auch nicht. Ein Code Beispiel zur Inspiration findet sich hier: https://gitlab.com/Elpra/drever-framework/drever/-/blob/master/src/drever/vhdl/data_handlers/image_data_pkg.vhd
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.