用python打开ccd相机_用python测量CCD图像

博主正在尝试用Python计算CCD图像的板常数,通过手动标记的星星坐标进行天文测量,但遇到了结果偏差的问题。代码中展示了如何从像素坐标转换到RA/DEC坐标的过程。

我正在尝试实现一个非常简单的天体测量代码。我已经手动在我的照片中找到了几个星星的坐标(RA/DEC和x/y像素)。

一切似乎都是直截了当的,但我还是得到了奇怪的结果,偏离了几度。在

我正在尝试求解我拍摄的一张CCD图像的板常数,在那里我用手找到了照片中的恒星坐标和位置,现在我想尝试找到(0,0)点的真实世界坐标。在

我希望有人能帮助我的代码或告诉我如何正确地做。

提前谢谢你!在

这是我的代码:import numpy as np

import os

def astrometry(star_pos, xpix, ypix, focallength, target_RA, target_DEC):

pi = np.pi

DegToRad = pi / 180

RadToDeg = 180 / pi

n = len(star_pos)

(target_RA, target_DEC) = (target_RA, target_DEC)

print(target_RA, target_DEC)

# 1) Obtain star coordinates in pixel and RA/DEC

x_pix = [row[0] for row in star_pos]

y_pix = [row[1] for row in star_pos]

ra_star = [row[2] for row in star_pos]

dec_star = [row[3] for row in star_pos]

# 2) Calculate the standard coordinates of the stars

X_star = np.zeros(n)

Y_star = np.zeros(n)

for i in range(n):

X_star[i] = -(np.cos(DegToRad*dec_star[i])*np.sin(DegToRad*(ra_star[i] - target_RA)))/(np.cos(DegToRad*target_DEC)*np.cos(DegToRad*dec_star[i])*np.cos(DegToRad*(ra_star[i]-target_RA)) + np.sin(DegToRad*target_DEC)*np.sin(DegToRad*dec_star[i]))

Y_star[i] = -(np.sin(DegToRad*target_DEC)*np.cos(DegToRad*dec_star[i])*np.cos(DegToRad*(ra_star[i]-target_RA)) - np.cos(DegToRad*target_DEC)*np.sin(DegToRad*dec_star[i]))/(np.cos(DegToRad*target_DEC)*np.cos(DegToRad*dec_star[i])*np.cos(DegToRad*(ra_star[i]-target_RA)) + np.sin(DegToRad*target_DEC)*np.sin(DegToRad*dec_star[i]))

# 3) Calculate the plate constants (Check my notes)

def calc_plate_const(k,x,y,X):

c_down = ((x[k+1]-x[k])*(y[k]*x[k+2]-y[k+2]*x[k])-(x[k+2]-x[k])*(y[k]*x[k+1]-y[k+1]*x[k]))

c_up = (X[k]*x[k+1]*(y[k]*x[k+2]-y[k+2]*x[k])-X[k+1]*x[k]*(y[k]*x[k+2]-y[k+2]*x[k])-X[k]*x[k+2]*(y[k]*x[k+1]-y[k+1]*x[k])-X[k+2]*x[k]*(y[k]*x[k+1]-y[k+1]*x[k]))

c = c_up/c_down

print('c',c)

b = ((X[k]*x[k+1]-X[k+1]*x[k])-(x[k+1]-x[k])*c)/(y[k]*x[k+1]-y[k+1]*x[k])

print('b',b)

a = (X[k]-b*y[k]-c)/x[k]

print('a', a)

return(a,b,c)

(a,b,c) = calc_plate_const(0,x_pix,y_pix,X_star)

(d,e,f) = calc_plate_const(0,x_pix,y_pix,Y_star)

print(target_RA,target_DEC)

# 4) Calculate the standard coordinates for the object

# HIER object at (0,0)

(x_ob, y_ob) = (0,0)

X_ob = a*x_ob + b*y_ob + c

Y_ob = d*x_ob + e*y_ob + f

print('x', x_pix, x_ob, 'y', y_pix, y_ob)

print('X', X_star, X_ob, 'Y', Y_star, Y_ob)

print('RA', ra_star, 'DEC', dec_star)

# 5) Calculate the RA/DEC of the objects standard coordinates

a = target_RA + np.arctan(DegToRad*((-X_ob)/(np.cos(DegToRad*target_DEC)- Y_ob*np.sin(DegToRad*target_DEC))))

d = target_DEC - np.arcsin(DegToRad*((np.sin(DegToRad*target_DEC) + Y_ob*np.cos(DegToRad*target_DEC))/(np.sqrt(1 + X_ob**2 + Y_ob**2))))

print('RA in rad', a, 'DEC in rad', d)

print('RA',a,target_RA, 'DEC',d, target_DEC)

return(a,d)

例如,输入是一个数组,其中以图像像素表示的星星位置和真实世界的度数

^{pr2}$

我预计(0,0)点RA在133°左右,12月-5.75°

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值