weixin_64967368 2023-11-14 23:38 采纳率: 0%
浏览 3

关于#python#的问题:透视修正

我目前想用python3.11中的astropy包来处理fits的图像并进行透视变化的修正
但是目前遇到一个问题,我运行下面代码之后并不能得到理想的结果,目前还是有一些倾斜且有一些不完整的小格子,具体代码如下,包括结果,我不知道下面如何修改才能得到一个修正好的结果,希望有人可以帮忙解答下:
具体代码:

from astropy.io import fits
import numpy as np
import matplotlib.pyplot as plt
from skimage.transform import warp, ProjectiveTransform
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False 
# 读取 FITS 文件
fits_file_path = 'E:/20231113.fits'
hdul = fits.open(fits_file_path)
data = hdul[0].data.byteswap().newbyteorder()

# 定义透视变换函数
def perspective_correction(image):
    rows, cols = image.shape

    src_points = np.array([[0, 0], [0, rows], [cols, 0], [cols, rows]])
    dst_points = np.array([[0,0], [0, rows], [cols * 0.85, 0], [cols * 0.85, rows]])


    # 通过透视变换矩阵创建 ProjectiveTransform 对象
    transform = ProjectiveTransform()
    transform.estimate(src_points, dst_points)

    # 应用透视变换
    corrected_image = warp(image, transform, output_shape=(rows, cols), mode='edge')

    return corrected_image

# 进行透视修正
processed_data = perspective_correction(data)

# 保存修正后的数据为新的 FITS 文件
output_fits_path = 'E:/output_image1.fits'
hdu = fits.PrimaryHDU(processed_data.byteswap().newbyteorder())
hdul_output = fits.HDUList([hdu])
hdul_output.writeto(output_fits_path, overwrite=True)

print("透视修正完成,并保存到", output_fits_path)

# 显示原始图像和修正后的图像
plt.figure(figsize=(10, 5))
plt.subplot(1, 2, 1)
plt.imshow(data, cmap='viridis')
plt.title('原始图像')

plt.subplot(1, 2, 2)
plt.imshow(processed_data, cmap='viridis')
plt.title('修正后的图像')

plt.show()

img

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-11-15 09:59
    关注

    【相关推荐】




    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 11月14日

悬赏问题

  • ¥100 有偿寻云闪付SDK转URL技术
  • ¥30 基于信创PC发布的QT应用如何跨用户启动后输入中文
  • ¥20 非root手机,如何精准控制手机流量消耗的大小,如20M
  • ¥15 远程安装一下vasp
  • ¥15 自己做的代码上传图片时,报错
  • ¥15 Lingo线性规划模型怎么搭建
  • ¥15 关于#python#的问题,请各位专家解答!区间型正向化
  • ¥15 unity从3D升级到urp管线,打包ab包后,材质全部变紫色
  • ¥50 comsol温度场仿真无法模拟微米级激光光斑
  • ¥15 上传图片时提交的存储类型