如何在astropy、python中通过“make_卢普顿_rgb of astropy”来塑造一个好的“创世之柱”形象?

zc0qhyus  于 2022-12-28  发布在  Python
关注(0)|答案(1)|浏览(166)

我试图写一个代码来生成一个创造之柱的RBG图像。为此,我正在使用对应于红色,蓝色和绿色的fits文件,并试图使用make_lupton_rbg来生成RBG图像。然而,我得到了全绿色的图像。我相信,我必须对Q和拉伸值进行调整,但我找不到任何东西来给予它一个好的颜色(如图所示)。

import numpy as np
import matplotlib.pyplot as plt
from astropy.io import fits
from astropy.visualization import make_lupton_rgb

forc=np.float_()
r=fits.open("./673nmos.fits")[0].data
g=fits.open("./656nmos.fits")[0].data
b=fits.open("./502nmos.fits")[0].data

r = np.array(r,forc)
g = np.array(g,forc)
b = np.array(b,forc)

rgb_default = make_lupton_rgb(r,g,b,Q=1,stretch=0.1,filename="pillar.png")
plt.imshow(rgb_default, origin='lower')
plt.show()

fits文件从here下载
这是我得到的输出

而这是我应该得到的输出(或者至少是类似的东西)

lp0sw83n

lp0sw83n1#

基于rgb阵列的相对亮度并使用高线性拉伸来缩放这些阵列会更加接近:

import numpy as np
import matplotlib.pyplot as plt
from astropy.io import fits
from astropy.visualization import make_lupton_rgb

forc=np.float_()
r=fits.open("/path/to/673nmos/673nmos.fits")[0].data
g=fits.open("/path/to/656nmos/656nmos.fits")[0].data
b=fits.open("/path/to/502nmos/502nmos.fits")[0].data

r = np.array(r,forc)
g = np.array(g,forc)
b = np.array(b,forc)

rgb_default = make_lupton_rgb(r*5,g*0.75,b*8,Q=0.001,stretch=300,filename="pillar.png")
plt.imshow(rgb_default, origin='lower')
plt.show()

但很明显,线性拉伸处理尖峰效果不佳,这可以通过在应用make_lupton_rgb之前简单地进行阈值滤波来补偿:

import numpy as np
import matplotlib.pyplot as plt
from astropy.io import fits
from astropy.visualization import make_lupton_rgb

forc=np.float_()
r=fits.open("/path/to/673nmos/673nmos.fits")[0].data
g=fits.open("/path/to/656nmos/656nmos.fits")[0].data
b=fits.open("/path/to/502nmos/502nmos.fits")[0].data

r = np.array(r,forc)*5
g = np.array(g,forc)*0.75
b = np.array(b,forc)*8

t = 250
r[r > t] = t
g[g > t] = t
b[b > t] = t

rgb_default = make_lupton_rgb(r,g,b,Q=0.001,stretch=300,filename="pillar.png")
plt.figure(figsize=(8,8))
plt.imshow(rgb_default, origin='lower')
plt.show()

相关问题