Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Photutils源检测不适用于小图片,适用于大图片,为什么?_Python_Image Processing_Physics_Astronomy_Astropy - Fatal编程技术网

Python Photutils源检测不适用于小图片,适用于大图片,为什么?

Python Photutils源检测不适用于小图片,适用于大图片,为什么?,python,image-processing,physics,astronomy,astropy,Python,Image Processing,Physics,Astronomy,Astropy,我试图在图片上探测恒星/天体。 这是我可以做得很好的图片,如下所示: 根据建议,我有以下代码: from astropy.stats import sigma_clipped_stats from photutils.datasets import make_100gaussians_image from photutils import find_peaks import matplotlib.pyplot as plt from astropy.visualization import s

我试图在图片上探测恒星/天体。 这是我可以做得很好的图片,如下所示:

根据建议,我有以下代码:

from astropy.stats import sigma_clipped_stats
from photutils.datasets import make_100gaussians_image
from photutils import find_peaks
import matplotlib.pyplot as plt
from astropy.visualization import simple_norm
from astropy.visualization.mpl_normalize import ImageNormalize
from photutils import CircularAperture
data = make_100gaussians_image()
mean, median, std = sigma_clipped_stats(data, sigma=3.0)
threshold = median + (5. * std)
tbl = find_peaks(data, threshold, box_size=11)
positions = (tbl['x_peak'], tbl['y_peak'])
apertures = CircularAperture(positions, r=5.)
norm = simple_norm(data, 'sqrt', percent=99.9)
plt.imshow(data, cmap='Greys_r', origin='lower', norm=norm)
apertures.plot(color='#0547f9', lw=1.5)
plt.xlim(0, data.shape[1]-1)
plt.ylim(0, data.shape[0]-1)
它工作正常,这是输出:

如果我将第10行修改为
threshold=median+(30.*std)
,那么我会得到一个标记了更少星星的输出,正如预期的那样。这是输出:

现在,我想将其用于此文件:

为此,我运行此代码,源代码从FITS文件加载:

import lightkurve
tpf=lightkurve.targetpixelfile.KeplerTargetPixelFile('ktwo201103700-c102_lpd-targ.fits')
from astropy.stats import sigma_clipped_stats
from photutils.datasets import make_100gaussians_image
from photutils import find_peaks
import matplotlib.pyplot as plt
from astropy.visualization import simple_norm
from astropy.visualization.mpl_normalize import ImageNormalize
from photutils import CircularAperture
#data = make_100gaussians_image()
data = tpf.flux[100]
mean, median, std = sigma_clipped_stats(data, sigma=3.0)
threshold = median + (0.1 * std)
tbl = find_peaks(data, threshold, box_size=11)
#tbl['peak_value'].info.format = '%.8g'  # for consistent table output
#print(tbl[:10])    # print only the first 10 peaks
positions = (tbl['x_peak'], tbl['y_peak'])
apertures = CircularAperture(positions, r=1.)
norm = simple_norm(data, 'sqrt', percent=99.9)
plt.imshow(data, cmap='Greys_r', origin='lower', norm=norm)
apertures.plot(color='#0547f9', lw=1.5)
plt.xlim(0, data.shape[1]-1)
plt.ylim(0, data.shape[0]-1)
输出如下。不管我在第13行中给出的树有多小,它只能找到一颗星,而不是两颗星


这是为什么?我如何修复它?

使用box\u size=4我得到以下结果:

在jupyter笔记本中运行脚本之前,我必须安装这些模块:

pip3 install jupyter lightkurve photutils
–并使用此命令查看图像结果:

plt.interactive(True)
%matplotlib
从这里开始::“Photutils提供Background2D类来估计天文图像中的2D背景和背景噪声。Background2D需要方框的大小(方框大小)在其中估计背景。选择框大小需要用户小心。框大小通常应大于图像中源的典型大小,但小到足以封装任何背景变化。“不是关于源检测的页面,但我认为这可以解释问题。