Forum: Mikrocontroller und Digitale Elektronik JPG Array to BMP Array


von Bonnard (Gast)


Lesenswert?

Guten Morgen zusammen :D

Ich möchte eine JPG Array in ein BMP Array umwandeln. Kennt jemand eine 
gute Library welche mir das machen kann?

Ich brauche das Bitmap-Array um das Bild an einem Display anzeigen zu 
können, das JPG-Array erhalte ich von einem kleinen Kameramodul.
Ich muss also nur die Umwandlung von JPG-Array ins BMP-Array vornehmen, 
der rest funktioniert bereits.

Danke schon im voraus für jegliche Hilfe

Mit freundlichen Grüssen ME:D

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Hab's noch nicht selbst gemacht, aber ich haett' erstmal die libjpeg im 
Verdacht, das zu koennen. Soll das auf der Zielhardware (welcher) laufen 
oder aufm PC - da waere ImageMagick eine Moeglichkeit?

Gruss
WK

von guest (Gast)


Lesenswert?

libjpeg.sourceforge.net


https://github.com/nothings/stb

von Bonnard (Gast)


Lesenswert?

Dergute W. schrieb:
> Soll das auf der Zielhardware (welcher) laufen
> oder aufm PC

Schlussundendlich möchte ich das BMP-Array an einem Display anzeigen, 
die Hardware wurde soweit fertig gestellt. Mir fehlt nur noch die 
Umwandlung vom JPG-Array ins BMP-Array.

guest schrieb:
> libjpeg.sourceforge.net
>
> https://github.com/nothings/stb

Danke, aber wie wäre es mit einer kleinen Beschreibung?

von Jim M. (turboj)


Lesenswert?

Bonnard schrieb:
> Danke, aber wie wäre es mit einer kleinen Beschreibung?

Bitte schön: Beides Links enthalten Source Code zum Dekodieren von JPEG 
inklusive Dokumentation.

Genau so hilfrfeich wie Deine Beschreibung vom Projekt übrigens,
wenn der µC/SOC zu klein gewählt wurde scheitert JPEG Dekodierung am RAM 
oder an Perfromance.

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Bonnard schrieb:
> Schlussundendlich möchte ich das BMP-Array an einem Display anzeigen,
> die Hardware wurde soweit fertig gestellt. Mir fehlt nur noch die
> Umwandlung vom JPG-Array ins BMP-Array.

Achso, ja dann isses ganz klar. Also ein Display. Aha - interessant; die 
Hardware auch schon fertig. Super! Ja, logo - einfach nur noch das 
JPG-Array umwandeln. Ist ganz simpel. Nee - ist eh' klar, ne....Kein 
Ding und so.

SCNR,
WK

von Bonnard (Gast)


Lesenswert?

Jim M. schrieb:
> Genau so hilfrfeich wie Deine Beschreibung vom Projekt übrigens,
> wenn der µC/SOC zu klein gewählt wurde scheitert JPEG Dekodierung am RAM
> oder an Perfromance.
uP ist STM32, denke nicht das dieser zu "schwach" ist.

von Ralph S. (jjflash)


Lesenswert?

... na ja, wenn die Konvertierung im Controller machen magst, muß 
mindestens das JPEG und das BMP im RAM gehalten werden.... Je nachdem 
welchen STM32 du nutzt kann das schon mal sehr eng werden.....

von mar IO (Gast)


Lesenswert?


von Bonnard (Gast)


Lesenswert?

Ralph S. schrieb:
> ... na ja, wenn die Konvertierung im Controller machen magst, muß
> mindestens das JPEG und das BMP im RAM gehalten werden.... Je nachdem
> welchen STM32 du nutzt kann das schon mal sehr eng werden.....

Oke, also habe den STM32F407 verlötet, was denkst du? reicht das?

von .-. (Gast)


Lesenswert?

du bist ja sehr sparsam mit deinen Infos...

von Bonnard (Gast)


Lesenswert?

.-. schrieb:
> du bist ja sehr sparsam mit deinen Infos...

uP:      STM32F407
Display: NHD-2.4-240320
Kamera:  Mini TTL Serial JPEG von Adafruit (leider keine genaue Angabe, 
jedoch ist hier das Datasheet --> 
https://cdn-shop.adafruit.com/product-files/1386/1386+v2+datasheet.pdf)

Sonst noch was?

Nun zurück zur Frage, kennt jemand eine gute und einfach zu verstehende 
Library zur Umwandlung von JPG-Arrays in Bitmap-Arrays?

Wäre euch sehr dankbar:)

Mfg Bonnard P.

von Falk B. (falk)


Lesenswert?

http://www.elm-chan.org/fsw/tjpgd/00index.html

Ich hab damit noch nicht gearbeitet, aber die Projekte vom Meister Chan 
aus dem fernen Osten stehen immer für sehr gute Qualität.

Sajonara

von Bonnard (Gast)


Lesenswert?

Falk B. schrieb:
> http://www.elm-chan.org/fsw/tjpgd/00index.html
>
> Ich hab damit noch nicht gearbeitet, aber die Projekte vom Meister Chan
> aus dem fernen Osten stehen immer für sehr gute Qualität.
>
> Sajonara



oke danke, werd mich da mal ein bisschen schlau machen :D

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Bonnard schrieb:
> Nun zurück zur Frage, kennt jemand eine gute und einfach zu verstehende
> Library zur Umwandlung von JPG-Arrays in Bitmap-Arrays?

Liest du überhaupt, was man dir antwortet?

mar IO schrieb:
> Beitrag "jpg mit STM32 dekodieren"

In diesem Beitrag werden 2 kleine Libraries erwähnt, die ganau dafür 
gedacht sind. Und niemand wird probieren, dir was fertiges zu schreiben 
für einen Controller, der nur 64k CCRAM hat und 128k normalen RAM - Viel 
Spass dabei.
Mein Tipp wäre, das du erstmal die 128k komplett von allen anderen 
Variablen freiräumst, die du in den CCRAM verlegst.
Ob dann 128k ausreichen, darin ein JPG in RAW zu entpacken und dann auf 
den Schirm zu werfen, wirst du wohl ausprobieren müssen. Ein STM32F429 
wäre da wohl ein wenig geeigneter, zumal da ein LCD Interface schon bei 
ist. Und das Disco F429 hat sogar schon dicken SDRAM onboard.

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Oha, kaum dass man mit einer Hilti arbeitet, dann lassen sich sogar 
hydraulisch einzelne getrocknete Trauben aus Riechorganen ziehen.

Neben den Loesungen, die scheinbar schon direkt fuer den Prozessor 
existieren, waere es eine ganz verrueckte Idee, z.b. bei der libjpeg 
einfach mal in das File mit dem hochverdaechtigen Namen example.c zu 
gucken. Da koennte man dann sogar Kommentare wie den folgenden (steht 
ungefaehr in Filemitte ) erblicken:
1
/******************** JPEG DECOMPRESSION SAMPLE INTERFACE *******************/
2
3
/* This half of the example shows how to read data from the JPEG decompressor.
4
* It's a bit more refined than the above, in that we show:
5
*   (a) how to modify the JPEG library's standard error-reporting behavior;
6
*   (b) how to allocate workspace using the library's memory manager.
7
*
8
* Just to make this example a little different from the first one, we'll
9
* assume that we do not intend to put the whole image into an in-memory
10
* buffer, but to send it line-by-line someplace else.  We need a one-
11
* scanline-high JSAMPLE array as a work buffer, and we will let the JPEG
12
* memory manager allocate it for us.

Also: Man muss evtl. garnicht die komplette, unkomprimierte Bitmap im 
Speicher halten; wenn das Display nicht regelmaessig refresht werden 
muss.

Gruss
WK

von Draco (Gast)


Lesenswert?


von Joachim B. (jar)


Lesenswert?

Bonnard schrieb:
> Ich möchte eine JPG Array in ein BMP Array umwandeln

.-. schrieb:
> du bist ja sehr sparsam mit deinen Infos...

immer noch, kein einziges Wort über die Bildgröße!

soweit ich weiss arbeitet JPG mit 24-bit Farben, das BMP erwartet pro 
Pixel ähnliches :)

Wenn also nicht mal die Bildgröße genannt wurde, wie soll man da den RAM 
Bedarf nur fürs BMP abschätzen?

X-pix  Y-pix  3 Byte fürs BMP + Header

von Georg G. (df2au)


Lesenswert?

Joachim B. schrieb:
> immer noch, kein einziges Wort über die Bildgröße!

Sei mal etwas beweglicher! Der Unterhaltungswert des Threads ist doch 
viel höher, wenn du etwas rätseln musst. Und außerdem ist Freitag :-)

Das Display hat 320*240 Pixel und die Kamera kann man auch auf dieses 
Format zwingen. Also wird es das wohl sein. Das BMP kann er sofort nach 
Umwandlung einer JPG-Gruppe (8 Zeilen) stückweise raus schieben. Nur das 
JPG wird er komplett zwischenspeichern müssen, da die Kamera das seriell 
per RS232 raus wirft.

Ich mach noch mal einen Eimer Popcorn.

von Bonnard (Gast)


Lesenswert?

Draco schrieb:
> Hast du es noch immer nicht hinbekommen?

Wenn du so gut bist, da mach es gerade...

Wenn du nicht helfen willst, gerne Klappe halten.! Danke

von Draco (Gast)


Lesenswert?

Bonnard schrieb:
> Draco schrieb:
>> Hast du es noch immer nicht hinbekommen?
>
> Wenn du so gut bist, da mach es gerade...
>
> Wenn du nicht helfen willst, gerne Klappe halten.! Danke

Entschuldige mal, du machst drei verschiedene Threads auf, kommst mit 
keinen Info. Und nein... Ich würde es nicht machen, weil es dafür ganz 
andere Ansätze gibt.

Wo sind denn die ganzen Infos? Wo ist denn deine Bereitschaft auf das 
obig genannte einzugehen?

Sorry, ich bin raus!

von Weinbauer (Gast)


Lesenswert?

kommt halt drauf an was mit dem Bild alles passieren soll ... nur 
Anzeigen geht wohl mit der Lib Line by Line, dann nur noch ans LCD raus 
schieben. Das JPG musser halt puffern.
Wenn da noch z.B. Filter angewendet werden sollen wirds da dann enger. 
Hab sowas vor Jahren mal mit nem Mega32 gemacht und Sobel-Filter für 
Objekterkennung drüber laufen lassen ... ging, aber nur weil ich extern 
n EDO-RAM Riegel drangehängt habe.

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
Noch kein Account? Hier anmelden.