计算图像旋转角度

import astropy.io.fits as fits
import math

headname1= "TS-1015-500_18_1-offset_1024-w_4096-h_4096-Mono16.fits"
img1 = fits.open("/Users/zhouxu/zhaoyuanyuan/tmp/"+headname1)
h1 = img1[0].header
ra10  =  h1["CRVAL1"]
dec10  =  h1["CRVAL2"]
x10  =  h1["CRPIX1"]
y10  =  h1["CRPIX2"]
a1   =   h1["CD1_1"]
b1   =   h1["CD1_2"]
c1   =   h1["CD2_1"]
d1   =   h1["CD2_2"]

headname2 = "TS-990-500-D1_21_1-offset_1024-w_4096-h_4096-Mono16.fits"
img2 = fits.open("/Users/zhouxu/zhaoyuanyuan/tmp/"+headname2)
h2 = img2[0].header
ra20  =  h2["CRVAL1"]
dec20  =  h2["CRVAL2"]
x20  =  h2["CRPIX1"]
y20  =  h2["CRPIX2"]
a2   =   h2["CD1_1"]
b2   =   h2["CD1_2"]
c2   =   h2["CD2_1"]
d2   =   h2["CD2_2"]

'''
ra =ra10+a1*(x1-x10)+b1*(y1-y10)
dec=dec10+c1*(x1-x10)+d1*(y1-y10)

and 

ra =ra20+a2*(x2-x20)+b2*(y2-y20)
dec=dec20+c2*(x2-x20)+d2*(y2-y20)

===>

ra10+a1*(x1-x10)+b1*(y1-y10)=ra20+a2*(x2-x20)+b2*(y2-y20)
dec10+c1*(x1-x10)+d1*(y1-y10)=dec20+c2*(x2-x20)+d2*(y2-y20)

x1 = k1 + k2*(x2-x20) + k3*(y2-y20)

k1 = x10+( (ra20-ra10)/b1-(dec20-dec10)/d1 )/(a1/b1-c1/d1) 
k2 = (a2/b1-c2/d1)/(a1/b1-c1/d1)
k3 = (b2/b1-d2/d1)/(a1/b1-c1/d1)

y1 = k4 + k5*(x2-x20) + k6*(y2-y20)
k4 = y10+( (ra20-ra10)/a1-(dec20-dec10)/c1 )/(b1/a1-d1/c1) 
k5 = (a2/a1-c2/c1)/(b1/a1-d1/c1)
k6 = (b2/a1-d2/c1)/(b1/a1-d1/c1)

if:

x1 = a + cosA*x2 + sinA*y2
y1 = d - sinA*x2 + cosA*y2

then

sinA = k3  or -1*k5
cosA = k2  or k6

'''

k1 = x10+( (ra20-ra10)/b1-(dec20-dec10)/d1 )/(a1/b1-c1/d1)
k2 = (a2/b1-c2/d1)/(a1/b1-c1/d1)
k3 = (b2/b1-d2/d1)/(a1/b1-c1/d1)

k4 = y10+( (ra20-ra10)/a1-(dec20-dec10)/c1 )/(b1/a1-d1/c1)
k5 = (a2/a1-c2/c1)/(b1/a1-d1/c1)
k6 = (b2/a1-d2/c1)/(b1/a1-d1/c1)

deg=180.0/math.pi

A1 = math.asin(k3)*deg
A2 = math.asin(-1*k5)*deg
A3 = math.acos(k2)*deg
A4 = math.acos(k6)*deg


print("Rotation angle:",A1,A2,A3,A4)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值