Saya memiliki gambar 1443x998 dari bintang-bintang (diambil dengan kamera 35mm dan kemudian dipindai) dengan bintang-bintang berikut di lokasi piksel berikut:
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]
Apa fungsi matematika yang mengubah lokasi piksel ke RA / DEC dan sebaliknya? Catatan:
Bintang terang adalah gumpalan dalam gambar; koordinat di atas kira-kira pusat gumpalan, tetapi mungkin tidak aktif dengan + -2 piksel.
Saya tahu saya bisa memutar bola angkasa sehingga bagian tengah gambar saya memiliki koordinat kutub 0,0. Jadi pertanyaan sebenarnya adalah "bagaimana menemukan rotasi ini" (tetapi lihat poin selanjutnya).
Jika elevasi / azimuth linear dalam gambar, ini akan mudah (er), tetapi tidak: Mengukur jarak sudut dengan foto
Saya dapat memberikan lokasi piksel lebih banyak bintang jika itu membantu. Saya percaya 3 harus cukup, tetapi saya bisa salah.
Saya mencoba memilih 3 bintang yang "tersebar" di seluruh gambar (karena saya pikir itu mengurangi kesalahan, tidak yakin), tetapi saya tidak yakin saya berhasil.
Saya melakukan ini untuk beberapa gambar dan ingin metode umum.
Melakukan ini akan membantu saya mengidentifikasi bintang yang lebih samar / objek Messier / dll dalam gambar.
Saya yakin banyak ahli astrofotografi ingin melakukan ini, tetapi belum menemukan perangkat lunak yang ada yang melakukan ini.
EDIT: Terima kasih, wah! Proyeksi gnoni adalah apa yang saya lewatkan. Saya sudah melakukan ini dengan asumsi transformasi linear:
(* 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}];
];
di mana x, y, dan z adalah masing-masing daftar 4-elemen yang terdiri dari bintang RA, deklinasi, koordinat x pada gambar, dan koordinat y pada gambar. xwid dan ywid adalah lebar dan tinggi gambar. Pada kasus ini:
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}
}
Sekarang, merujuk pada "{-2250.51, -1182.52, 385.689}" sebagai $ frow, "{-166.12, -543.746, -2376.73}" sebagai $ srow, dan "{0.480698, -0.861509, 0.163497}" sebagai $ null, subrutin PHP ini menerjemahkan koordinat RA / DEC ke 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));
}
}
Sayangnya, saya tidak lagi tahu mengapa ini bekerja, tetapi menggunakannya + menambahkan posisi bintang yang diketahui menghasilkan hasil yang lumayan (gunakan "gambar tampilan" untuk melihatnya ukuran penuh):
Namun, seperti yang Anda lihat, hasilnya tidak sempurna, meyakinkan saya bahwa transformasi linear bukanlah jawaban yang tepat. Saya pikir gnomonic mungkin adalah cawan yang saya cari.
sumber
Untuk melakukan ini dengan tingkat ketepatan yang sama seperti yang dilakukan para astronom profesional tentu akan sulit. Ini akan mengharuskan Anda untuk memiliki karakterisasi yang sangat tepat dari distorsi yang dihasilkan oleh lensa Anda, dan ketidaksempurnaan pada sensor kamera Anda. Namun, Anda mungkin tidak membutuhkan tingkat akurasi itu. Seharusnya cukup bagi Anda untuk mengasumsikan bahwa lensa Anda tidak menimbulkan distorsi dalam jumlah besar (yang merupakan asumsi yang baik untuk lensa berkualitas) dan bahwa sensor kamera Anda cukup dekat dengan kisi-kisi yang sangat teratur (yang merupakan asumsi yang sangat baik untuk bahkan kamera yang murah).
Yang tersisa adalah mengerjakan transformasi koordinat yang menggambarkan orientasi kamera, yaitu arah yang ditunjukkan dan sejauh mana ia diputar.
Apa yang Anda cari saat itu, disebut transformasi affine , atau peta affine. Yang hanya nama mewah untuk matriks yang dengannya Anda akan melipatgandakan koordinat piksel Anda untuk mendapatkan koordinat astronomi Anda. Dalam kasus peta affine, transformasi ini dapat mencakup derajat rotasi, skala, geser, dan terjemahan apa pun.
Arti komponen rotasi cukup jelas. Faktor skala hanya menggambarkan seberapa banyak langit yang dicakup oleh setiap piksel dalam hal RA / Des. Shear adalah transformasi yang akan membuat gambar persegi panjang menjadi jajar genjang, tetapi seharusnya tidak ada efek ini dalam gambar objek di infinity (seperti bintang). Terakhir, komponen terjemahan yang sederhana menambahkan offset ke akun karena fakta bahwa (x = 0, y = 0) piksel pada gambar Anda mungkin tidak sesuai dengan (RA = 0, Dec = 0).
Karena Anda memiliki 3 bintang referensi di gambar Anda, Anda memiliki informasi yang cukup untuk menghitung hubungan antara koordinat piksel Anda dan RA / Des yang Anda cari. Ini akan dilakukan oleh linear kuadrat terkecil (bukan kuadrat non-linear seperti yang disebutkan di atas) untuk menentukan nilai-nilai komponen matriks yang paling cocok dengan koordinat piksel Anda dengan RA / Des yang diketahui dari bintang referensi. Setelah matriks ditetapkan, Anda dapat menerapkannya pada koordinat piksel bintang lain untuk mendapatkan RA / Des.
Meskipun saya bisa melakukan ini dengan relatif mudah, sayangnya saya tidak yakin bagaimana membantu Anda melakukannya. Ini akan melibatkan beberapa keterampilan matematika yang sedikit di luar lingkup photo.SE. Saya seorang insinyur optik, tapi saya bukan fotografer. perangkat lunak yang akan saya gunakan untuk ini dirancang bagi para insinyur untuk melakukan perhitungan numerik tugas berat, dan sama sekali bukan alat fotografi. Mungkin ada cara untuk melakukan ini menggunakan paket perangkat lunak yang ditujukan untuk fotografer, tetapi saya tidak tahu tentang mereka.
sumber