Tôi đang cố gắng làm ngược lại this: Cho hình ảnh cường độ (liên tục) 2D, tạo một tập hợp các điểm tích lũy không đều, tức là các điểm bất thường che phủ bản đồ 2D, gần nhau hơn ở các khu vực có cường độ cao (nhưng không trùng nhau!).Phương pháp tính toán các điểm tích lũy bất thường
Lần thử đầu tiên của tôi là "trọng số" k-means. Vì tôi không tìm thấy việc thực hiện hoạt động của các phương tiện có trọng số, cách tôi giới thiệu trọng số bao gồm lặp lại các điểm có cường độ cao. Đây là mã của tôi:
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_
Dưới đây là hai kết quả khác nhau: 1) Sử dụng tất cả các pixel dữ liệu. 2) Chỉ sử dụng các pixel trên một số ngưỡng (RMS).
Như bạn có thể thấy những điểm dường như được thường xuyên hơn cách nhau hơn tập trung tại các khu vực của cường độ cao.
Vì vậy, câu hỏi của chúng tôi là nếu có tồn tại (phương pháp xác định nếu có thể) phương pháp tốt hơn để tính toán điểm tích lũy đó.
Cảm ơn, đây là một ý tưởng tuyệt vời! Tôi sẽ nghiên cứu phương pháp này và cố gắng thích ứng với yêu cầu của tôi. – mavillan