python – 测量连续点的曲率
|
我有一个点列表(数量级为数万),我需要使用 python识别两件事: 1-这些点中的连续点组(abs(x2-x1)< = 1和abs(y2-y1)< = 1) 2-每组的弧度/半径 以下是一组示例:
解决方法这将为您提供群集和 list of angles:from sklearn.cluster import DBSCAN
from scipy.spatial import distance
from scipy.optimize import curve_fit
import numpy as np,math
data = [[331,522]] #....
def angle(pt1,pt2):
x1,y1 = pt1
x2,y2 = pt2
inner_product = x1*x2 + y1*y2
len1 = math.hypot(x1,y1)
len2 = math.hypot(x2,y2)
return math.acos(inner_product/(len1*len2))
db=DBSCAN(eps=1,min_samples=2,metric='precomputed').fit(
distance.squareform(distance.pdist(data)))
core_samples = db.core_sample_indices_
labels = db.labels_
n_clusters_ = len(set(labels)) - (1 if -1 in labels else 0)
unique_labels = set(labels)
for k in unique_labels:
class_members = [index[0] for index in np.argwhere(labels == k)]
cluster_core_samples = [index for index in core_samples
if labels[index] == k]
curve = np.array([data[index] for index in class_members])
print k,curve,[angle(p1,p2) for p1,p2 in zip(curve,curve[1:])] (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
