AVI mit Zeitstempel aus dem FITS File erstellen

  • Hallo zusammen


    Kennt jemand ein Programm mit dem man ein Filmchen aus FITS Dateien erstellen kann und gleichzeitig den Zeitstempel aus dem jeweiligen Bild (z.B. DATE-OBS und TIME-OBS aus dem FITS Header) als laufender Zeitstempel im Film einblenden lassen kann? Also so, dass wenn man den Film anhält und ein Einzelbild anschaut gleich erkennen kann, wann es aufgenommen wurde. Konkreter Anwendungszweck: All-Sky Kamera mit Film aus Einzelbildern einer ganzen Nacht zur Meteorüberwachung.


    MaxIm DL bietet zwar die Möglichkeit aus vielen FITS ein AVI zu erstellen, der Zeitstempel kann dort aber nicht automatisch direkt ins Bild eingefügt werden. In FITSWORK kann man bei Einzelnbildern diese Info einblenden lassen (Bearb. > Weiter Funktionen > Text+Rahmen...), jedoch lässt sich dies nicht für ein AVI automatisieren, bei dem beispielsweise 1000 Bilder einzubinden sind.


    Gruss
    Stefan

  • Hi Stefan,


    Wenn du nichts gegen ein bischen Programmieren hast, würde mir da schon was einfallen... ein kurzes Python skript würde die Sache regeln... vermutlich weniger als 20 Zeilen Code. Damit würde man dann die Fits Dateien laden, den Text aus dem Header ins Bild packen und dann speichern, sei es als Fits, JPG, PNG... Diese einzelbilder kann man dann z.b. mit ffmpeg in ein video konvertieren.
    Wenn du interesse daran hast, sag bescheid, ich könnte dir auch den code schreiben, ist kein Aufwand :) Müsstest dir halt nur python und ein paar packages dafür installieren.

  • Hallo Arp


    Vielen Dank für Dein Angebot. Ich denke, das wäre super, wenn Du das machen könntest. Das mit Python ist kein Problem. Ich habe selber schon mit dem Raspberry Pi herumgespielt und dazu Python installiert (um z.B. SQM Werte ohne PC auslesen und speichern zu können). Jedoch habe ich nur rudimentäre Programmierkentnisse (insbesondere in Java) und wüsste momentan nicht, wie man in Python oder Java FITS Bilder liest und bearbeitet.


    Die Anforderung wäre etwa die folgende:


    - Lies ein FITS Bild und den Header. Dabei wäre es sinnvoll, wenn man den Background und Range des FITS Bildes einstellen könnte, damit die Darstellung helligkeitsmässig passt (z.B. mit zwei leicht veränderbaren Variablen im Code). Ich denke, diese Werte könnte dann für alle Bilder des Durchgangs übernommen werden.
    - Schreibe den Dateinamen mit der Aufnahmezeit (aus dem FITS-Header) mit weisser Schrift direkt ins Bild, in den unteren Randbereich
    - Speichere das Bild als JPG ab
    - Wiederhole dies für alle FITS Files in einem bestimmten Directory


    Weitere Details wie Angabe der Zeitzone oder allenfalls weitere einzublendenden Header-Daten könnte ich dann auch selber im Code noch anpassen.


    Ich denke es würde auch Sinn machen, wenn man so ein Python Tool anschliessend öffentlich machen würden. Vermutlich dürfte dies sicher noch andere interessieren. Denn: FITS ist ja in astronomischen Kreisen ein gängiges Format und einen Zeitstempel aus dem FITS Header auszulesen und einzublenden scheint mir auch nicht so eine exotische Anwendung. Da wäre sicher noch der eine oder andere froh um ein kleines Tool.


    Ein Kollege von mir hatte vor noch nicht langer Zeit ein Plugin für den Firefox Browser geschrieben mit dem man FITS Bilder direkt im Browser anzeigen kann (bisher habe ich sowas ebenfalls noch nicht im Netz gefunden). Das Teil ist wirklich Gold wert, wenn man mal schell FITS Bilder aus einem Directory im Web anzeigen lassen will und es bietet dort auch die Möglichkeit den Background und Range einzustellen. Ich wollte ihn aber nicht schon wieder mit einer weiteren Programmieraufgabe bemühen ;)


    Gruss
    Stefan

  • Hallo Stefan,


    das mit dem Firefox-Plugin würd mich jetzt mal interessieren [:)] Ist das öffentlich zugänglich? Auf die Schnelle hab ich bei den Firefox-Addons nichts gefunden.


    Viele Grüße
    Caro


    PS. Ich hätte ein Progrämmchen was das tut was du brauchst, aber es ist in IDL, und damit eher unbrauchbar zur Weiterverbreitung wenn man sich mit IDL nicht auskennt.

  • Servus Stefan,


    <blockquote id="quote"><font size="1" face="Verdana, Arial, Helvetica" id="quote">Zitat:<hr height="1" noshade id="quote"><i>Original erstellt von: Mondmaus</i>
    <br />
    Kennt jemand ein Programm mit dem man ein Filmchen aus FITS Dateien erstellen kann und gleichzeitig den Zeitstempel aus dem jeweiligen Bild (z.B. DATE-OBS und TIME-OBS aus dem FITS Header) als laufender Zeitstempel im Film einblenden lassen kann? <hr height="1" noshade id="quote"></blockquote id="quote"></font id="quote">
    Tja, für FITS kenn ich nichts fertiges, aber für alle anderen Formate als FITS kann das Xnview, also z.B. das Speicherdatum oder beliebige EXIF-Daten in das Bild einblenden.
    Einen Film aus Einzelbildern kannst du mit VirtualDub erstellen

  • Hallo Caro


    Öffentlich ist es eigentlich nur bedingt zugänglich (wenn man weiss wo), oder zumindest ist es nicht so öffentlich, dass es in einem Verzeichnis von Plugin oder Addins aufgeführt wäre. Das FITS Plugin läuft auf Firefox Browsern unter Mac und Windows - unter Linux habe ich dies bisher noch nicht getestet, sollte aber auch gehen. Weisst Du, kann man solche kleine Tools auf astrotreff irgendwo in einen öffentlichen Bereich hinterlegen und es für alle verfügbar machen? (ähnlich wie der Uploadbereich für Fotos)


    Mit IDL kann ich in der Tat nicht viel anfangen ;)


    Gruss
    Stefan

  • Hi Stefan,


    Erste Version ist fertig. Sollte auch unter Windows funktionieren.


    Das ist relativ primitiv. Es öffnet die Dateien, packt den Text drauf, und speichert wieder. Die Darstellung erfolgt linear von dem minimal bis maximalwert des Bildes. Kannst ja mal ausprobieren und Rückmeldung geben :)


    Die einzelnen jpg dateien kannst du z.b. mit virtualdub oder ffmpeg zu einer avi kombinieren.


    Ich habe festgestellt das von Registax gespeicherte fit dateien damit nicht kompatibel sind. Pyfits kann das nicht öffnen. Ich hab es mit fit dateien ausprobiert die von Fitswork erstellt wurden, damit hat es problemlos funktioniert.

  • Hallo Arp


    Besten Dank, das ging aber fix! Ich habe mir soeben folgende Packages heruntergeladen und nebem Python 3.3 installiert (nach jedem Durchlauf mit Fehlermeldung habe ich ein weiteres installiert). "glob.py" war schon standardmässig vorhanden:


    matplotlib-1.3.1.win32-py3.3.exe
    numpy-1.8.1-win32-superpack-python3.3.exe
    pyfits-3.2.2.win32-py3.3.exe
    pyparsing-2.0.2.win32-py3.3.exe
    python-dateutil-2.2.win32-py3.3.exe
    six-1.6.1.win32-py3.3.exe


    Danach erscheinen beim Aufruf des Skripts keine Fehlermeldung mehr wegen fehlender Packages und nach wenigen Sekunden erscheint wieder der Prompt. Es sind aber keine neuen Files (*.jpg) im Verzeichnis oder sonstwo auf der Platte zu finden. Gibt es eine Möglichkeit das Skript im Debug Modus laufen zu lassen, um zu prüfen, ob jeder Einzelschritt erfolgreich war?


    Gruss
    Stefan

  • Hi Stefan,


    befindet sich das Skript im richtigen Verzeichnis und stimmt die Endung "fit"?


    Du könntest nach

    Code
    files = glob.glob('*.'+endung)

    einfach mal mit

    Code
    print(files)

    alle gefundenen Dateien ausgeben lassen. Ist die Ausgabe leer, dann stimmt wohl was mit dem Dateipfad oder der -endung nicht.


    Gürße, Marcus

  • Hallo Marcus


    Ja, beim Einbau von print(files) erscheinen die zwei Testfiles mit der Endung *.fit. Wenn ich aber Python auf der Kommandozeile laufen lasse, dann sehe ich am Ende vom Traceback noch ein Fehler:


    File "c:\Python33\lib\site-packages\matplotlib\backend_bases.py", line 2070, in _get_print_method
    '%s.' % (format, ', '.join(formats)))
    ValueError: Format "jpg" is not supported.
    Supported formats: eps, pdf, pgf, png, ps, raw, rgba, svg, svgz.


    Vielleicht fehlt hier doch noch ein weiteres Package?


    Gruss
    Stefan

  • Hey Stefan,


    ersetze mal die Dateiendung .jpg bei [code]plt.savefig(str(i).replace('.'+endung,'')+"_time.jpg",dpi=dpi)[code] gegen .png
    Matplotlib kann wohl keine JPGs erzeugen (eventuell fehlt da ein Paket).


    Grüße, Marcus

  • Hallo Marcus
    Ja, nach dieser Aenderung funktioniert das skript. Aber natürlich mit dem Nachteil, dass die png Einzelbilder z.T. recht gross werden.
    Zwei Fehler mit dem falschen Datenfeld (TIME-OBS anstatt DATE-OBS) und dem Beginn der Schrift ausserhalb des Bildes (center anstatt left Alignment) habe ich noch behoben.


    Gruss
    Stefan

  • Hallo Stefan,


    Sorry, ich vergaß dazu zu schreiben das ich das mit Python 2.7 gemacht habe. Da hat alles funktioniert und Matplotlib kann da auch zumindest jpg schreiben. Zumindest unter Linux. Ich hab auch das Gefühl das in der Python Community auch eher 2.7 den 3er Versionen bevorzugt wird.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!