使用Imviz创建RGB图像

使用Imviz创建RGB图像#

用例:以编程方式使用Imviz创建RGB图像。

数据:卡里纳星云,NIRCam观测数据

工具:jdaviz

跨仪器:任何成像仪

文档:此笔记本是STScI更大后处理数据分析工具生态系统的一部分。

有关更多资源,请查看我们在Jdaviz库中维护的完整示例笔记本:https://github.com/spacetelescope/jdaviz/tree/main/notebooks

导入本笔记本所需的模块:

import warnings  # 导入警告模块,用于处理警告信息

from astroquery.mast import Observations  # 从astroquery库导入Observations模块,用于查询JWST观测数据

from jdaviz import Imviz  # 从jdaviz库导入Imviz模块,用于图像可视化

from IPython.display import Image  # 从IPython.display库导入Image模块,用于在Jupyter Notebook中显示图像

下载图像并加载 Imviz#

我们创建一个 Imviz 实例,并获取默认的查看器实例:

imviz = Imviz()  # 创建一个Imviz对象,用于可视化JWST数据

让我们下载一些数据。图像相当大,下载将需要几分钟。

data_dir = '.'  # 设置数据目录为当前目录

files = ['jw02731-o001_t017_nircam_clear-f090w_i2d.fits',  # NIRCam清晰图像文件列表
         'jw02731-o001_t017_nircam_clear-f187n_i2d.fits',
         'jw02731-o001_t017_nircam_clear-f200w_i2d.fits',
         'jw02731-o001_t017_nircam_clear-f335m_i2d.fits',
         'jw02731-o001_t017_nircam_clear-f444w_i2d.fits',
         'jw02731-o001_t017_nircam_f444w-f470n_i2d.fits']  # 结束文件列表

for fn in files:  # 遍历每个文件名
    uri = f"mast:JWST/product/{fn}"  # 构建文件的URI

    result = Observations.download_file(uri, local_path=f'{data_dir}/{fn}')  # 下载文件到指定路径

并加载到 Imviz 中。

import warnings  # 导入警告模块

with warnings.catch_warnings():  # 捕获警告
    warnings.simplefilter('ignore')  # 忽略所有警告

    with imviz.batch_load():  # 批量加载数据
        for fn in files:  # 遍历文件列表
            imviz.load_data(f'{data_dir}/{fn}', data_label=fn[31:36])  # 加载数据并设置数据标签

现在,我们可以展示 Imviz。

# 调用imviz模块的show()函数以显示图像
imviz.show()  # 显示图像

通过WCS对齐#

https://jdaviz.readthedocs.io/en/latest/imviz/plugins.html#orientation

您可能首先注意到的是,图像并没有占据整个查看器区域。如果您按下“b”键切换到下一幅图像,您会看到这幅图像默认是正确缩放的。另一幅图像的奇怪默认缩放是因为加载时图像是按像素链接的。我们可以改为通过WCS(世界坐标)进行链接,以便图像能够正确对齐。

在Imviz中有两种链接方式。首先,您可以通过“方向”(Orientation)插件在用户界面(UI)中选择“WCS”来进行链接。您可以打开右侧的插件托盘并搜索“方向”,或者执行以下单元格以自动打开它:

您还可以使用 Imviz Helper 从 API 设置链接类型:

# 通过WCS(世界坐标系统)链接图像(不使用仿射近似)。

imviz.plugins['Orientation'].link_type = 'WCS'  # 设置链接类型为WCS

imviz.plugins['Orientation'].wcs_use_affine = False  # 禁用仿射近似

现在,如果你眨眼,图像应该已经对齐。

绘图选项#

绘图选项插件允许您修改图像的显示方式。在这里,我们演示如何使用它来创建RGB图像。

要显示绘图选项插件,可以在插件栏中搜索,或者执行以下单元格以自动打开它:

# 获取 imviz 插件中的 'Plot Options' 选项
plot_options = imviz.plugins['Plot Options']

我们可以使用“分配 RGB 预设”(Assign RGB Preset)按钮,该按钮可以在用户界面中触发,也可以通过以下单元触发。

# 设置图像颜色模式为每层一个颜色
plot_options.image_color_mode = 'One color per layer'

# 应用RGB预设选项
plot_options.apply_RGB_presets()

我们只需要调整拉伸的最小值和最大值!

# 设置图层为 f090w 数据
plot_options.layer = 'f090w[DATA]'  

# 设置图像的最小拉伸值
plot_options.stretch_vmin = 4  

# 设置图像的最大拉伸值
plot_options.stretch_vmax = 16  

# 设置图像的偏置值
plot_options.image_bias = 0.39  

# 设置图层为 f187n 数据
plot_options.layer = 'f187n[DATA]'  

# 设置图像的最小拉伸值
plot_options.stretch_vmin = 10  

# 设置图像的最大拉伸值
plot_options.stretch_vmax = 16  

# 设置图像的偏置值
plot_options.image_bias = 0.74  

# 设置图层为 f200w 数据
plot_options.layer = 'f200w[DATA]'  

# 设置图像的最小拉伸值
plot_options.stretch_vmin = 1  

# 设置图像的最大拉伸值
plot_options.stretch_vmax = 5  

# 设置图像的偏置值
plot_options.image_bias = 0.66  

# 设置图层为 f335m 数据
plot_options.layer = 'f335m[DATA]'  

# 设置图像的最小拉伸值
plot_options.stretch_vmin = 4  

# 设置图像的最大拉伸值
plot_options.stretch_vmax = 27  

# 设置图像的偏置值
plot_options.image_bias = 0.67  

# 设置图层为 f444w 数据
plot_options.layer = 'f444w[DATA]'  

# 设置图像的最小拉伸值
plot_options.stretch_vmin = 1  

# 设置图像的最大拉伸值
plot_options.stretch_vmax = 14  

# 设置图像的偏置值
plot_options.image_bias = 0.56  

# 设置图层为 f470n 数据
plot_options.layer = 'f470n[DATA]'  

# 设置图像的最小拉伸值
plot_options.stretch_vmin = 1  

# 设置图像的最大拉伸值
plot_options.stretch_vmax = 6  

# 设置图像的偏置值
plot_options.image_bias = 0.60

让我们导出刚刚制作的图像。这是一个占位符,用于在插件中导出时获取正确的路径。

我们现在可以使用 astrowidget API。

viewer = imviz.default_viewer  # 获取默认的图像查看器

viewer.save('./carina.png')  # 将当前视图保存为carina.png文件
# 导入Image模块,用于显示图像
Image('./carina.png')  # 加载并显示名为'carina.png'的图像
太空望远镜标志

由Kyle Conroy创建,并由Duy Nguyen和Camilla Pacifici改编的笔记本。