2016-08-09 14 views
5

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).

Without threshold

With threshold

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 đó.

Trả lời

1

Phân vùng dữ liệu bằng quadtrees (https://en.wikipedia.org/wiki/Quadtree) thành các đơn vị có phương sai bằng nhau (hoặc có thể sử dụng giá trị nồng độ?), Sử dụng giá trị xác định, sau đó giữ một điểm trên đơn vị (centroid). Sẽ có nhiều phân khu ở những khu vực có giá trị thay đổi nhanh hơn, ít hơn trong các khu vực nền.

+0

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

Các vấn đề liên quan