Forum: Mikrocontroller und Digitale Elektronik Bild auf SRAM speichern


von Ibo d. (ibodesouza)


Lesenswert?

Ich möchte ein Bild in CIF größe auf ein 512 kb großes SRAM speichern. 
Wie geht das? Beispiel in C?

von Εrnst B. (ernst)


Lesenswert?

1
uint8_t pixels[352*288*3];
2
memcpy(pixels, bilddaten, sizeof(pixels));
?

Im SRAM ist nachher sogar noch Platz frei.

von Ibo d. (ibodesouza)


Lesenswert?

Ich möchte das Bild vorher noch komprimieren und so viele Bilder drauf 
bekommen wie es nur geht. Eine weitere Frage wäre noch im Datenblatt vom 
Sensor steht 8bit YUV heißt das dann nicht 352*288*1?

von Ibo d. (ibodesouza)


Lesenswert?

was ich vergessen habe, ich brauche noch eine kleine Datenbank der 
Bilder mit -zu welcher Zeit- -bild nummer-

von Bernd S. (soundgott)


Lesenswert?

Ibo de Souza schrieb:
> was ich vergessen habe, ich brauche noch eine kleine Datenbank der
> Bilder mit -zu welcher Zeit- -bild nummer-

Wenn's mehr nicht ist...

von _\|/_ (Gast)


Lesenswert?

Ist das eine Hausaufgabe oder was für die Arbeit?

von Εrnst B. (ernst)


Lesenswert?

Also, "Teile und Hersche".


Zuerst: Entscheide dich für eine Komprimierung (libjpeg?).
Schau in welchem Pixelformat diese ihre Eingabedaten erwartet.
Implementiere das Laden der Kameradaten, evtl. Farbraum-Wechsel, das 
übergeben an die komprimierungs-Funktion.

Jetzt hast du einen Blob mit komprimierten Bilddaten.
Den zusammen mit Erstellungdatum, Bildnummer etc. ins SRAM ("verkettete 
Liste"?)
Datenbank ist overkill, da SRAM "Random Access Memory" ist, und du mit 
linearer Suche deine handvoll Bilder auch gleich durch hast.

von Timmo H. (masterfx)


Lesenswert?

Ibo de Souza schrieb:
> Ich möchte das Bild vorher noch komprimieren und so viele Bilder drauf
> bekommen wie es nur geht. Eine weitere Frage wäre noch im Datenblatt vom
> Sensor steht 8bit YUV heißt das dann nicht 352*288*1?
Nein YUV 8 Bit bedeutet, dass Y, U und V jeweils mit 8-Bit Farbauflösung 
gespeichert werden. Je nach Subsampling werden U und V aber mit 
geringerer (Bild)Auflösung gespeichert, z.B mit halber horizontalen 
Auflösung (4:2:2) oder halber vertikalen und horizontalen Auflösung 
(4:2:0)

von Ibo d. (ibodesouza)


Lesenswert?

Ok ich nehme das Bild und komprimiere...

Speichern auf dem SRAM mit datum name nummer? wie geht es codemäßig? wie 
muss es aussehen... so gut ich weiss ist es nicht sooo leicht...

von Entwickler (Gast)


Lesenswert?

Moin,

kanns Du nicht ein paar mehr Infos geben? Was für ein System wird 
verwendet, wie ist der Speicher angebunden......

MfG

von Udo S. (urschmitt)


Lesenswert?

Du sagst nicht hallo,
du sagst nicht danke,
nach jeder Anwort kommen mehr Fragen und Anforderungen ...
Lies mal die Netiquette und denke mal über dein Verhalten hier nach!

von Εrnst B. (ernst)


Lesenswert?

Ibo de Souza schrieb:
> Speichern auf dem SRAM mit datum name nummer?

du speicherst pro Bild einmal
1
struct Bild {
2
  time_t datum;
3
  char name[12]; // 8.3;
4
  int nummer;
5
  size_t binaerdatengroesse;
6
}
.
Danach die Komprimierten Binärdaten.

Zum Auslesen/Suchen eines Bildes:

Setze Leseposition auf Speicherstelle 0:
while not found:
  struct Bild auslesen.
  Check ob Name/Nummer/... passt.
  Wenn nein: Leseposition um sizeof(struct Bild) + binaerdatengroesse 
weiterverschieben..
done

d.H. du hast im SRAM eine kette von Bild-Structs, dazwischen immer die 
Komprimierten Daten. Das Ende der Kette kannst du z.B. durch eine Struct 
Bild mit binaerdatengroesse==0 markieren.

von Ali (Gast)


Lesenswert?

Hallo, möchte Bild speichern auf schwarze Plastikteil. Wie machen?

von Ibo d. (ibodesouza)


Lesenswert?

Hallo zusammen,

vielen dank für die guten antworten. Besonders an Ernst.

Mit freundlichen Grüßen

von pic (Gast)


Lesenswert?

Εrnst B✶ schrieb:
> char name[12]; // 8.3;

Dann  bitte char name[13]; nehmen
8+3+1(Punkt)+1(Stringende)=13

von Eike S. (corny)


Lesenswert?

Wozu den Punkt speichern wenn man eh die feste Länge hat? Die ersten 
acht Zeichen sind der Teil vor dem Punkt, dann folgt implizit der Punkt, 
und danach die drei Zeichen sind dann nach dem Punkt.

Da kriegt der Bgriff "Festpunktarithmetik" doch gleich eine vollkommen 
neue Bedeutung. ;-)

von Karl H. (kbuchegg)


Lesenswert?

Eike S. schrieb:
> Wozu den Punkt speichern wenn man eh die feste Länge hat?

Weil es bei 10 Bildern auf die 10 Bytes auch nicht mehr ankommt und die 
Verarbeitung der Namen dann simpler ist, wenn man nicht erst mal die 
gelesenen Bytes herumwirbeln muss.
Ob er den Punkt speichert oder nicht, ist auch schon egal. Deswegen 
kriegt er auch nicht mehr Bilder in den Speicher.

von Eike S. (corny)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Ob er den Punkt speichert oder nicht, ist auch schon egal. Deswegen
> kriegt er auch nicht mehr Bilder in den Speicher.

Eben. Es ist genauso richtog oder falsch ihn zu speichern oder zu 
vergessen. Ich wollte nur ein Argument gegen das "du mußt das aber so 
machen" bringen.

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.