使用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改编的笔记本。