Sterrekunde

Python met beeld in pasformaat

Python met beeld in pasformaat


We are searching data for your request:

Forums and discussions:
Manuals and reference books:
Data from registers:
Wait the end of the search in all databases.
Upon completion, a link will appear to access the found materials.

Ek probeer 'n Python-program skryf wat die volgende sal doen: neem 'n beeld in pasformaat en 'n reg-lêer met 'n lys van streke in die lug, en bepaal watter streke in die lys binne die pasvorm is en watter buite. Dit kan visueel met ds9 gedoen word, maar ek het geen idee hoe ek toegang tot die pas-lêer kan kry en die koördinate van die grens van die beeld kan bepaal nie.

Enige raad? Ek weet nie veel oor die pasformaat nie, maar dit sal nie oopmaak met 'n gewone teksredigeerder soos gedit nie.

Wysig: Nou het ek 'n meer spesifieke probleem. Ek het vier punte in die lug wat gedefinieer word deur hul afwyking en regter hemelvaart. Is daar 'n eenvoudige manier om na te gaan of hierdie koördinate behoort aan die beeld wat in die pas-lêer gekodeer is?

Wysig 2: Dit is wat ek sien as die kop van my pas-lêer:

Ek is geen kenner van fisika nie, maar net 'n wiskundige, en ek weet dus nie hoe ek hiervandaan moet voortgaan nie. Enige hulp sal waardeer word ...

Wysig 3: Iets blyk te verander as ek die terminale in die volskermmodus plaas. Is daar nuttige inligting hier?


Ek gebruik Astropy persoonlik, spesifiekastropy.io.fitsAlhoewel ek nie 'n ervare gebruiker van FITS-lêers is nie en ek nie die uitleg daarvan ken nie. As 'n voorbeeld van 'n kode, laai ek gereeld data uit FITS-lêers met behulp van

van astropy.io invoer pas data = pas.open ('data_file.fits') [0] .data

Meer inligting vind u in die dokumentasie oor die FITS-module.


  1. Daar is geen duidelike antwoord hierop nie, dit hang alles af van u spesifieke lêer, waarvan ons natuurlik niks weet nie. Die inligting wat u benodig, sal waarskynlik wel in die pas-opskrif bestaan ​​(as dit hoegenaamd bestaan). Ek neem aan dat u u pas-lêer lees met behulp van dieastropiepakket aangesien u Python gebruik (indien nie, kyk dit beslis). As dit die geval is, kan u alles in die AstroPy-dokumentasie lees oor hoe u die pas-lêeropskrifte kyk. U moet na die koplêers kyk en deursoek om te sien of die inligting wat by die paslêer is presies weet waar in die lug die prentjie is.
  2. Geen beeld gaan 'sirkelvormig' wees nie. Beelde word op vierkante CCD's geneem en lewer dus vierkantige beelde van die lug. 'N' Gewone 'beeld sal vierkantig wees.

Daar is ook 'n sagtewarepakket, genaamd DS9, wat ek gebruik om die prent sowel as die koptekst te sien. Ek redigeer die koptekste in Python met behulp van astropie.


Python met beeld in pasformaat - Sterrekunde

Ek bied 'n eenvoudige Python-kode aan om FITS-beelde te skaal met behulp van lineêr, sqrt, pow, log10, asinh-funksie, zscale, logistieke verspreiding asook histogram-gelykmaking, en stoor dit dan in beeldlêers soos PNG. Die kode bevat ook eenvoudige metodes om lugvlakke te meet en om voldoende reekse van pixelwaardes vir die skaalroetine te vind. Ek hoop dat die kode nuttig is in u werke. Ek verwelkom altyd kommentaar. Neem kennis dat hierdie Python-kodes word as voorbeelde aangebied eerder as 'n volledige sagtewarepakket. Die img_scale.py kan maklik in u eie kode opgeneem word vir verskillende skaalmetodes. In die gegewe voorbeelde kan u uitvind hoe verskillende Python-grafiese modules (SciPy, Matplotlib en Python Image Library) gebruik kan word om FITS-lêers na konvensionele beeldlêers om te skakel.

Die beeldskaal word in die module-lêer gegee img_scale.py. Daar is verskeie Python-kodes wat RGB-kleurbeelde genereer en enkelband-beelde genereer. Lees asseblief Lupton et al. (2004) oor hoe om RGB-beelde en skaalmetodes te produseer, en Lupton et al. (1999) oor die asinh-skalering. As u op soek is na algemene inleiding tot hierdie probleem, kan u die YouTube-videoverklaring "Hoe wetenskaplikes foto's van die ruimte inkleur" nuttig vind. Die kode wat hier aangebied word, is nie vir interaktiewe produksie van beelde nie. Ek stel ook voor dat mense STIFF nagaan, wat baie nuttig is vir die vervaardiging van hoë kwaliteit prentlêers, APLpy en dmimg2jpg in CIAO, wat veelvuldige skaalverhoudings ondersteun om RGB-beelde te produseer. f2n.py is ook 'n eenvoudige nuttige hulpmiddel wat in Python geskryf is om FITS-beelde na PNG-lêers te omskep met behulp van Python Image Library.

Omskakeling van astronomiese beelde na konvensionele beelde bestaan ​​uit twee stappe wat algemeen gebruik word in toonkaarte met beelde met 'n hoë dinamiese reeks. In die eerste stap kan u die pixelwaardes van FITS-beelde verander na waardes tussen 0,0 en 1,0 deur gebruik te maak van img_scale.py. In die tweede stap word hierdie waardes in 256 intervalle vir 8bit-beelde verdeel en dan as grafiese lêers gestoor.

Bogenoemde lêer bevat voorbeeldkodes en FITS-lêers as voorbeelddata, sowel as img_scale.py. Die kode benodig NumPy. PyFITS is ook nodig om FITS-lêers te lees. Die kode build_rgb_w_asinh_SciPy.py gebruik SciPy om beeldlêers te produseer. Intussen gebruik die kode build_single_matplotlib.py en build_rgb_w_asinh_matplotlib.py Matplotlib in plaas van SciPy. As u wil gebruik Python-beeldbiblioteek (PIL) in plaas van Matplotlib en SciPy, merk build_rgb_w_asinh_PIL1.py of build_rgb_w_asinh_PIL2.py. As u kleurkaarte vir 'n enkelbandbeeld wil verander deur Matplotlib te gebruik, soek die tabelle vir die kleurkaarte (1D en 2D) na. Die volgende is voorbeeldfoto's. By die vervaardiging van die volgende foto's is die pixelwaardes van die FITS-lêers afgeskaal tot sommige reekse wat gelykop in 256 intervalle verdeel word. Pixelwaardes vir beelde word toegeken as die naaste waarde vir die 256 intervalle. U stel dalk belang in Matplotlib-kleurkaarte om 'n enkelbandbeeld te visualiseer deur Matplotlib te gebruik. U sal dalk ook belangstel in interaktiewe instrumente wat FITS-beelde met 'n hoë dinamiese reeks kan lees en dit na ander formate kan omskakel. DS9 en Aladin is bekende instrumente in die sterrekundegemeenskap. ImageJ kan ook vir hierdie doel gebruik word met baie beeldontledingsmetodes.


asinh (beta = 1.0)


asinh (beta = 5.0)


asinh (beta = 20.0)


RGB tipe 1


RGB tipe 2


lineêr


asinh (beta = 1.0)


asinh (beta = 5.0)


asinh (beta = 20.0)


histogram-gelykmaking


logistieke verspreiding


asinh (RGB) voorbeeld 1


asinh (RGB) voorbeeld 2


RGB tipe 1


RGB tipe 2


RGB tipe 3


Python met beeld in pasformaat - Sterrekunde

'N FITS-lêer (op band of skyf) bestaan ​​uit 'n stel koptekstrekords gevolg deur 'n stel datarekords. Alle pas-rekords is 2880 byte lank (gelyk aan 36 80-byte-kaarte), maar op bandopname kan blokgroottes gebruik word, wat 'n integrale veelvoud hiervan is om die opbergingsdoeltreffendheid te verhoog. 'N Blokgrootte van 10 (28 800 byte-rekords) is algemeen. Alle data word as 8 bis-woorde geskryf (360 woorde per rekord).

  • EENVOUDIG: = T is 'n eenvoudige FITS-lêer, andersins F
  • BITPIX: aantal stukkies per woord in die data
  • NAXIS: aantal asse in die skikking. 0 dui aan dat geen data volg nie. As NAXIS & gt 0 moet 'n reeks sleutelwoorde NAXISn volg. waar n tussen 1 en NAXIS is, insluitend, en gee die lengte van elke as van die skikking.
  • ongetekende 8 bis heelgetal (BITPIX = 8)
  • Heelgetal met 16 bis (BITPIX = 16)
  • Twee bisse van 32 bis komplementeer heelgetal (BITPIX = 32)
  • 32 of 64 bis IEEE-drywingspuntformaat (BITPIX = -32 of -64)

FITS-lêers kan uitbreidings insluit. 'N Mens vind dikwels dat 'n enkele FITS-lêer gebruik word om 'n aantal datatabelle of beelde op te slaan. In hierdie geval moet die kop die lyn bevat
Elke uitbreiding is 'n aparte FITS-lêer, met sy eie kop- en data-afdeling. Sommige FITS-lesers (soos dit in IRAF) kan nie uitbreidings hanteer nie.

FITS-formaat word nie net vir beelde gebruik nie, maar ook vir tabelle-data. As die XTENSION-kopwoord = "BINTABLE" is, is dit 'n binêre tabellêer. FITS ondersteun ook ASCII (teks) tabelle.

Lees u FITS-beelde

Gebruik die SXPAR funksie om koptekste te onttrek. As die naam van die doelwit byvoorbeeld in die pas-opskrif met die trefwoord 'OBJECT' gestoor word, kan u dit uittreksel in die stringveranderlike teiken as doelwit = sxpar (h, 'object') let op dat teiken is 'n arbitrêre veranderlike naam. Die tweede argument aan SXPAR is 'n string wat ooreenstem met die toepaslike sleutelwoord. As die trefwoord nie voorkom nie, SXPAR gee 'n waarde van 0.

Let daarop dat die hoof FITS-lêer nie weet hoeveel uitbreidings volg nie. Selfs al pas die sleutelwoord EXTEND = T, hoef daar geen uitbreidings te wees nie. As u 'n uitbreiding probeer lees wat nie daar is nie, sal u 'n waarskuwingsboodskap kry.

Begin met READFITS om 'n binêre tabeluitbreiding te lees.
TBHELP, h, waar h die kop van die uitbreiding is, sal u vertel wat in elke kolom in die tabel is. TBINFO, h, s sal die inligting in 'n struktuur plaas.
Gebruik die funksie om kolom i te onttrek x = TBGET (h, d, i).

TESS astrocut-beelde word gestoor as 'n reeks eendimensionele data in 'n binêre tabeluitbreiding. U sal die data moet herformateer met behulp van die inligting in die opskrif (die grootte van die snit wat u aangevra het).

Prosedures vir die lees van ASCII Fits-tabelle begin met die letters FT.

Dokumentasie vir die FT * en TB * -roetines kan gevind word in die IDL Astronomy Users Library.

PYTHON

En lees dit in die pas-lêer met behulp van die funksie pas.open ().
hdul = fits.open (fits_file) # hdul.close () sluit die lêer.

hdul is die lys van alle koptekst-eenhede in die lêer. Om toegang te verkry tot die verskillende uitbreidings van die FITS-lêer, gebruik u die onderskeie indeks vir die uitbreiding. Om die lys met koptekst-eenhede wat in die FITS-lêer gestoor is, af te druk:
hdul.info ()

En om toegang tot die data en koptekst van elke uitbreiding te kry: | br> data = hdul [1] .data # Die data van uitbreiding 1 van die FITS-lêer
hdr = hdul [1]. header # Die opskrif van uitbreiding 1 van die FITS-lêer

Die opdatering van die koptekstwaardes kan gedoen word deur die geassosieerde sleutelwoorde soos volg te gebruik:
hdr ['targname'] = 'NGC121-a' # Die waarde van die trefwoordnaam is verander na die string 'NGC121-a'


Speel met FITS-lêers

Dieselfde lesing is nou in die Notebook-formaat, sien daar: http://python-astro.blogspot.mx/2014/09/interacting-with-files-reading-writing.html

Wat is die FITS-formaat?

Die FITS-formaat is die gewildste manier om astronomiese data te stoor en uit te ruil. Die lêers is georganiseer in eenhede wat elkeen 'n leesbare opskrif en 'n gegewens bevat. Hierdie struktuur word aangedui as HDU's (Header / DATA Unit).

'N FITS-lêer kan een of meer HDU's bevat, waarvan die eerste' primêr 'en die res' uitbreidings 'genoem word. Die primêre HDU bevat gewoonlik 1D-spektrum, 2D-beeld of 3D-datakubus, hoewel enige dimensie van 0 tot 999 moontlik is. Die data is 1, 2 of 4 grepe heelgetalle of 4 of 8 grepe reële getalle.

Die uitbreidings kan of skikkings bevat soos in die primêre HDU of ascii-tabelle of binêre tabelle.
As 'n FITS-lêer slegs tabelle bevat, bevat die primêre HDU nie data nie, maar slegs koptekst.

Beide koptekste en data in 'n FITS-lêer is georganiseer in blokke van 2880 grepe. Die kop bevat 80 byte-lyne wat elk bestaan ​​uit 'n sleutelwoord van 8 bytes, gevolg in die meeste gevalle deur '=' in posisie 9 en 10 en dan die waarde van die sleutelwoord. Die res van die reël is 'n opmerkingsreeks wat begin met '/'. Elke opskrif begin met die volgende reëls

EENVOUDIG = T / lêer voldoen aan die FITS-standaard
BITPIX = 16 / aantal bisse per datapixel
NAXIS = 2 / aantal data-asse
NAXIS1 = 440 / lengte data-as 1
NAXIS2 = 300 / lengte data-as 2

wat die formaat van die lêer definieer as standaard FITS, die data-formaat en die afmetings van die gestoorde data.

Een blok van 2880 grepe bevat 36 reëls van 80 karakters per reël. Die kop kan verskillende blokke van 36 reëls bevat. Die laaste blok word geïdentifiseer aan die hand van die trefwoord 'EINDE'. Die volgende blok van 2880 grepe bevat die eerste deel van die data. Die leë reëls na die sleutelwoord 'EIND' word gevul met leë spasies en die ongebruikte grepe vanaf die einde van die data tot aan die einde van die blok van 2880 grepe word gevul met NULL's.

Volledige beskrywing van die FITS-formaat kan gevind word op http://fits.gsfc.nasa.gov/fits_primer.html

PyFITS

Soos 'n mens kan sien, is die lees van FITS-lêers nie so eenvoudig soos die lees van kolomme met data nie. Gelukkig is daar 'n luislangpakket genaamd PyFITS wat die taak baie vergemaklik.

Die pakket kan afgelaai word vanaf

Die dokumentasie kan op dieselfde webblad gevind word.

Alhoewel dit moontlik is om die pakket af te laai en te installeer, is dit baie makliker om dit mee te installeer

maklik_installeer pyfits
of
pip pyfits

Inligting oor easy_install: HIER en op pip: HIER.
Ek het dit op beide Mac- en Linux-masjiene gedoen en dit het goed gewerk.

Hoe om FITS-lêer te lees

Eerstens, soos gewoonlik, moet u die pyfits-pakket invoer

dan word die lêer gelees met

waar ek een van my FITS-lêers van San Pedro Martir echelle spektrograaf gebruik het. Die lêer kan vanaf HIER afgelaai word.

Die resultaat hdulist is 'n lys van HDU-voorwerpe. In die geval van 'n eenvoudige lêer is daar slegs een primêre HDU, dus die lys bevat slegs een element

Die inligting oor wat die lêer bevat, kan verkry word deur die info () -metode te skakel:

hdulist.info ()
Lêernaam: n10017o.fits
Nr Naam Tipe kaarte Afmetings Formaat
0 PRIMêRE PrimêreHDU 62 (2154, 2048) int16

Die tabel het gesê dat daar slegs 'n primêre HDU is wat 2154 X 2048-beeld bevat met data wat in 2 byte (16 bis) heelgetalle gestoor word.

Soos hierbo beskryf, bevat die HDU (kop / data-eenheid) kop en data. Die kop is 'n woordeboek. Om te sien watter sleutelwoorde in die kop gebruik word, kan u doen:

hdulist [0] .header.keys ()
['EENVOUDIG',
'BITPIX',
'NAXIS',
'NAXIS1',
'NAXIS2',
'VERLENG',
'OPMERKING',
'BZERO',
'BSCALE',
'EXPTIME',
'DETECTOR',
'OORSPRONG',
'OBSERVAT',
'TELESCOP',
'LATITUDE',
'LONGITUD',
'ALTITUD',
'SECONDAR',
'TYDSONE',
'OBSERVER',
'OBJECT',
'INSTRUME',
'GAINMODE',
'FILTER',
'IMGTIPE',
'EQUINOX',
'ST',
'UT',
'JD',
'DATE-OBS',
'CCDSUM',
'RA',
'DES',
'AH',
'LUGMASSE',
'TMMIRROR',
'TSMIRROR',
'TAIR',
'XTEMP',
'VOGHEID',
'ATMOSBAR',
'WIND',
'WDATE',
'DATUM',
'NAMPS',
'CCDNAMPS',
'AMPNAME',
'SKEPPER',
'VERSIE',
'GESKIEDENIS']

en om die waarde van 'n gegewe sleutelwoord te kry

hdulist [0] .header ['OBJECT']
'BD +59 363'

Die kop kan gedruk word soos dit in die lêer verskyn deur

druk hdulis [0] .header.ascardlist ()
EENVOUDIG = T / voldoen aan die FITS-standaard
BITPIX = 16 / skikking datatipe
NAXIS = 2 / aantal skikkingafmetings
NAXIS1 = 2154 / lengte data-as 1
NAXIS2 = 2048 / lengte van data-as 2
UITBREID = T
COMMENT FITS (Flexible Image Transport System) -formaat word gedefinieer in 'Astronomie'
KOMMENTAAR en astrofisika ', volume 376, bladsy 359-kode: 2001A & ampA. 376..359H
BZERO = 32768 / BZERO
BSCALE = 1 / BSCALE
EXPTIME = 0.0 / Integrasietyd, sek.
DETECTOR = 'e2vm2 E2V-4240' / CCD-tipe
OORSPRONG = 'UNAM' / OAN SPM, IA-UNAM
OBSERVAT = 'SPM' / Observatory
TELESCOP = '2.12m' / Teleskoop
LATITUDE = '+31: 02: 39' / Latitude
LONGITUD = '115: 27: 49' / lengte
ALTITUD = 2800 / hoogte
SECONDAR = -1 / F / Sekondêre tipe
TIMEZONE = 8 / Tydsone
OBSERVER = 'Leonid' / Naam van die waarnemer
OBJECT = 'BD +59 363' / voorwerp
INSTRUME = 'Echelle' / Instrument
GAINMODE = 1 / Winsfaktor in die CCD
FILTER = 'Geen' / filter
IMGTYPE = 'zero' / Beeldtipe
EQUINOX = 2011.7 / Equinox
ST = '02: 19: 51.2 '/ Siderale tyd
UT = '11: 28: 28 '/ Universele tyd
JD = 2455803.5 / Julian Datum
DATUM-OBS = '2011-08-30' / waarnemingsdatum UTM
CCDSUM = '1 1' / Binning [Cols: Rye]
RA = '02: 13: 22.2' / Regter Hemelvaart
DES = '52''14''44.0' / ​​deklinasie
AH = '00: 06: 28.0' / ​​Uurhoek
LUGMASSE = 1.073 / Lugmassa
TMMIRROR = 0 / Primêre spieël temperatuur (celsius graad)
TSMIRROR = 0 / Sekondêre spieël temperatuur (celsius graad)
TAIR = 0 / Interne teleskoop lugtemperatuur (celsius deg
XTEMP = 14.6 / Buitentemperatuur (Celsius graad)
VOGTIGHEID = 44,0 /% eksterne humiditeit
ATMOSBAR = 731.7 / Atmosferiese drukking in mb
WIND = 'S teen 24,1 km / h' / Windrigting
WDATE = '11: 28: 10, 30/08/11 '/ Weerverkrygingsdatum (plaaslike tyd)
DATUM = '2011-08-30T11: 28: 29' / datum vir lêerskepping (JJJJ-MM-DDThh: mm: ss UT)
NAMPS = 1 / Aantal versterkers
CCDNAMPS = 1 / Aantal versterkers wat gebruik word
AMPNAME = '1 kanaal' / versterkernaam
CREATOR = 'Python Oan ccds' / Naam van die sagtewaretaak wat die lêer geskep het
VERSIE = '4.12D' / Toepassingsagteware weergawe
OPMERKING Besoek ons ​​weersite http://www.astrossp.unam.mx/weather15
OPMERKING vir volledige meteorologiese gegewens van u waarnemingsaand
GESKIEDENIS bin2 pas by V1.0
GESKIEDENIS Programmeur: Enrique Colorado [[email protected]]
GESKIEDENIS Observatorio Astronomico Nacional -UNAM
GESKIEDENIS V1.00 Deur Arturo Nunez en Colorado & gt Word met pyfits na Python vervoer
GESKIEDENIS V0.50 Deur E. Colorado & gt Bygevoegde binnekant weerspieël die temperatuur
GESKIEDENIS V0.49 Deur E. Colorado & gt Bygevoegde BIASSEC-parameter
GESKIEDENIS V0.48 Deur E. Colorado & gt Bykomende inligting vir outofokusberekeninge
GESKIEDENIS V0.4 Deur E. Colorado & gt Nou sluit ons tydsone in en verwyder ons lat. teken
GESKIEDENIS V0.3 Deur E. Colorado & gt Nou sluit ons weerdata in
GESKIEDENIS V0.2 Deur E. Colorado & gt Algemene OAN-werkverklaring

Die data in die lêer is toeganklik met

en kan gesien word met [moenie vergeet om voer matplotlib.pyplot in as plt voordat u dit uitvoer]:

'N Kolom uit die gegewens kan opgestel word

waar ek die kolomnommer 1000 teken. Op dieselfde manier word 'n lyn uit die data geteken met:

Die data is stom, en alle manipulasies is beskikbaar.

Sommige meer oor die vertoon van beelde

Die belangrikste matplotlib-funksie om beelde te vertoon, is imshow. Dit het verskeie parameters waarvan die belangrikste die een is wat die kleurskema beheer en die parameters wat die dinamiese omvang beheer.

plt.imshow (data, cmap = cm.grys, vmin = 1000, vmax = 10000)

cmap beheer die pseudokleurkaart (dieselfde as kleur = in IDL). Die vooraf gedefinieerde kleurkaarte kan gesien word op http://matplotlib.sourceforge.net/examples/pylab_examples/show_colormaps.html

vmin en vmax beheer die waardeversameling wat in die [0,1] reeks gekarteer word, waar 0 swart is (die donkerste kleur) en 1 wit (die ligste kleur).

oorsprong = 'boonste' | 'laer', plaas die pixel met koördinate 0,0 in die boonste of onderste hoek van die plot

mate = (xmin, xmax, ymin, ymax) - Hierdie parameter definieer die getalle op die asse geskryf. Geen veranderinge aan die prentjie nie.

Gebruik FITS-tabelle

In hierdie voorbeeld gebruik ek 'n spektrum wat verkry word met die kamera met 'n hoë verspreiding aan boord van IUE.
Die lêer word soos gewoonlik oopgemaak:
hdulist = pyfits.open ('swp04345.mxhi')

maar nou het hdulist 2 elemente (2 kop- / data-eenhede):

Ons kan sien dat die primêre opskrif dimensie () het, die seun bevat geen data nie. Die data is in die uitbreiding.

hdulist.info ()
Lêernaam: swp04345.mxhi
Nr Naam Soort Kaarte Afmetings Formaat
0 PRIMêRE PrimêreHDU 421 () uint8
1 MEHI BinTableHDU 61 60R x 17C [1B, 1I, 1D, 1I, 1D, 1E, 1E, 768E, 768E, 768E, 768I, 768E, 768E, 1I, 1I, 1E, 7E]

Die eerste kop bevat die minimum infirmasie:

druk hdulis [0] .header.ascardlist () [: 5]
EENVOUDIG = T / Standaard FITS-formaat
BITPIX = 8 / Binêre data
NAXIS = 0 / Tweedimensionele beeld
EXTEND = T / Extensions is teenwoordig
TELESCOP = 'IUE' / Internasionale ultravioletverkenner

Die aantal as is 0, wat beteken dat daar geen datablok in die primêre HDU is nie. Die opskrif van die tweede HDU begin met die trefwoord XTENSION en met die spesifikasie van die data

druk hdulis [1] .header.ascardlist () [: 5]
XTENSION = 'BINTABLE' / Binaire tafeluitbreiding
BITPIX = 8 / Binêre data
NAXIS = 2 / Tweedimensionele tabelreeks
NAXIS1 = 16961 / Breedte ry in grepe
NAXIS2 = 60 / Aantal bestellings

Om verder te vorder, moet ons weet wat in die tabel staan. Soos gewoonlik het die kolomme name en tipe gestoorde data. Hierdie inligting kan verkry word met behulp van die kolomkenmerk van hdulist:


PAS I / O-biblioteke aan

'N Volledige bespreking van FITS-formate met skakels na definitiewe dokumentasie is beskikbaar. Aangesien verskillende pakkette verskillende onderstelle van die beskikbare FITS-formate en -konvensies ondersteun, som ons dit kortliks op.

  • FITS-beelde word oor die algemeen ondersteun en kan 1-999 dimensionele skikkings insluit van ongetekende grepe, getekende 2 en 4 byte heelgetalle en 4 en 8 byte drywingsgetalle met behulp van IEEE-voorstellings. Sommige pakkette kan slegs beelde in die eerste HDU lees.
  • FITS-binêre tabelle stoor tabelinligting in 'n binêre voorstelling. Elke sel in die tabel kan 'n skikking wees, maar die dimensie van die skikking moet konstant binne 'n kolom wees. Binêre tabelle kan die datatipes wat beskikbaar is vir beelde ondersteun, sowel as logiese veranderlikes (gestoor as T en F), bit-skikkings, karakters, snare (gestoor as skikkings van karakters) en komplekse getalle van 8 en 16 byte.
  • FITS ASCII-tabelle stoor tabelinligting met alle numeriese inligting wat in ASCII-formate gestoor word. Alhoewel ASCII-tabelle oor die algemeen minder doeltreffend is as binêre tabelle, kan dit relatief menslik leesbaar gemaak word en kan dit numeriese inligting stoor met in wese arbitrêre grootte en akkuraatheid (bv. 16 byte reals).
  • Die uitbreiding van die ewekansige groepe is verouderd, maar word tog baie gebruik in radiosterrekunde. Dit laat groepe skikkings toe waar elke element van die groep presies dieselfde dimensie het.

Baie FITS-lesers kan inligting lees wat gestoor is met behulp van standaard-kompressie-algoritmes, veral die .Z- en .gz-lêers wat deur die Unix-kompres- en gzip-hulpprogramme geskep is. FITS ondersteun ook interne kompressie vir beide beelde en binêre tabelle, wat doeltreffender kan wees vir astronomiese data, en wat ook toegang bied tot ongekomprimeerde beeldmetadata.

  • Die lang snaarkonvensie laat FITS-opskrifte toe om stringwaardes van langer as 68 karakters te spesifiseer.
  • Die FITS-hiërargiese groeperingskonvensie definieer 'n soort FITS-tabel wat 'n assosiasie van HDU's beskryf wat oor verskeie lêers kan strek.
  • Die konvensie vir die kop-oorerwing maak dat FITS-koptekstinligting in die primêre HDU gebruik kan word vir verstekinligting in daaropvolgende HDU's.
  • Die trefwoordkonvensie HIERARCH laat toe dat FITS-sleutelwoorde langer is as die standaardwaarde van 8 karakters.

C en Fortran

Luislang

C # (Microsoft. Net-platform)

Fortran

Pascal

JavaScript

'N Losstaande JavaScript-biblioteek vir die lees van die FITS-astronomiese lêerformaat. Hierdie biblioteek is ontwerp vir moderne blaaiers wat die DataView-voorwerp ondersteun. Dit bevat ten minste Chrome 9, Firefox 15 en Safari 6. Hierdie biblioteek kan gebruik word om verskillende vorms van die FITS-formaat te lees. Hierdie implementering word tans aktief ontwikkel. In sy huidige toestand ondersteun dit die volgende: lees van meerdere koptekst-data-eenhede, lees van FITS-beelde, lees van datablokkies, lees van binêre tabelle, lees van ASCII-tabelle, en dekomprimeer beelde met die Rice-algoritme.

Die biblioteek is beskikbaar op GitHub.


Aangesien die lêer groot is, sal ek met memmap = True oopmaak om probleme met RAM-berging te voorkom.

Ek stel belang om EVENTS te lees, wat inligting bevat oor elke X-straalfoton wat die detektor tref.

Om uit te vind watter inligting die tabel bevat, sal ek die kolomname druk.

Nou sal ek hierdie data neem en dit in 'n astropietabel omskakel. Alhoewel dit moontlik is om toegang te verkry tot FITS-tabelle direk vanaf die .data-eienskap, is die gebruik van Table die neiging om 'n verskeidenheid algemene take gemakliker te maak.

'N Voorskou van die tabel kan byvoorbeeld maklik gesien word deur eenvoudig 'n sel met die tabel as laaste reël te laat loop:

& ltTabel lengte = 483964 & gt
tydccd_idnode_idexpnochipxspaanderigtdetxtdetydetxontstelxyphapha_roenergiePIfltgradegraadstatus [32]
dryf64int16int16int32int16int16int16int16dryf32dryf32dryf32dryf32int32int32dryf32int32int16int16bool
238623220.90933689208512439815095.644139.04168.075087.773548353413874.7951164Onwaar .. Onwaar
238623220.9093168437237489534984865.574621.183662.24915.936676292621.19180642Onwaar .. Onwaar
238623220.9093268719289484337804814.834340.253935.224832.553033287512119.083183Onwaar .. Onwaar
238623220.9093068103295483731644807.364954.383324.464897.288317733253.0422300Onwaar .. Onwaar
238623220.9093168498314481835594788.994560.333713.634832.733612343914214.4974642Onwaar .. Onwaar
238623220.9093368791469466338524635.454268.053985.854645.935004381952.7213400Onwaar .. Onwaar
238623220.9093368894839429339554266.644165.324044.554267.68357133267.5322400Onwaar .. Onwaar
238623220.9093368857941419139184164.814202.233995.944170.829758043817.0426200Onwaar .. Onwaar
238623220.9093368910959417339714146.994149.364046.344146.915764462252.7315500Onwaar .. Onwaar
238623220.9093368961962417040224144.134098.54096.524138.09157213546154.1142200Onwaar .. Onwaar
. . . . . . . . . . . . . . . . . . .
238672393.551315723933199493350404902.913082.55212.54766.23122211814819.8333100Onwaar .. Onwaar
238672393.551215723596412472047034691.513418.994853.514595.83142302012536.9859106Onwaar .. Onwaar
238672393.5513157231000608452451074494.713015.725230.894353.026585852599.5717900Onwaar .. Onwaar
238672393.551115723270917421543774188.333743.64472.074134.223861346315535.81024164Onwaar .. Onwaar
238672393.551015723232988414443394117.613781.884425.754068.49168014996653.0845600Onwaar .. Onwaar
238672393.5910115723366103316447663140.93356.324733.683048.573621360214362.598400Onwaar .. Onwaar
238672393.5910315723937646370741953681.213925.554231.843651.973717348614654.0100483Onwaar .. Onwaar
238672393.5910115723406687374847263723.43396.254762.423631.72167615366652.8345600Onwaar .. Onwaar
238672393.5910115723354870393147783906.073344.774834.993807.08243621659672.88663164Onwaar .. Onwaar
238672393.6326115723384821325925233230.925596.852519.223401.034913561875.9412900Onwaar .. Onwaar

Ons kan data uit die tabel haal deur na die kolomnaam te verwys. Ek sal byvoorbeeld 'n histogram maak vir die energie van elke foton, wat ons 'n gevoel gee vir die spektrum (gevou met die doeltreffendheid van die detektor).


PIL FITs beeld dekodeerder

Ek probeer om 'n FITs-beeldlêer vir my navorsing te lees, en ek besluit
dat die skryf van 'n lêer-dekodeerder vir die Python-beeldbiblioteek die
maklikste manier om dit vir my behoeftes te bereik. FIT's is 'n rou data-formaat
gebruik in sterrekunde.

In elk geval, ek het die voorbeeld in die PIL-dokumentasie aanlyn gevolg, en ek
het ook gekyk na die FITs-beeldstomplêer wat by PIL 1.1.5 ingesluit is. Ek
het iets opgaar wat moet werk (of amper werk), maar ek hou aan
wat een van die twee foute raakloop (hieronder). Die kern van die probleem
dit lyk asof my inprop nie behoorlik geregistreer is nie en nie
word tydens runtime gelees as ek Image.open () skakel.

1.) Die biblioteek laai die FitsStubImagePlugin.py-lêer vanaf die
werfpakketgids (in plaas van my inprop) en gee dan die
volgende fout:

lêer
& quot / Stelsel / Biblioteek / Raamwerke / Python.framework / Versies / 2.3 / lib / python2.3 / werfpakkette / PIL / ImageFile.py & quot,
lyn 255, in vrag
verhoog IOError (& kan nie laaier vir hierdie% s-lêer vind nie & quot% self.format)
IOError: kan nie laaier vir hierdie FITS-lêer vind nie

2.) Ek verwyder die FitsStubImagePlugin.py-, pyc-lêers en plak my plugin
eerder in die gids (my inprop was reeds in die PYTHONPATH
voor). Dan kry ek die volgende fout:

Terugsporing (laaste oproep laaste):
File & quotFitsImagePlugin.py & quot, reël 111, in?
beeld = Image.open (pasnaam) .save (jpg_name)
lêer
& quot / System / Library / Frameworks / Python.framework / Versions / 2.3 / lib / python2.3 / site-packages / PIL / Image.py & quot,
lyn 1745, in die oopte
verhoog IOError (& quotcannot beeld lêer identifiseer & quot)
IOError: kan beeldlêer nie identifiseer nie

Dit lyk asof ek iets regtig dom doen (of nie doen nie)
of die dokumente is verouderd. Enige hulp sal baie waardeer word!

##
# Installeer toepassingspesifieke FITS-beeldhanteerder.
#
# @param handler Handler object.

def register_handler (hanteerder):
wêreldwye _ hanteerder
_handler = hanteerder

def _accept (voorvoegsel):
terugvoervoorvoegsel [: 6] == & quotEENVOUDIG & quot

klas FitsImageFile (ImageFile.StubImageFile):
#class FitsImageFile (ImageFile.ImageFile):

formaat = & quotFITS & quot
formaat_beskrywing = & quotFITs rou beeld & quot

# byte verreken vir FIT's beelde
byte_offset = 2880

# gaan kop vir geldige FIT's-beeld na
header_data = self.fp.read (byte_offset)

# koptekste word in 80 karakterstringe gestoor, so sorteer dit uit
in 'n
# mooi lys
i = 0
koptekste = []
terwyl header_data [i]! = & quot n & quot en i & lt len ​​(header_data):
headers.append (header_data [i: i + 80])
i + = 81

# ontleed individuele opskrifte
ok = Onwaar
vir koptekst in koptekste:
woorde = header.split ()

probeer:
sleutelwoord = woorde [0]
waarde = woorde [2]
behalwe IndexError:
ok = Onwaar
breek

as sleutelwoord == & quotNAXIS & quot en waarde == 2:
ok = Waar
elif sleutelwoord == & quotNAXIS1 & quot:
xsize = waarde
elif sleutelwoord == & quotNAXIS2 & quot:
ysize = waarde

indien nie ok nie:
verhoog ValueError (& quotfile is nie 'n geldige FITs-beeld nie & quot)


Kyk na die beelddata en kry basiese statistieke & # 182

Kom ons kry basiese statistieke oor ons beeld

Beplan 'n histogram & # 182

Om 'n histogram met matplotlib.pyplot.hist () te maak, moet ek die data van 'n 2-D gooi om na een eendimensioneel te skik.

In hierdie geval gebruik ek die ndarray.flatten () om 'n 1-D gevoelige skikking terug te gee.

Vertoon die prent met 'n logaritmiese skaal & # 182

Wil u 'n logaritmiese kleurskaal gebruik? Om dit te doen, moet ons die LogNorm-voorwerp vanaf matplotlib laai.


Bekyk die beelddata en kry basiese statistieke¶

Kom ons kry 'n paar basiese statistieke oor ons beeld:

Stip 'n histogram¶

Om 'n histogram met matplotlib.pyplot.hist () te maak, moet ons die data uit 'n 2D-skikking na iets eendimensioneel gooi.

In hierdie geval, laat ons die ndarray.flatten () gebruik om 'n 1D gevoelige skikking terug te gee.

Vertoon die beeld met 'n logaritmiese skaal¶

Wat as ons 'n logaritmiese kleurskaal wil gebruik? Om dit te doen, moet ons die LogNorm-voorwerp vanaf matplotlib laai.


Imcombine som (of gemiddeld) 'n stel FITS-beelde

imcombine word nou versprei met v1.2 en later van die CCDProc-pakket. Laai asseblief die nuutste weergawe van en af ccdproc eerder as om te installeer imcombine afsonderlik. Met ingang van 23 November 1998 imcombine is nie meer as 'n aparte item beskikbaar nie.

Gebruik:

Opsies:

infile1 infile2. die name van die ingevoerde FITS-lêers wat in u lêer gekombineer moet word.

a Bereken die gemiddelde van die invoerlêers in plaas van die som.

n Normaliseer die uitvoerbeeld sodat dit 'n gemiddelde datawaarde van 1.0 het

BSc: ec, sr: er Bereken die gemiddelde datawaarde vir die -n opsie binne die belangstellingsgebied begrens deur sc: ec in kolomme en sr: er in rye. Standaard is die gemiddelde van die hele beeld.

s uitvoerbeeld in kort heelgetal (BITPIX = 16) -formaat, standaard is drywende punt (BITPIX = -32).

l uitvoerbeeld in lang heelgetal (BITPIX = 32) -formaat, standaard is drywende punt (BITPIX = -32).

h Druk 'n hulpboodskap af.

Voorbeelde:

Voorbeeld 1: Eenvoudige som van die beelde

'N Alternatiewe manier om dit te doen, sou gewees het om te tik: of die numeriese reeks- en wildkaart-opsies van die dop (onderskeidelik) te gebruik. Gebruik oor die algemeen versigtig met wildcards.

Voorbeeld 2: Gemiddelde van beelde

Gebruik van numeriese reeks- of wildcard-argumente is ook toegelaat, soos in Voorbeeld 1.

Voorbeeld 3: Genormaliseerde gemiddelde plat

Voorbeeld 4: Gebruik imcombine met ccdproc

Binne elke verminderde platveldbeeld sal die belangstellingsgebied vir die berekening van die normalisering kolomme 10-500 en langs rye 10-500 wees, met die idee om die rande op hierdie toestel te vermy.


Kyk die video: Boje i slike - 1. dio (November 2022).