thisの逆を実行しようとしています:(連続的な)強度の2D画像が与えられた場合、不規則に間隔を置いた蓄積ポイントのセット、 (が重複していないが!)の領域で互いにより近くに位置する。不規則に間隔を置いた積算ポイントを計算する方法
私の最初の試みは、「重み付けされた」k平均でした。私が重み付けされたk-meansの実用的な実装を見出さなかったので、私が重みを導入する方法は、高い強度の点を繰り返すことからなる。ここに私のコードです:
import numpy as np
from sklearn.cluster import KMeans
def accumulation_points_finder(x, y, data, n_points, method, cut_value):
#computing the rms
rms = estimate_rms(data)
#structuring the data
X,Y = np.meshgrid(x, y, sparse=False)
if cut_value > 0.:
mask = data > cut_value
#applying the mask
X = X[mask]; Y = Y[mask]; data = data[mask]
_data = np.array([X, Y, data])
else:
X = X.ravel(); Y = Y.ravel(); data = data.ravel()
_data = np.array([X, Y, data])
if method=='weighted_kmeans':
res = []
for i in range(len(data)):
w = int(ceil(data[i]/rms))
res.extend([[X[i],Y[i]]]*w)
res = np.asarray(res)
#kmeans object instantiation
kmeans = KMeans(init='k-means++', n_clusters=n_points, n_init=25, n_jobs=2)
#performing kmeans clustering
kmeans.fit(res)
#returning just (x,y) positions
return kmeans.cluster_centers_
ここでは、1)すべてのデータピクセルを利用しています。 2)ある閾値(RMS)以上のピクセルのみを利用する。
あなたがポイントを見ることができるように
は、高強度の領域に集中してより多くの規則的に離間しているようです。だから私の質問は、そのような蓄積点を計算するために(可能であれば、決定論的な)より良い方法が存在するかどうかです。
ありがとう、これは素晴らしいアイデアです!私はこの方法を研究し、それを私の要求に適応しようとします。 – mavillan