如何在astropy,python中通过"make_lupton_rgb of astropy"打造"pillars of creation"的好形象?
How to create a good image of "pillars of creation" by "make_lupton_rgb of astropy" in astropy,python?
我正在尝试编写代码来生成 "pillars of creation" 的 rbg 图像。为此,我正在使用对应于红色、蓝色和绿色的 fits 文件,并尝试使用 make_lupton_rbg 来生成 rbg image.However 我正在变全绿 image.I 相信,我必须对 Q 和 strech 值进行调整,但我找不到任何东西来给它一个好的颜色(如图所示) .
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("C:\Users\AKASH\Downloads\673nmos\673nmos.fits")[0].data
g=fits.open("C:\Users\AKASH\Downloads\656nmos\656nmos.fits")[0].data
b=fits.open("C:\Users\AKASH\Downloads\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,g,b,Q=1,stretch=0.1,filename="pillar.png")
plt.imshow(rgb_default, origin='lower')
plt.show()
适合的文件从这里下载--- https://www.spacetelescope.org/projects/fits_liberator/eagledata/
我得到的输出---
我应该得到的输出(或至少类似的东西)---
根据相对亮度缩放 r
、g
和 b
阵列并使用高线性拉伸变得更接近:
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()
我正在尝试编写代码来生成 "pillars of creation" 的 rbg 图像。为此,我正在使用对应于红色、蓝色和绿色的 fits 文件,并尝试使用 make_lupton_rbg 来生成 rbg image.However 我正在变全绿 image.I 相信,我必须对 Q 和 strech 值进行调整,但我找不到任何东西来给它一个好的颜色(如图所示) .
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("C:\Users\AKASH\Downloads\673nmos\673nmos.fits")[0].data
g=fits.open("C:\Users\AKASH\Downloads\656nmos\656nmos.fits")[0].data
b=fits.open("C:\Users\AKASH\Downloads\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,g,b,Q=1,stretch=0.1,filename="pillar.png")
plt.imshow(rgb_default, origin='lower')
plt.show()
适合的文件从这里下载--- https://www.spacetelescope.org/projects/fits_liberator/eagledata/
我得到的输出---
我应该得到的输出(或至少类似的东西)---
根据相对亮度缩放 r
、g
和 b
阵列并使用高线性拉伸变得更接近:
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()