| Autor |
Beitrag |
sann
Hält's aus hier
Beiträge: 5
|
Verfasst: Mi 12.01.05 21:38
Hallo werte Delphi-Freunde!
Ich bin neu hier in diesem Forum, und bin nicht sicher, ob ich ein wahrscheinlich für euch triviales Problem hier äußern darf. Ich muss dazu sagen, dass ich (fast) keine Kenntnisse in Delphi habe. Dafür kann ich ein bisschen C programmieren, was mir leider für mein Problem nicht hilft. Ich schildere mal mein Anliegen.
- ich möchte nacheinander eine Anzahl von ca. 2000 tiff-Bildern (Grauwerte 8bit?) für eine Analyse laden
- von jedem einzelnen Bild brauche ich die Anzahl der Pixel pro Grauwert (das sind wohl 255?) also so eine Art Histogram - ich brauche aber kein Bild!
- ich würde die ermittelten Pixelanzahlen eines jeden Bildes (also immer 255 Werte pro Bild) gerne in ein .dat-file (einfach alles untereinander weg) schreiben, welches ich dann später mit meinem C-Programm auslesen und -werten kann.
Ich vermute, dass das mit Delphi zu programmieren ist, oder? Jetzt meine wichtigste Frage: Da ich keine Erfahrung mit Delphi habe, weiß ich nicht, wie hoch der Aufwand für ein solches Programm wäre. Kann man das abschätzen? Ich sehe im Moment keine andere Möglichkeit für mich, diese automatische Bildanalyse hinzukriegen.
Oder gibt es für ein solches Problem vielleicht sogar eine Art Vorlage. Ich würde das wirklich gerne hinkriegen. Ist das für einen Neuling wie mich denn überhaupt machbar?
Vielen Dank für Euren Rat.
MfG sann
|
|
Spaceguide
      
Beiträge: 552
(D3/D7/D8) Prof.
|
Verfasst: Do 13.01.05 10:32
|
|
Gausi
      
Beiträge: 8554
Erhaltene Danke: 481
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Do 13.01.05 10:46
Ich will ja nicht Werbung für die Konkurrenz machen, aber kann man nicht auch mit C Bilder auslesen? Du hast die im TIFF-Format? Dann kann Delphi die auch nicht problemlos lesen (AFAIK können die mitgeleiferten Kompos nur jpg und bmp).
Du kannst natürlich nach Tiff-Komponenten suchen, die es mit Sicherheit gibt, aber günstiger wäre wahrscheinlich, sich bei www.wotsit.org über das Tiff-Format zu erkundigen, die Dateien per hand auszulesen (Header auslesen und verarbeiten) und die Bilddaten in ein Byte-Array zu packen. Das kann man dann mit entsprechender C-Syntax so durchgehen, wie es SpaceGuide beschrieben hat.
Ist doch besser, wenn ein Programm beides kann. Nur fürs auslesen ein Delphi-Programm zu nehmen, und den Rest in C machen ist doch Unsinn.
_________________ We are, we were and will not be.
|
|
sann 
Hält's aus hier
Beiträge: 5
|
Verfasst: Do 13.01.05 20:04
Vielen Dank erstmal für die Antworten.
@Gausi: Wenn das ganze mit C ginge, wäre das natürlich noch viel optimaler. Ich hab jetzt mehrere Stunden im Netz nach Ansatzpunkten gesucht, wie ich ein tiff-File in C aufrufen/laden kann - aber leider ohne Erfolg. Dabei will ich ja nichtmal was anzeigen, oder so. Auch keine grafische Oberfläche.
Sondern nur das Histogram eines tiff-Files in einfachen Zahlen (z.B. die jeweiligen Pixelanzahlen der 255 Grauwerte einfach untereinander - Vektor?) in ein dat-File schreiben. Mehr nicht. Bin echt verzweifelt.
Kann mir bitte noch jemand einen Hinweis, Link o.ä. geben?
mfg sann
|
|
sann 
Hält's aus hier
Beiträge: 5
|
Verfasst: Do 13.01.05 20:25
...ich habe die Möglichkeit die Bild-Files auch als Bitmap .bmp zu bekommen. Würden sich die leichter auslesen lassen?
|
|
Gausi
      
Beiträge: 8554
Erhaltene Danke: 481
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Do 13.01.05 21:20
Kannst du denn mit C binäre Dateien öffnen und lesen? Also eine Datei öffnen und diese in irgendeiner Form einlesen? In ein Byte-Array oder sowas? Wenn ja, musst du dich nur mit dem Format auseinandersetzen, wo und wie da die Bildinformationen gespeichert sind. Bei bmp hab ich das mal per Hand gemacht, ist nicht wirklich schwer. Wie kompliziert Tiff ist, weiss ich nicht. Aber da das AFAIK auch unkomprimiert ist (also ohne FFT oder so wie bei JPGs) dürfte das nicht zu schwierig sein.
Mit Delphi Bitmaps einlesen ist natürlich sehr bequem. Geht einfach mit MeinBitmap.loadfromfile(MeineDatei); Und mit scanline kann man recht schnell auf die einzelnen Bildzeilen eines Bitmaps zugreifen.
_________________ We are, we were and will not be.
|
|
sann 
Hält's aus hier
Beiträge: 5
|
Verfasst: Do 13.01.05 23:31
Ich arbeite mit dem ICC-win32 als C-Compiler. Das einzige, was ich bisher in C eingelesen habe, sind .dat-Files. Und dann halt die Werte entsprechenden Variablen zugeordnet und weitergerechnet. Das wird hier nicht reichen, oder? Ich hab jetzt weiter im Netz nach verwertbaren Sachen gesucht, bin aber nicht fündig geworden. Es handelt sich tatsächlich um Bitmaps!
Kann man abschätzen, wie aufwändig das Programm wäre. Wenn es nicht alzu "krass" wird, würde ich das bestimmt hinkriegen, ich bräuchte halt nur ne Grundlage. Das Programm für die Weiterarbeit mit den Histogramm-Werten hab ich ja schon geschrieben. Hab da mit Vektoren (255 Elemente) gearbeitet.
Vielleicht kannst Du mir noch nen Hinweis geben.
Vielen Dank im Voraus.
mfg sascha
|
|
Phantom1
      
Beiträge: 390
|
Verfasst: Fr 14.01.05 07:07
Es ist wirklich relativ einfach in Delphi.
Da ich etwas Zeit hatte, habe ich es mal probiert.
Hier kannst du das Programm bzw den SourceCode downloaden: [url] www.members.aol.com/...bmpanalyse.zip[/url] (179KB)
Achja, Programm arbeitet nur mit Bitmaps. Einfach programm starten, Verzeichnis auswählen und alle Bitmaps markieren. Anschließend auf start klicken.
mfg
phantom1
|
|
sann 
Hält's aus hier
Beiträge: 5
|
Verfasst: Fr 14.01.05 18:54
@ Phantom 1
Ich weiß garnicht, was ich sagen soll. Das ist total genial. Vielen, vielen Dank. Ich werd mich übers WE hinsetzen um den Code nachzuvollziehen. Und werde versuchen, mein bestehendes C-Programm einzubinden, damit am Ende alles in Einem ist.
mfg sann
|
|