Zugriff auf Helligkeitswerte von Pixeln

Liebe/-r wer-weiss-was Experte/-in,

Zum Zwecke einer Bildanalyse moechte ich auf die Helligkeitswerte der
Pixel in einem Bild (z.B. bmp oder jpg odr tiff) zugreifen koennen.
Im Idealfall wuerde ich gerne die Helligkeitswerte z.B. in EXCEL oder
wie in einer EXCEL-Tabelle zur Verfuegung haben.
(Mir ist klar, dass eine EXCEL-Tabelle nur eine recht beschraenkte
Groesse haben kann, aber auch nur einen Bildausschnitt in dieser
Weise vorliegen zu haben, waere schon eine gute Hilfe fuer mich.)

Alternativ waere ich „auch schon gluecklich“, wenn ich die
Helligkeitswerte als ASCII vorliegen haben koennte, um sie dann
mit einem anderen (eventuell selbst-programmierten) Programm einlesen
zu koennen.

Vielen Dank im Voraus,
und mit vielen Gruessen,
Nils

Zum Zwecke einer Bildanalyse moechte ich auf die
Helligkeitswerte der
Pixel in einem Bild (z.B. bmp oder jpg odr tiff) zugreifen
koennen.

Wenn du das Bild in einem eigenen Programm laden kannst, kannst du recht einfach von RBG nach YUV konvertieren (s. http://www.fourcc.org/index.php?http%3A//www.fourcc… ), der Lumineszenzkanal entspricht dann einer Helligkeit.

Danke fuer die Antwort.
Leider habe ich aber noch „banalere“ Probleme.
Mein Problem ist (noch) nicht, die RGB Daten in Helligkeitwerte umzurechnen. (Dabei kann mir dann wohl die von Dir zitierte
website helfen…)

Mein Problem ist, dass ich gar nicht weiss, wie ich auf die
(binaer abgespeicherten???) Bitmap Daten zugreifen kann!!!
Wie geht DAS?
Ich moechte die Daten weiterverarbeiten, kann aber nur mit
Daten im text-Format (ASCII-files a’la „.csv“ fuer EXCEL…) umgehen.

Meine Frage ist daher:
Gibt es eine Moeglichkeit, die „.bmp“ und/oder „.jpg“ Daten so
umzuwandeln, dass sie als text-File (also wie eine EXCEL Datei) vorliegen?
Kannst Du mir dabei helfen?

Vielen Dank im Voraus und viele Gruesse,
Nils

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

vielleicht hilft Dir das weiter

http://de.wikipedia.org/wiki/BMP

ujk

Hallo Ujk!

Danke fuer Deine Antwort.
Nein, die Wikipedia Seite, die ich auch schon gefunden hatte,
hilft mir leider nicht weiter, denn mein Problem ist:

Wie bekomme ich die Daten in mein EXCEL sheet?

Um die Daten weiterzuverarbeiten muss ich natuerlich das
z.B. bei Wikipedia beschriebene BMP Datenformat verstehen,
aber mein Hauptproblem ist dennoch:
Wie kriege ich die Daten in ein Fileformat, das ich lesen kann.
(Ich kann, z.B. mit EXCEl oder eigenen FreePascal Programmen
Textfiles wie z.B. „comma-separated .csv Files“ lesen.)

Vielen Dank im Voraus und viele Gruesse,
Nils

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hä…?
Hallo,

Nein, die Wikipedia Seite, die ich auch schon gefunden hatte,
hilft mir leider nicht weiter, denn mein Problem ist:

Wie bekomme ich die Daten in mein EXCEL sheet?

Um die Daten weiterzuverarbeiten muss ich natuerlich das
z.B. bei Wikipedia beschriebene BMP Datenformat verstehen,
aber mein Hauptproblem ist dennoch:
Wie kriege ich die Daten in ein Fileformat, das ich lesen
kann.
(Ich kann, z.B. mit EXCEl oder eigenen FreePascal Programmen
Textfiles wie z.B. „comma-separated .csv Files“ lesen.)

Hm…
Mir ist zwar nicht ganz klar, was du WIRKLICH willst (Helligkeit jedes einzelnen Pixels ??), aber du kannst die Bilddatei problemlos in eine Textdatei umwandeln, indem du einfach die Dateiendung zu .txt änderst.
Vielleicht hilft dir das ja weiter ?

Viel Spass und Erfolg
Stefan

Hallo,

wenn Du nun also die Struktur einer BMP-Datei hast,
dann brauchst Du nun ein Programm, mit dem die Datei
geöffnet, von jedem Pixel deren Info nacheinander
ausgelesen und in eine neue Datei als ASCII-Text
(mit gewünschter Formatierung, z.B. CVS)geschrieben wird.

Um sowas zu progr.eignen sich viele Programmiersprachen
z.B. VisualBasic,auch alte Basicvarianten,Delphi/TurboPascal,
C usw.

Die so generierte ASCII-Datei kannst Du dann in Excel
einlesen oder gleich auch mit dem Programm auswerten.
Gruß Uwi

Danke fuer Deine Antwort.
Nein, die Wikipedia Seite, die ich auch schon gefunden hatte,
hilft mir leider nicht weiter, denn mein Problem ist:

Wie bekomme ich die Daten in mein EXCEL sheet?

Um die Daten weiterzuverarbeiten muss ich natuerlich das
z.B. bei Wikipedia beschriebene BMP Datenformat verstehen,
aber mein Hauptproblem ist dennoch:
Wie kriege ich die Daten in ein Fileformat, das ich lesen
kann.
(Ich kann, z.B. mit EXCEl oder eigenen FreePascal Programmen
Textfiles wie z.B. „comma-separated .csv Files“ lesen.)

Vielen Dank im Voraus und viele Gruesse,
Nils

Hallo,

vielleicht hilft Dir das weiter

http://de.wikipedia.org/wiki/BMP

ujk

Hallo Nils,
hast Du vielleicht ähnliches vor wie:

http://jpg2asc.hierklikken.com/

Hab aber keine Ahnung, wie die das machen, aber vielleicht helfen sie
Dir weiter.

click

Hallo Uwi,

danke fuer Deine Antwort.

Du schriebst:

wenn Du nun also die Struktur einer BMP-Datei hast,
dann brauchst Du nun ein Programm, mit dem die Datei
geöffnet, von jedem Pixel deren Info nacheinander
ausgelesen und in eine neue Datei als ASCII-Text
(mit gewünschter Formatierung, z.B. CVS)geschrieben wird.

Genau. Danach suche ich, bzw. brauche Hilfe dabei,
wie man so etwas programmiert (das Einlesen der Daten).

Um sowas zu progr.eignen sich viele Programmiersprachen
z.B. VisualBasic,auch alte Basicvarianten,Delphi/TurboPascal,
C usw.

Auch hier stimme ich Dir voll und ganz zu, jedoch bin ich leider damit
immer noch kein Stueck weiter. Meine Frage ist ja eben,
WIE kann ich diese Daten (beispielsweise einer Bitmap Datei) einlesen?
D.h.: Ich benoetige Hilfe fuer den Einlesevorgang.
Kannst Du mir dabei helfen?

(Ich benutze in der letzten Zeit meist FreePascal als Programmiersprache.)

Vielen Dank im Voraus und viele Gruesse,
Nils

Hallo Stefan,

danke fuer Deine Antwort.
Es ist aber eben natuerlich nicht so, dass die Bilddatei in eine
Textdatei umgewandelt wird, wenn man nur die Extension aendert,
wie Du vorschlaegst.

Etwas konkreter Formuliert ist mein Problem folgendes:

Ich moechte zum Zwecke einer Bildanalyse auf die Helligkeitswerte
der einzelnen Pixel einer bmp, jpeg oder tiff Datei zugreifen koennen.
Die Helligkeit muesste man natuerlich ausrechnen aus dem
RGB Signal, aber mein eigentliches Problem liegt woanders:

Zwar weiss ich, wie z.B. eine Bitmap Datei aufgebaut ist
(die ersten beiden Bytes geben das Datiformat an,
die darauf fogenden beiden die Dateilaenge, …),
aber ich weiss dennoch nicht, wie ich an diese Daten „herankomme“.

Meine Programmierkuenste erstrecken sich derzeit hauptaechlich auf
die Sprache FreePascal, wobei ich bisher nur aus Text-Dateien Daten
eingelesen habe. Dabei sind dann ja im im ASCII-Format die Zahlen
Ziffernweise abgespeichert und durch z.B. TABs oder Kommata voneinander getrennt. Das ist aber ja wohl bei Bitmap und/oder JPEG Dateien ganz anders. (Jedes Byte kann den Zahlenwert 0 bis 255…)

Wie kann ich es nun entweder schaffen, die Bytes der bitmap Datei
einzulesen, oder aber sie umzuwandeln in eine text-Datei, in der die
Daten im ASCII-Format abgespeichert sind?

Herzlichen Dank im Voraus fuer die Hilfe
und viele Gruesse,
Nils (Harder)

******* Stefans Antwort auf den vorngengangenen Eintrag *******

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hex Editor ??
Hallo Nils,

danke fuer Deine Antwort.

Bitte

Es ist aber eben natuerlich nicht so, dass die Bilddatei in
eine
Textdatei umgewandelt wird, wenn man nur die Extension
aendert,
wie Du vorschlaegst.

Na gut, aber ich kann sie mir durch Ändern der Dateiendung z.B. mit Wordpad anschaun. (und eventuell auch auswerten)

Etwas konkreter Formuliert ist mein Problem folgendes:

Ich moechte zum Zwecke einer Bildanalyse auf die
Helligkeitswerte
der einzelnen Pixel einer bmp, jpeg oder tiff Datei zugreifen
koennen.
Die Helligkeit muesste man natuerlich ausrechnen aus dem
RGB Signal, aber mein eigentliches Problem liegt woanders:

Zwar weiss ich, wie z.B. eine Bitmap Datei aufgebaut ist
(die ersten beiden Bytes geben das Datiformat an,
die darauf fogenden beiden die Dateilaenge, …),
aber ich weiss dennoch nicht, wie ich an diese Daten
„herankomme“.

Meine Programmierkuenste erstrecken sich derzeit hauptaechlich
auf
die Sprache FreePascal, wobei ich bisher nur aus Text-Dateien
Daten
eingelesen habe. Dabei sind dann ja im im ASCII-Format die
Zahlen
Ziffernweise abgespeichert und durch z.B. TABs oder Kommata
voneinander getrennt. Das ist aber ja wohl bei Bitmap
und/oder JPEG Dateien ganz anders. (Jedes Byte kann den
Zahlenwert 0 bis 255…)

Wie kann ich es nun entweder schaffen, die Bytes der bitmap
Datei
einzulesen, oder aber sie umzuwandeln in eine text-Datei, in
der die
Daten im ASCII-Format abgespeichert sind?

Schau dir das mal an:
http://www.mirkes.de/de/freeware/tinyhex.php
Ist ein scriptfähiger Hexeditor und umsonst.
(„Features“ mal anschauen)

Herzlichen Dank im Voraus fuer die Hilfe

Gerne doch.

Viel Spass und Erfolg
Stefan

binär vs. text
Hi Nils,

Zwar weiss ich, wie z.B. eine Bitmap Datei aufgebaut ist
aber ich weiss dennoch nicht, wie ich an diese Daten
„herankomme“.

dein problem ist der unterschied zwischen einer binärdatei (bmp) und einer textdatei (csv). Der befehl, die datei zu öffnen, hat da in pascal vielleicht andere parameter, siehe die hilfe.
binär heisst, jedes byte ist eine zahl zwischen 0 und 255. in pascal heisst der datentyp unsigned byte, schau dazu auch in die hilfe zu den datentypen.

diese holst du einzeln aus deiner bmp-datei raus. hier wäre das in einer doppelten for-schleife für die x- und y- abmessungen. natürlich nachdem der header weg ist.

die 3 farbbytes rechnest du in YUV um und behältst den helligkeitswert Y.

Dabei sind dann ja im im ASCII-Format
die Zahlen Ziffernweise abgespeichert

ein solches byte ist in einer ascii-datei (die du schreiben willst) kein byte mehr, sndern eine ausgeschriebene zahl mit 1 bis 3 stellen, einem komma und einem leerzeichen. also gleich bis zu 5 zeichen, die dann auch 5 bytes brauchen. das ascii-format ist da weniger dicht gepackt.

in pascal heisst der befehl zum umwandeln a:=itos(b), itos heisst int to string, wobei b ein unsigned byte und a ein string ist. probier das mal mit b=10 aus, da müsste der string ‚10‘ rauskommen.

da packst du ein komma und das leerzeichen dazu und schreibst das in die ausgabedatei, und die kriegt dann excel. vergiss nicht den zeilenwechsel nach einer neuen bildzeile.

ich hoffe, das hilft dir weiter.
–matze

Das ist aber ja wohl bei Bitmap und/oder JPEG Dateien ganz anders.

jpeg dateien sind komprimiert, das ist etwas komplizierter. bleib am besten beim 24 bit bmp-format. JPG und andere dateitypen kannst du mit jedem üblichen zeichenprogramm nach bmp konvertieren.

vorverarbeitung
nachtrag:

nimm ein normales zeichenprogramm und speichere erstmal das bild als 8 bit graustufen BMP ab, die sind am einfachsten. jedes byte, das nach dem header kommt, ist ein helligkeitswert.

Hallo Stefan,

danke wiederum fuer Deine Muehen.
Du schriebst:

Es ist aber eben natuerlich nicht so, dass die Bilddatei in
eine
Textdatei umgewandelt wird, wenn man nur die Extension
aendert,
wie Du vorschlaegst.

Na gut, aber ich kann sie mir durch Ändern der Dateiendung
z.B. mit Wordpad anschaun. (und eventuell auch auswerten)

Naja, anschauen mit WORD oder WORDPAD kann man die Dateien ja
auch bei beliebiger Extension…
Da die Daten aber eben binaer abgespeichert sind, erhaelt man da nicht viel Erkennbares auf dem Bildschirm. In einem anderen Teil des Threads (–> MAtze) ist dazu etwas geschrieben, und Hansi Glaser (nicht Teil dieses Threads) hat mir zum Lesen binaerer Daten mit FreePascal ein paar Tips geben koennen.

Viele Gruesse,
Nils

Hallo Matze,

danke fuer Deine Antwort(en)!

Fuer das Einlesen der binaeren Daten mit FreePASCAL habe ich Hilfe von Hansi Glaser (nicht Teil dieses Threads) erhalten, wodurch ich den fuer mich zur Zeit schwierigsten Schritt geschafft habe…

Viele Gruesse,
Nils

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]