Mappatura da pixel a RA / DEC in astrofotografia digitalizzata


10

Ho un'immagine 1443x998 delle stelle (scattata con una fotocamera da 35 mm e quindi scansionata) con le seguenti stelle nelle seguenti posizioni dei pixel:

Altair x=782, y=532 [19h50m46.9990s RA, +08 52'05.959'' DEC] 
Sualocin, x=311, y=146 [20h 39m 38.287s +15 54'43.49'' DEC] 
Denebokab, x=1023, y=815 [19h25m29.9005s +03 06' 53.191'' DEC] 

Quale funzione matematica converte la posizione dei pixel in RA / DEC e viceversa? Appunti:

  • Le stelle luminose sono chiazze nella foto; le coordinate sopra sono approssimativamente al centro del blob, ma possono essere disattivate di + -2 pixel.

  • So di poter ruotare la sfera celeste in modo che il centro della mia immagine abbia coordinate polari 0,0. Quindi la vera domanda è "come trovare questa rotazione" (ma vedi il prossimo punto).

  • Se l'elevazione / azimut fossero lineari nelle immagini, questo sarebbe facile (er), ma non lo sono: Misurare la distanza angolare con le fotografie

  • Posso fornire posizioni di pixel di più stelle se questo aiuta. Credo che 3 dovrebbero essere sufficienti, ma potrei sbagliarmi.

  • Ho provato a scegliere 3 stelle che sono state "sparse" in tutta l'immagine (perché penso che riduca l'errore, non sono sicuro), ma non sono sicuro di esserci riuscito.

  • Lo sto facendo per diverse foto e vorrei un metodo generale.

  • In questo modo mi aiuterà a identificare le stelle più deboli / Messier-oggetti / ecc. Nella foto.

  • Sono sicuro che molti astrofotografi vogliono farlo, ma non hanno trovato alcun software esistente che lo faccia.

EDIT: Grazie, whuber! La proiezione gnomonica è ciò che mi mancava. Lo avevo già fatto ipotizzando una trasformazione lineare:

(* convert RA/DEC to xyz coords on celestial psuedo-sphere of radius 1 *) 
radecxyz[ra_,dec_] = 
{Cos[ra/12*Pi]*Cos[dec/180*Pi],Sin[ra/12*Pi]*Cos[dec/180*Pi],Sin[dec/180*Pi]}; 

(* I no longer have any idea how this works *) 
astrosolve[x_,y_,z_,xwid_,ywid_] := Module[{a,m,ans,nullans}, 
m=Array[a,{2,3}]; 
temp=Solve[{ 
m.radecxyz[x[[1]],x[[2]]]=={x[[3]]-xwid/2,x[[4]]-ywid/2}, 
m.radecxyz[y[[1]],y[[2]]]=={y[[3]]-xwid/2,y[[4]]-ywid/2}, 
m.radecxyz[z[[1]],z[[2]]]=={z[[3]]-xwid/2,z[[4]]-ywid/2} 
}]; 
ans = m /. Flatten[temp]; 
nullans=Flatten[NullSpace[ans]]; 
If[nullans.radecxyz[x[[1]],x[[2]]]<0,nullans=-nullans]; 
Return[{ans,nullans}]; 
]; 

dove x, ye z erano elenchi di 4 elementi ciascuno costituito da una stella RA, declinazione, coordinata x sull'immagine e coordinata y sull'immagine. xwid e ywid sono la larghezza e l'altezza dell'immagine. In questo caso:

astrosolve[ 
 {19.8463886110, 8.8683219443, 782, 532}, 
 {20.6606352777, 15.9120805555, 311, 146}, 
 {19.4249723610, 3.1147752777, 1023, 815}, 
 1443, 998] 

{ 
 {{-2250.51, -1182.52, 385.689},  {-166.12, -543.746, -2376.73}},  
 {0.480698, -0.861509, 0.163497} 
} 

Ora, facendo riferimento a "{-2250.51, -1182.52, 385.689}" come $ frow, "{-166.12, -543.746, -2376.73}" come $ srow e "{0.480698, -0.861509, 0.163497}" come $ null, questa subroutine PHP traduce RA / DEC in coordinate xy:

# radecxy(ra,dec): converts ra/dec to x,y using a quasi-linear transformation 

function radecxy($ra,$dec) { 
    global $null,$frow,$srow,$xwid,$ywid; 
    list($x,$y,$z)=array(cos($dec)*cos($ra),cos($dec)*sin($ra),sin($dec)); 

    $dotprod=$null[0]*$x+$null[1]*$y+$null[2]*$z; 
    if ($dotprod<0) {return(array(-1,-1));}

 list($fx,$fy)  = array($frow[0]*$x+$frow[1]*$y+$frow[2]*$z,$srow[0]*$x+$srow[1]*$y+$srow[2]*$z); 
    $fx+=$xwid/2; 
    $fy+=$ywid/2; 
    if ($fx<0 || $fy<0 || $fx>$xwid || $fy>$ywid) { 
        return(array(-1,-1)); 
    } else { 
        return(array($fx,$fy)); 
    } 
} 

Purtroppo, non ho più idea del perché funzioni, ma usarlo + l'aggiunta di posizioni stellari note produce risultati tollerabili (usa "vedi immagine" per vederlo a grandezza naturale):

testo alternativo

Tuttavia, come puoi vedere, i risultati non sono perfetti, convincendomi che una trasformazione lineare non era la risposta giusta. Penso che lo gnomonico potrebbe essere il graal che stavo cercando.

Risposte:


9

Descriverò un approccio rigoroso e indicherò quale software può aiutarlo. La maggior parte di questo sarà tangente agli interessi del sito di fotografia, ma poiché ci sono alcune intuizioni utili che si applicano a qualsiasi circostanza in cui i luoghi saranno stimati dalle misurazioni su un'immagine, questo sito sembra un luogo ragionevole per tale analisi.

Scattare un'immagine (con un obiettivo che è stato corretto per la distorsione) proietta la sfera celeste attraverso il punto focale dell'obiettivo sul piano del sensore. Questo è un aspetto obliquo di una proiezione gnomonica .

Matematicamente, la conversione da (RA, DEC) procede attraverso una serie di passaggi:

  1. Convertire (RA, DEC) in coordinate sferiche. L'AR deve essere convertito da ore-minuti-secondi in gradi (o radianti) e DEC deve essere convertito da gradi-minuti secondi in gradi (o radianti), ricordando che si tratta di un'elevazione sopra il piano, non di un angolo rispetto al polo nord (che è la solita convenzione di coordinate sferiche). Entrambe le conversioni sono semplici aritmetiche.

  2. Calcola le coordinate (x, y, z) per le coordinate sferiche delle stelle. Questa è una conversione di coordinate standard (che implica una semplice trigonometria).

  3. Ruota la sfera celeste per allineare i suoi poli con l'asse dell'obiettivo. Questa è una trasformazione lineare.

  4. Ruota la sfera celeste attorno ai suoi poli per adattarla all'orientamento della fotocamera (un'altra trasformazione lineare).

  5. Posizionando il piano di imaging ad un'altezza costante z sopra il punto focale, disegnare i raggi di luce dalle stelle in (x, y, z) attraverso il punto focale fino a quando non intercettano il piano. (Questa è la proiezione gnomonica e, per sua natura, è proiettiva e non lineare.)

testo alternativo

[Nella figura, che intende essere una sezione trasversale piana attraverso l'asse della lente,

  • A è il punto focale.
  • Il semicerchio BCD è la parte visibile della sfera celeste.
  • Punti CA lungo l'asse dell'obiettivo.
  • E, F e G sono posizioni a stella.
  • EE, FF e GG sono le posizioni corrispondenti sulla sfera (invisibile) celeste.
  • E ', F' e G 'sono le loro immagini sul sensore KL (in modo che EE', FF 'e GG' sono percorsi di raggi di luce dalle stelle al sensore).
  • AD è l'orizzonte dal quale viene misurata la declinazione.
  • Alfa è la declinazione della stella E (o, equivalentemente, una coordinata angolare di EE). Le stelle F e G hanno declinazioni simili (non mostrate).

Il nostro compito è trovare la relazione matematica tra le coordinate angolari di E, F e G - che si presume siano note con elevata precisione - come l'alfa e le coordinate delle loro immagini E ', F' e G ', misurate in pixel lungo il sensore. Una volta trovata, questa relazione può essere invertita come descritto di seguito per stimare le coordinate angolari degli oggetti celesti dalle posizioni delle loro immagini sul sensore. Non mostrato, per semplicità, è l'ingrandimento dell'obiettivo. Con un obiettivo privo di distorsioni ciò avrà l'effetto di riscalare uniformemente le coordinate di E ', F' e G 'rispetto al centro del sensore.]

Questa procedura descrive come la luce arriva da una stella al sensore per una lente perfetta e semplice. Implica questi parametri (sconosciuti), che dovranno essere determinati:

  • Tre angoli in (3) e (4) che descrivono l'orientamento dell'obiettivo e della fotocamera.

  • Un fattore di scala in (5) che descrive gli effetti combinati delle dimensioni del sensore, della distanza dal punto focale e dell'ingrandimento dell'obiettivo.

A causa della proiezione (5), questa è una trasformazione complessa e non lineare in generale, ma ha una descrizione matematica definita. Se lasciamo x = (RA, DEC) designare la posizione di una stella, lasciamo che theta rappresenti i quattro parametri per il processo di imaging e lasciamo y = (colonna, riga) rappresentare le coordinate dei pixel, quindi possiamo astrattamente ma più semplicemente scrivere

y = f (x, theta).

Successivamente - e questo è estremamente importante - dobbiamo tenere conto degli errori. Le stelle rappresentate non si trovano in posizioni precise. Quindi dobbiamo includere un termine di errore nella nostra formula ed è convenzionale (dal 1800 circa) modellare questo errore in modo probabilistico. La nuova formula è

y = f (x, theta) + e

Quando l'obiettivo è privo di distorsioni, il valore atteso di e è 0 e la sua deviazione standard ( sigma ) misura la dimensione tipica dell'errore. È ragionevole supporre che le e siano approssimativamente distribuite normalmente, con deviazioni standard approssimativamente uguali (il che non è vero, ma per un'analisi iniziale è un presupposto ragionevole) e possiamo sperare che questi errori siano statisticamente indipendenti l'uno dall'altro (che di nuovo non è vero ma è un buon presupposto iniziale). Ciò giustifica una soluzione dei minimi quadrati usando la massima probabilità . Fino a una costante universale, di cui non abbiamo bisogno di conoscere il valore, la probabilità logaritmica di una particolare osservazione (x, y) è uguale

- | f (x, theta) - y | ^ 2 / (2 sigma ^ 2) - 2 log (sigma).

(Le barre dei valori assoluti indicano la distanza euclidea nel piano di imaging, calcolata come al solito con il Teorema di Pitagora.)

In virtù della presunta indipendenza degli errori, la probabilità di log dell'insieme di dati per un'immagine è la somma di questi valori. Questa è la "probabilità logaritmica". Le stime della massima verosimiglianza (ML) dei parametri theta e sigma (cinque numeri in tutto) sono quei valori che massimizzano la verosimiglianza.

Possiamo e dovremmo andare oltre. La teoria della ML mostra anche come ottenere intervalli di confidenza per le stime. Intuitivamente, gli errori nelle nostre osservazioni creano una piccola incertezza nei valori congiunti degli angoli, del fattore di scala e della deviazione standard. Abbiamo bisogno di questi valori per stimare RA e DEC per qualsiasi pixel nella nostra immagine. Usando valori incerti, il che è inevitabile, otterremo risultati incerti. Inoltre, se identifichiamo un pixel nella nostra immagine osservando una macchia di luce diffusa (sparsa su circa pi * sigma ^ 2 pixel complessivamente), ci saranno ulteriori incertezze nelle coordinate dei pixel. Collettivamente queste due forme di incertezza si combinano. Ciò implical'incertezza netta nella stima di RA e DEC di qualsiasi goccia di luce sull'immagine è maggiore di quanto si possa immaginare.

Infine, quando togli una misura dall'immagine e la usi per stimare le coordinate vere di una stella o di un oggetto celeste, stai facendo una regressione inversa , che è una forma di calibrazione dello strumento. La regressione inversa è una procedura per spiegare le incertezze che ho appena descritto. Il suo output ovviamente include le coordinate stellari stimate per qualsiasi blob di pixel sull'immagine. Include anche un anello di coordinate attorno a quella stima che sono anche coerenti con la posizione di quel BLOB. (Questo è un "intervallo di previsione inversa" comune o un insieme di "limiti fiduciali" per RA e DEC del BLOB.) In pratica, se si consulta un catalogo di oggetti celesti, è possibile utilizzare questo anello per cercare tutti gli oggetti noti che sono coerenti con le informazioni nella tua immagine. Chiaramente questo può essere più prezioso di una procedura semplicistica che stima - a volte in modo errato - solo un singolo set di coordinate.

In sintesi, qui è necessario il software

  • Eseguire l'ottimizzazione non lineare richiesta da ML.

  • Stimare gli errori standard nelle stime.

  • Eseguire la regressione inversa.

La competenza con software appropriato, come il comando ML di Stata o Mathematica , è essenziale se si sta codificando questo da soli.

Indipendentemente dalla tua esperienza, ecco alcune conclusioni che puoi utilizzare nelle tue strategie di imaging:

  • L'accuratezza dell'immagine per ottenere una correzione su qualsiasi oggetto non può mai essere maggiore dell'imprecisione intrinseca nell'imaging (misurata da sigma , la dimensione tipica di un punto di luce sull'immagine).

  • Puoi avvicinarti a questo livello di precisione identificando molte stelle conosciute, non solo tre. Ciò riduce quasi a zero l'incertezza nella trasformazione da cielo a immagine se si hanno abbastanza stelle conosciute nell'immagine.

  • È corretto che si desideri distribuire le stelle di riferimento sull'immagine. È anche fondamentale che non siano allineati (il che, sfortunatamente, è il caso delle tre posizioni indicate nella domanda). Se puoi permetterti di individuare solo tre stelle, inseriscile in un bel triangolo. Quando le stelle si allineano, l'analisi statistica indica che esiste un'enorme incertezza sulle posizioni nelle direzioni perpendicolari alla linea. In questo esempio particolare l'errore stimato ( sigma ) è largo centinaia di pixel. Avere un'altra stella per creare un buon triangolo dovrebbe ridurre questo errore a uno o due pixel.

Alcuni pensieri di separazione:

  • È possibile rilevare e persino correggere le aberrazioni dell'obiettivo effettuando un'analisi statistica più ampia. L'idea è quella di tracciare deviazioni tra le posizioni previste e effettive delle stelle sull'immagine. Questo è simile a "deformare" o " georeferenziare " i dati delle mappe. Come soluzione rapida e sporca, è possibile premere GIS o il software di elaborazione delle immagini (come ENVI ) in servizio per georeferenziazione (o astroreferenza) qualsiasi immagine. Tale software di solito non effettua stime ML di trasformazioni proiettive, ma può eseguire approssimazioni polinomiali di alto ordine. Una trasformazione polinomiale order-2 o order-3 potrebbe fare un lavoro abbastanza buono, a seconda dell'applicazione.

  • È possibile migliorare la precisione combinando più immagini degli stessi oggetti.


Vorrei sottolineare, in risposta a un commento ora cancellato che è apparso sullo schermo per un secondo circa (!), Che se si dispone di informazioni precise sull'orientamento dell'obiettivo, si conoscono effettivamente due o anche tre dei parametri (gli angoli). Ciò semplifica la ricerca della soluzione ML per i parametri rimanenti (perché ne esistono meno) e riduce alcune incertezze, ma non modifica la natura del problema. Nel migliore dei casi conosci anche l'orientamento della fotocamera. Trovare il fattore di scala è un problema lineare: potresti persino usare un foglio di calcolo per risolverlo!
whuber

@whuber: Ok, prima di rispondere, mi ha incontrato chiarire a cosa sto rispondendo. La tua analisi statistica è solida e sto solo parlando dei problemi ottici. Sto ignorando l'incertezza statistica e qualsiasi imperfezione nel sistema di imaging. In pratica quando ho svolto il lavoro di registrazione delle immagini, in effetti utilizzo un approccio di massima verosimiglianza, ma trovo che questo sia un po 'al di là dell'ambito della domanda qui. Quindi ciò che rimane nella tua risposta è la trasformazione di (RA, Dec) in (x, y). Il difetto qui sembra essere nel modo in cui pensi all'oggetto e ai piani dell'immagine quando l'oggetto è all'infinito
Colin K

@whuber: In generale, la proiezione gnomica che descrivi è davvero proiettiva, ma nel caso dell'imaging all'infinito, non può esserci inclinazione del "piano" dell'oggetto. Se devi pensarlo come un piano reale, allora devi considerarlo normale all'asse ottico. Trovo anche un po 'strano che tu parli di "Calcola [ing] (x, y, z) coordinate per le coordinate sferiche delle stelle". Questo non è necessario. Sembra che tu abbia un forte background nell'analisi numerica, ma poco nell'ingegneria ottica?
Colin K,

@whuber: progetto obiettivi e algoritmi di elaborazione delle immagini in modo professionale, quindi potrei usare un vocabolario che ha un significato molto specifico per gli ingegneri ottici e potremmo avere problemi di comunicazione.
Colin K,

1
@whuber: Ora, lascia che ti faccia alcune domande che potrebbero aiutare la nostra comprensione. 1. La mia comprensione delle trasformazioni delle coordinate è principalmente autodidatta ai fini dell'elaborazione delle immagini, quindi sono sicuro che ci sono alcuni buchi. È corretto affermare che una trasformazione affine è una trasformazione proiettiva con uguale ridimensionamento in entrambe le dimensioni? 2. Puoi descrivere un caso in cui, con tutti gli oggetti all'infinito, ci sarebbe una scala diseguale nell'immagine rispetto alla posizione angolare dell'oggetto? Un esempio può essere un campo di stelle che sono disposte in una griglia sulla sfera celeste, ma a varie distanze.
Colin K,

0

Fare questo con lo stesso grado di precisione che fanno gli astronomi professionisti sarebbe davvero difficile. Richiederebbe una caratterizzazione estremamente precisa delle distorsioni prodotte dall'obiettivo e delle imperfezioni nel sensore della fotocamera. Tuttavia, probabilmente non è necessario quel grado di precisione. Dovrebbe essere sufficiente supporre che l'obiettivo non presenti grandi quantità di distorsione (che è un buon presupposto per un obiettivo di qualità) e che il sensore della fotocamera è abbastanza vicino a una griglia perfettamente regolare (che è un ottimo presupposto per anche una fotocamera economica).

Non resta che elaborare la trasformazione delle coordinate che descrive l'orientamento della telecamera, ovvero la direzione in cui è stata puntata e il grado in cui è stata ruotata.

Ciò che stai cercando, allora, è chiamato trasformazione affine o mappa affine. Che è solo un nome di fantasia per una matrice per la quale si moltiplicherebbero le coordinate dei pixel per ottenere le coordinate astronomiche. Nel caso di una mappa affine, questa trasformazione può includere qualsiasi grado di rotazione, scala, taglio e traslazione.

Il significato del componente di rotazione è abbastanza ovvio. Il fattore di scala descrive semplicemente la quantità di cielo coperta da ciascun pixel in termini di RA / Dec. Lo shear è una trasformazione che renderebbe l'immagine di un rettangolo un parallelogramma, ma non dovrebbe esserci alcun effetto di questo tipo in un'immagine di oggetti all'infinito (come le stelle). Infine, il componente di traduzione aggiunge semplicemente un offset per tenere conto del fatto che il pixel (x = 0, y = 0) nell'immagine probabilmente non corrisponde a (RA = 0, Dec = 0).

Poiché nell'immagine sono presenti 3 stelle di riferimento, hai informazioni sufficienti per calcolare la relazione tra le coordinate dei pixel e l'AR / Dec che stai cercando. Ciò verrebbe fatto mediante un adattamento dei minimi quadrati lineari (non minimi quadrati non lineari come menzionato sopra) per determinare i valori dei componenti della matrice che meglio corrispondono alle coordinate dei pixel con l'AR / Dec noto delle stelle di riferimento. Una volta stabilita la matrice, puoi applicarla alle coordinate in pixel di altre stelle per ottenere il loro RA / Dec.

Mentre potrei farlo relativamente facilmente, purtroppo non sono sicuro di come aiutarti a farlo. Implicherebbe alcune abilità matematiche che vanno un po 'oltre lo scopo di photo.SE. Sono un ingegnere ottico, ma non sono molto un fotografo; il software che utilizzerei per questo è progettato per gli ingegneri per eseguire calcoli numerici pesanti e non è affatto uno strumento fotografico. Potrebbero esserci modi per farlo usando pacchetti software rivolti ai fotografi, ma non ne sono a conoscenza.


Sfortunatamente, la trasformazione non è solitamente affine: è proiettiva.
whuber

Immagino di pensare al problema più come il whuber, come proiezione. Sono curioso di sapere se potresti effettivamente trasformare le coordinate pixel dell'OP in RA / DEC con una trasformazione affine.
jrista

@whuber: in generale sì, ma non per gli oggetti all'infinito. In effetti, in questo caso la trasformazione è ancora più restrittiva: è una trasformazione di somiglianza non riflessiva. Questo è un sottoinsieme della trasformata affine per la quale la scala è uguale in entrambe le direzioni e non c'è taglio. (la somiglianza non riflessiva è un caso speciale di affine che è un caso speciale di proiettivo)
Colin K,

Mi permetto di dissentire. Vedi l'analisi nella mia risposta postata di recente.
whuber
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.