FITS Dateien mit VB einlesen und Auswertungen machen

Status
Es sind keine weiteren Antworten möglich.

Papa Brummbär

Aktives Mitglied
Hallo lieben Astrofreunde,

bin mir nicht sicher ob ich hier richtig bin, aber ich versuche es mal.

Es gibt viel Themen und Anforderungen bei der Astrofotografie, Offset, Belichtungszeit usw. ich wollte ein Programm schrieben mit der man Astrorohaufnahmen "automatisiert prüfen" kann. (Starker Begriff aber so ähnlich)

Leider bin ich kein Informatiker und komme mit den Fits-Dateien nicht zu recht. Kennt sich da jemand aus?

Ich möchte mit VB eine Fitsdatei einlesen um dann nach ausgebrannten Stern, "Offset" usw. suchen. Aber ich kommen mit dem Fits-Standard nicht klar und die runtime libraries vcredist_x86.exe greifen auch nicht. (bei mir läuft Visual Studio 2017 und vcredist_x86.exe soll für 2008 sein wobei am Fits-Standard sollte sich ja nichts geändert haben).

Eigentlich möchte ich die Pixelinforamation als 16Bit Wert einlesen (grau bzw. bei meiner Kamera ASI2600MC pro als RGB).
Mit Excel habe ich schon eine Fitsdatei Byte-Weise eingelesen, Header kein Problem kommt gut raus aber das einlesen von einer kompletten Datei auf diese weise dauert ca. 1-2Stunden. Die Information die dann Vorliegt sind dann 52.185.601 Bytes, aber wenn ich durch die Pixelanzahl dividiere erhalte ich 2 Byte (2x 8Byte = 16Bit) was ja ok wäre aber was ist dann mit RGB? oder ist das anders Verschlüsselt?
Hier ein Screen-Shot Excel:

1678113970846.png


Hat da jemand Erfahrung mit und kann mir einen Tipp geben wie ich da am besten an die Sache ran gehe.

Vielen Dank vorab, bis bald und
LG und CS
Hampo
 

Anhänge

  • 1678113882406.png
    1678113882406.png
    122,2 KB · Aufrufe: 101
Hallo,

Erfahrung: nein, Tipp: ja.

Soweit ich weiss, ist FITS ein ASCII-Format. Von daher würde ich mein Script die Datei zeilenweise durchlaufen lassen und nach den für mich spannenden Zeilen suchen. Anschließend mit den Werten der Zeilen tun, was zu tun ist.

Gruß
Thomas
 
Soweit ich weiss, ist FITS ein ASCII-Format.
Nein, das ist falsch. FITS ist Binär.

Es gibt für sehr viele Programmiersprachen Bibliotheken, mit denen man FITS-Dateien einlesen kann, aber offenbar nicht für VB - das nutzt in der Fachwelt halt keiner. Der FITS-Standard ist auch gut dokumentiert, aber es dürfte ziemlich aufwändig sein, sich selbst eine Leseroutine zu schreiben. Bist Du auf VB fixiert? Mit Python kann man sehr leicht an die Daten ran, und ich kann gerne ein paar Code-Snippets posten.

Gruß
Benjamin
 
Hallo Hampo,

also am Ende ist auch das RGB Bild eine Monobild. Je nach Bayer-Matrix ist dann das 1. Pixel oben links rot, das rechts daneben grün, das darunter links wieder Grün und dann davon rechts wieder blau. Also quasi eine Matrix wie der Name schon sagt. So geht es dann über da ganze Bild weiter.

Würde, falls Kenntnisse vorhanden, auch eher auf andere Sprachen wie C++ oder ähnlich zurück greifen.

Ansonsten spannendes Projekt, aber verschiedene Sachen wie Belichtungszeit, Offset, sollten ja so schon bekannt sein oder stehen, je nach Aufnahmesoftware und Konfiguration schon im Dateinamen. Ausgebrannte Sterne zu bestimmen, ist auch nicht ganz trivial. Ein ausgebranntes Pixel ist ja nicht gleich ein Stern.
Und selbst wenn es so ist, ist das ja nicht automatisch eine schlechte Aufnahme. Eher im Gegenteil, man nimmt das ausbrennen von Sternen in Kauf des Signals des Hauptobjekts wegen.


Grüße,
Alex
 
Hallo Leute/ Astrofreunde,
vielen Dank für die schnelle Antworten.
Also in VB kenne ich mich noch etwas aus, aber die Welt verändert sich in der Informatik sehr schnell und wenn man das nicht täglich macht ist es eben schwer mal neben bei mal schnell C++ zu machen.
Habe mir schon oft vorgenommen C++ zu lernen aber Faulheit siegt, aber jetzt ist VB schon fast abgehängt. Python habe ich angefangen aber nur wegen der AllSky Kamera Sache.

Ich wollte die Werte aus den Dateien heraus lesen, da wenn man sie aus den Monitor-Pixeln herausliest sind sie nur noch im 0-255 /8-Bit RGB Format dann hat man keine 16Bit Informationen mehr.

Hallo Benjamin, das mit Python würde mich schon interessieren, kannst Du mir da mal was senden? Dann kann ich mir das mal ansehen. Auf der Seite war ich auch schon leider kein VB wie schon richtig angemerkt.

Hallo Thomas Zeilenweise einlesen: ob ich die info als ganze Zeile oder Byte-Weise einlese ist eigentlich egal. (Zeilenweise geht das einlesen schneller aber) Wenn man Byte-Weise einliest hat man die Einzelinfo schon. Beim Zeilenweise einlesen, muss man erst die Stelle finden, diese wäre dann als String, danach muss man das Stringzeichen wieder in einen Zahlenwert bzw. Byte-Wert umwandeln. Ist in der Regel aufwändiger als gleich Byte weise einzulesen.

Hallo Alex, ja klaro, ob R, G oder B ist egal, aber so liegen die Daten leider nicht in der Datei. Wenn es so wäre hätte ich die Nuss schon geknackt. Bei dem Datensatz auslesen fehlt einfach 2/3 der Info und ich bin mir jetzt nicht sicher ob Fits das Dateiendeinfo als Marker bzw. Trennzeichen benutzt und nach dem Dateiende es noch weiter geht. Hatte das schon einmal früher, da haben sich die Viren und Spezialinfos versteckt gehabt. Heutzutage ist das als Virus zu plump.

Also Nochmals vielen Dank für die Infos, Benjamin über ein Paar Beispiele würde ich mich wirklich freuen. Wenn es so klappt wie ich es mir Vorstelle nehme ich auch gerne Sonderwünsche entgegen.

bis bald LG und CS
Hampo
 
Hallo, schau ich mir gleich mal an, danke! LG und CS Hampo

Hallo Klaus, klaro, aber wenn man eben nur eine Tafel und Kreide hat was dann? Mach gerade nebenbei Spyder auf den PC aber ich bekomme das astropy Modul mit Spyder nicht "verknüpft", der findet es nicht obwohl über miniconda3 und powershell alles installiert wurde. Wenn nicht werde ich wohl Anaconda wie empfohlen installieren, wobei man ja eigentlich unter Spyder irgendwo den Pfad eingeben können müsste. Nun ja ich muss leider Schluss machen.

Aber vor dem ins Bett gehen noch ein dickes Dankeschön!!!!!!!! Top. Bin schwer begeistert.

Mal sehen vielleicht komme ich morgen weiter
Vielen DANK an ALLE bis bald
LG und CS
Hampo
 
Hallo Hampo,

vielleicht guckst Du mal, ob es auf der Kommandozeile geht:
python
>>> import astropy

Falls nicht, kannst Du mit "conda list" alle installierten Pakete anzeigen. Taucht astropy da auf?
 
Guten Morgen @Papa Brummbär,

wie wäre es mit VB.NET, da wäre der Sprung von VB nach VB.NET nicht so groß, wie zu C++. mit VB:NET kannst Du alle .NET Bibilotheken nutzen (nur entscheiden zwischen .NET framework, wie ASCOM nutzt, oder .NET Core - heißt mittlerweile nicht mehr core) In .NET gibt es viele Möglichkeiten FITS Dateien zu lesen/schreiben/etc, zum der N.I.N.A ist Quelloffen, da könntest Du spicken, danngibt es noch eine menge an FITS Bibliotheken, schaue mal bei Github. Ich habe mal mit CSharpFits experimentiert, ist aber meines Wissens veraltet.
Vielleicht taugen folgende:

CS Thomas
 
Ich möchte mit VB eine Fitsdatei einlesen um dann nach ausgebrannten Stern, "Offset" usw. suchen
Hallo Hampo,

dein Ehrgeiz dieses technische Problem zu lösen ist lobenswert und macht auch Spaß wenn man das Ziel erreicht.

Aber was mich interessiert, was möchtest du auswerten, was eigentlich Astroprogramme können? Ausgebrannte Sterne erkenne ich z.B. in der Linear Ansicht und alle technischen Informationen finde ich im FITS-Haeder.
 
Hallo Benjamin,

top Job, vielen Dank aber so einfach ist es dann doch nicht manche PCs haben wohl ein Eigenleben.
Ich musste alles was alt war (Spyder3 usw.) und die neue Anacondainstallation vom PC erneut deinstallieren, danach nur Anaconda installieren. Jetzt läuft schon alles (glaube ich). Jetzt lässt sich auch Anaconda Navigator starten.

Habe dann aus Anaconda Navigator Spyder gestartet und die ersten Zeilen eingegeben, läuft auch.

Als Test habe ich ein RGB.fits genommen, und man Sieht auch die drei Daten-Blöcke gehe davon aus dass es die RGB-Kanäle sind.

# Display mean, median and RMS of 3D array, assuming first axis has length 3
print(np.mean(phdu.data), axis=0)
print(np.median(phdu.data), axis=0)
print(np.std(phdu.data), axis=0)

erzeugt z.B. noch einen Fehler versteht axis nicht muss ich noch sehen woran das liegt. Jetzt muss ich mich nach und nach in das Thema einarbeiten und schauen wie ich damit klar komme.

Nochmals vielen Dank das hat mir sehr geholfen.


Hallo Thomas,

vielen Dank für den Tipp, werde ich mir sicher anschauen, aber erst möchte ich ein Stück mit Python voran kommen. Ich muss aus der VB Ecke raus da ich schon seit einigen Jahren gemerkt habe, dass außer Excel-Makroumgebung nix mehr unter VB geamcht wird. Als es mit den PCs los ging habe mit GWBasic angefangen, Fortran und Pascal. Mit Win3.11 bin ich dann auf VB umgestiegen. War damals ein schöne Sache. Ich habe immer ein paar kleine Helferlein programmiert. Aber als C kam ging es mit VB abwärts, C war eben schneller und mächtiger. Damals kostete C ca. 700DM das hat man nicht eben so für ein Programm ausgegeben. Für VB unter Win3.11 habe ich damals ca. 150DM gezahlt.

Jetzt ist Zeit etwas Python zu lernen (da ich auch einiges für den Raspberry Pi schreibe), danach schau ich mir Deinen Vorschlag an. Man will ja nicht dumm von dieser Welt gehen.

Auch Dir vielen Dank für Deine Unterstützung.


Hallo Harald,

klaro gibt es viele Infos in vielen Ecken oder Programme. Ich habe nur festgestellt sobald man von etwas Abhängig geworden ist und dann sich etwas ändert steht man auf einmal ohne etwas da. Auch habe ich keine Lust mehrere Programme zu bedienen um zum Ziel zu kommen. Das gefällt mir an N.I.N.A alles in einem Ding.
Natürlich nur wenn alles läuft, sonst geht nix.

Ich wollte aber auch einiges über den Astrohintergrund erfahren. Gerade wie man die Offsetgrenze gut festlegt oder ab wann sich die Bildinfo vom Rauschen gut abhebt oder beeinträchtigt wird. Ich habe einiges aus dem Netzt gelesen und musste feststellen, das sich meine Rohdaten nicht so verhalten. Da rechnet man vor, das Rauschverhältnis Signal .... eine Sinnvolle Belichtungszeit von nur max. ca. 60s zulassen. Konnte aber bei meinen Aufnahmen zwischen 1s und 360s (habe noch nie länger belichtet) keinen großen unterschied sehen können. So etwas Händisch auszuwerten benötigt immer viel Zeit und wird an der eine oder anderen Stelle ungenau. Beispiel Wenn ich eine Aufnahmereihe starte und gleich zu beginn 10 - 15mn. für eine Auswertung opfern kann dann wäre das toll. Denn seit Sept. 22 hatte ich keine guten Bedingungen konnte keine Astroaufnahmen machen. Und um das Optimum schnell zu erreichen wären ein kleines Hilfsprogramm nicht schlecht. In NINA gibt es auch so etwas einen Belichtungsassistenten aber das alleine will ich ja nicht. Ggf. möchte ich noch auf längere Sicht auch einige Berechnungen anstellen. Ist ja Hobby wenn man keine Aufnahmen machen kann muss man ja was anderes machen.


Allen Astrofreunden einen herzlichen DANK. Bin schwer begeistert. Ich werde jetzt versuchen einen kleinen Schritt vorwärts zu kommen. Sollte ich Probleme haben melde ich mich erneut.

Sobald etwas vorzeigbar ist oder ich ein Ergebnis habe lade ich es "hoch", bis bald
LG und CS
Hampo
 
Als Test habe ich ein RGB.fits genommen, und man Sieht auch die drei Daten-Blöcke gehe davon aus dass es die RGB-Kanäle sind.

# Display mean, median and RMS of 3D array, assuming first axis has length 3
print(np.mean(phdu.data), axis=0)
print(np.median(phdu.data), axis=0)
print(np.std(phdu.data), axis=0)
Was zeigt
Python:
print(phdu.data.shape)
bei Dir?

NumPy hat am Anfang wirklich eine steile Lernkurve. Sobald Du ein bisschen mit den Python Basics warm geworden bist, würde ich Dir ans Herz legen, Dir auf der NumPy Webseite das Anfänger-Tutorial durchzulesen. Das hat mir damals schon ein gutes Stück weitergeholfen.
 
Ah, ich hatte einen Tipp- und einen Denkfehler. Das "axis" muss vor die innere Klammer verschoben werden und man muss die Achsen angeben, über die gemittelt werden soll, also:
Python:
print(np.mean(phdu.data, axis=(1, 2)))
print(np.median(phdu.data, axis=1, 2))
print(np.std(phdu.data, axis=1, 2))
Das sollte dann der Mittelwert (Median, RMS) von jedem Farbkanal rauskommen, also drei Werte jeweils.
 
gemacht
print(np.mean(phdu.data, axis=(1, 2)))
print(np.median(phdu.data, axis=(1, 2)))
print(np.std(phdu.data, axis=(1, 2)))

erhalten
[0.00812462 0.00803883 0.00799836]
[0.00784275 0.00784046 0.00784709]
[0.00837688 0.00687268 0.00626791]

Top geht ratz fatz super schnell und einfach echt mächtig das NumPy-Tool. Jetzt muss ich mich einarbeiten und dann kann es los gehen
Vielen Dank!!
 
@Papa Brummbär: ok kann ich verstehen. ich habe 1983 o_O mit dreizehn Jahren angefangen in Basic zu programmieren, dann über (Turbo) Pascal, Lisp/Scheme, C zu Java und C# gewandert (Exoten habe ich ausgelassen ;-)). Python habe ich nur Hobby-mäßig eingesetzt, mit Java/C# verdiene ich hauptsächlich meine Brötchen.
Mein Vater (> 80) programmiert aber immer noch in VB (auch astronomische Software), geht also ;)

Ich wünsche Dir viel Erfolg!
CS Thomas
 
Hallo Astrofreunde,

so es ist schon eine kleine Weile vergangen und ich sehe nur noch Webseiten und Code. Ich wollte Euch einen Statusupdate geben und über meine Erfahrungen kurz berichten.

Leider hat vieles nicht so geklappt wie ich es mir Vorgestellt habe und auch nicht so wie es so oft auf diversen Webseiten berichtet wird. Oft liegt es natürlich an meinem Quereinstieg und leider auch zu oft daran, dass ich mit diesem Thema auch ein fürs "einfache Programmieren" ein schweres Thema genommen habe.

Leider haben viele Programme (IDEs) nicht den Funktionsumfang den ich benötige und somit können diese nicht genommen werden. Spyder3, Anaconda und einige Webtools haben an einigen Stellen nicht mitgespielt und auch Nachfragen in Foren konnte keine echte Abhilfe bei Problemen schaffen. Nach viele Installationen und Deinstallationen habe ich um meinen Rechner zu schonen den Vorschlag von Thomas aufgegriffen und bin weg von Python und wieder zu Visual Basic zurück gegangen. Da ging natürlich einiges schneller aber die Fits-Bearbeitung leider viel zu langsam. So war ich jetzt in der Zwickmühle. Für Python nicht erfahren genug und VB zu schwach.

Da bin ich nochmals nach einer guten IDE für Python auf die Suche gegangen und bin dann bei PyCharm gelandet. Das Teil macht zwar hier und da ein paar zicken aber in PyCharm lässt sich mal bis jetzt jedes benötigte Modul installieren und es läuft dann auch.

Jetzt habe ich zwei Ebenen die ich laufen lassen kann und kombiniere beide Programme miteinander. In VB mache ich die Oberfläche und Programmführung und in Python lasse ich die Rechenarbeit und Bildbearbeitung laufen. So denke ich (noch mit einigen Übergabeproblemen) komme ich der Sache ein gutes Stück näher.

Mann kann schon über den Windows-File-Manager eine Fitsdatei auswählen und diese dann über Pyhton erstmals in eine png-Datei wandeln und im VB darstellen. Somit habe ich die visuelle Darstellung um Selektionen vorzunehmen und kann dann die nötigen Eckdaten zur Berechnung erneut an Python senden.
Wobei das an Python senden noch übertrieben ist ich lege die Info in einer txt-Datei ab und rufe dann über VB ein PythonProgramm auf dass dann die Eckdaten aus der txt-Datei liest. Nicht gerade Perfekt aber es läuft. Sobald noch einige Feinheiten geklärt sind, kann ich dann an die eigentlichen Programmelemente gehen.

Hier ein Screenshot von der ersten VB Testumgebung: Aus VB wurde die Fits-Datei selektiert und die Info an das Python-Programm übergeben welches über Python311 ausgeführt wurde, mit astropy wurde die Fits-Datei aufgerufen und über matplotlib die png-Datei erzeugt, danach wurde die png-Datei in VB geladen:
Man hat schon die Astrogesamtansicht mit einem Maus-Zoom-Fenster (also wenn man mit der Maus über das Bild fährt bewegt sich die Zoomansicht mit). Da kann man auch schon über den Schieberegler den Zoomfaktor einstellen

AstroProgII.png


Nach der Dateiauswahl dauert der Bildaufbau ca. 3-5s

Leider haben alle Pythonmodule so ihre Eigenheiten und als Anfänger steht man da und wundert sich warum das eine geht und das andere nicht. z.B. habe ich Stunden mit tkinter verbracht um gegen Ende herauszufinden dass mit tkinter eigentlich nur ein Fenster gesteuert werden kann. Hier meine Testumgebung:

tkinter.png

Wenn mit tkinter ein Fenster geöffnet wird kann ein Bild hinein geladen werden. Sobald man mehrere Fenster geöffnet hat funktioniert das nicht mehr.
Da war ich eigentlich schon fast am Ziel und musste aufhören, da ich keine Bilddatei geladen bekommen habe.

Auch kann das Fits-Modul meine finalen (gestackten) Bilddaten nicht öffnen (woran das liegt weis ich noch nicht). Rohdaten also direkt aus der Kamera geht aber andere gehen nicht?? Das hat mich auch eine menge Zeit gekostet weil ich es am Anfang mit den gestackten Fits-Daten alles versucht habe.

Ja das Problem sitzt vor dem PC aber vieles bekomme ich in der kurzen Zeit nicht mehr so schnell in meinen Kopf. Früher wäre das sicher etwas schneller gegangen aber damals war auch der Verantwortungsumfang nicht so groß.

Aber für die kurze Zeit bin ich über den kleinen Erfolg doch ganz froh. Sobald es wieder etwas zu berichten gibt stelle ich es erneut hier rein.

Bis bald und hoffentlich mal besseres Wetter ich bin mir nicht mehr sicher ob ich überhaupt noch Astrofotos machen kann.

LG und CS
Hampo
 
Status
Es sind keine weiteren Antworten möglich.
Zurück
Oben