我正在尝试使用 scipy 包构建有界 Voronoi 图,在每次迭代中,我计算 Voronoi 单元的质心,并向质心移动一点(比如一些增量),并通过更新生成器点重新计算 Voronoi 图。当我尝试绘制更新的点时,我收到一个奇怪的错误,因为我绘制的点不是预期的位置。这是代码
import matplotlib.pyplot as pl
import numpy as np
import scipy as sp
import scipy.spatial
import sys
np.random.seed(1)
eps = sys.float_info.epsilon
n_robots = 10
robots = np.random.rand(n_robots, 2)
#print(robots)
bounding_box = np.array([0., 1., 0., 1.])
def in_box(robots, bounding_box):
return np.logical_and(np.logical_and(bounding_box[0] <= robots[:, 0],
robots[:, 0] <= bounding_box[1]),
np.logical_and(bounding_box[2] <= robots[:, 1],
robots[:, 1] <= bounding_box[3]))
def voronoi(robots, bounding_box):
i = in_box(robots, bounding_box)
points_center = robots[i, :]
points_left = np.copy(points_center)
points_left[:, 0] = …
Run Code Online (Sandbox Code Playgroud) 这是c ++代码.
vector<Moments> mu(contours.size() );
for( int i = 0; i < contours.size(); i++ ){
mu[i] = moments( contours[i], false );
}
//Mass center
vector<Point2f> mc( contours.size() );
for( int i = 0; i < contours.size(); i++ ){
mc[i] = Point2f( mu[i].m10/mu[i].m00 , mu[i].m01/mu[i].m00 );
}
Run Code Online (Sandbox Code Playgroud)
到目前为止这是我在android中的代码.我无法将群众中心转换为android.
//moments
List<Moments> mu = new ArrayList<Moments>(contours.size());
for (int i = 0; i < contours.size(); i++) {
mu.add(i, Imgproc.moments(contours.get(i), false));
}
//mass center
List<MatOfPoint2f> mc = new ArrayList<MatOfPoint2f>(contours.size());
for( int i = 0; i …
Run Code Online (Sandbox Code Playgroud) 我试图像这样计算图像质心:
// Calculate centroid
double signedArea = 0.0;
sskp_point centroid;
for(int i=0;i<numPoints;i++)
{
double a = (points[i].x*points[(i+1)%numPoints].y)-(points[(i+1)%numPoints].x*points[i].y);
signedArea += a;
centroid.x += (points[i].x*points[(i+1)%numPoints].x)*a;
centroid.y += (points[i].y*points[(i+1)%numPoints].y)*a;
printf("points[%d] = { %f, %f }\n",i,points[i].x,points[i].y);
}
signedArea /= 2.0;
centroid.x /= (6*signedArea);
centroid.y /= (6*signedArea);
printf("centroid = { %f, %f }\n",centroid.x,centroid.y);
Run Code Online (Sandbox Code Playgroud)
我已使用sklearn高斯混合模型算法(GMM)对数据(75000,3)进行了聚类。我有4个集群。我数据的每一点代表一个分子结构。现在,我想获得每个簇的最具代表性的分子结构,据我了解,它们是该簇的质心。到目前为止,我已经尝试使用gmm.means_属性定位在群集中心的点(结构),但是确切的点并不对应于任何结构(我使用numpy.where)。我将需要获取最接近质心的结构的坐标,但是在模块的文档中(http://scikit-learn.org/stable/modules/generation/sklearn),我还没有找到执行此功能的函数。 blend.GaussianMixture.html)。如何获得每个群集的代表性结构?
非常感谢您的帮助,任何建议将不胜感激。
((由于这是一个通用问题,我发现没有必要添加用于集群或任何数据的代码,请让我知道是否有必要))