首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >光源检测不适用于小图片,适用于大图片,为什么?

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

Stack Overflow用户
提问于 2018-08-27 10:39:39
回答 1查看 387关注 0票数 1

我试图在图片上探测星星/天文物体。这是我可以做得很好的图片,概述如下:

按照建议在这个网站上,我有以下代码:

代码语言:javascript
复制
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文件加载的:

代码语言:javascript
复制
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行给出多小的回放,它只找到一颗星,而不是两颗,这是我们想要的。

这是为什么,我怎么能修好它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-27 12:08:57

对于box_size=4,我得到了以下结果:

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

代码语言:javascript
复制
pip3 install jupyter lightkurve photutils

-并使用此命令查看图像结果:

代码语言:javascript
复制
plt.interactive(True)
%matplotlib
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52037492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档