我有一个200x200二维的数据点阵列,对应于中的图像,最初以FITS格式存储。阵列中的每个数字表示在空间中该坐标处的光子计数。
我正试图为这些数据点创建一个Voronoi图,如下所示——
import numpy
import matplotlib
import scipy
from astropy.io import fits
#Header List
hdulist = fits.open("ElGordo_img_0540_full.fits")
#Converting the photon data to coordinates
#Any non-zero photon intensity is counted only once
#For testing purposes
def convert_coords(data):
coords = []
for i in range(len(data)):
for j in range(len(data[i])):
if data[i][j] >0:
coords.append([j,i])
return coords
# print convert_coords(test)
#Image DATA array stored in the Primary header
data_array = hdulist[0].data
#converting to coordinate form
coords_data = convert_coords(data_array)
#Making Voronoi plot
from scipy.spatial import Voronoi, voronoi_plot_2d
vor = Voronoi(coords_data)
#Plotting Voronoi
import matplotlib.pyplot as plt
voronoi_plot_2d(vor)
plt.show()
然而,这种方法只给出Voronoi,其中每个框都有一个"单个"点。图像看起来一团糟
为了从图中获得意义,我需要一种方法在我的Voronoi图中包含多个点(我认为这被称为"k阶Voronoi")。我如何在Python中实现这一点?我可能使用的任何预先存在的库/方法?
感谢
您可以尝试加权voronoi图。它被定义为真核生物的距离减去重量。