标签: centroid

质心 Voronoi 镶嵌

我正在尝试使用 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)

python geometry voronoi scipy centroid

3
推荐指数
1
解决办法
2021
查看次数

如何获得轮廓的质量中心?Android opencv

这是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)

android opencv centroid

2
推荐指数
1
解决办法
1万
查看次数

查找图像等高线质心

我试图像这样计算图像质心:

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

我从算法调整这个位置,但它给我的错误的结果,谁能告诉我什么是错与此相适应?

c c++ image-processing centroid

1
推荐指数
1
解决办法
1435
查看次数

如何获得GMM集群的代表点?

我已使用sklearn高斯混合模型算法(GMM)对数据(75000,3)进行了聚类。我有4个集群。我数据的每一点代表一个分子结构。现在,我想获得每个簇的最具代表性的分子结构,据我了解,它们是该簇的质心。到目前为止,我已经尝试使用gmm.means_属性定位在群集中心的点(结构),但是确切的点并不对应于任何结构(我使用numpy.where)。我将需要获取最接近质心的结构的坐标,但是在模块的文档中(http://scikit-learn.org/stable/modules/generation/sklearn),我还没有找到执行此功能的函数。 blend.GaussianMixture.html)。如何获得每个群集的代表性结构?

非常感谢您的帮助,任何建议将不胜感激。

((由于这是一个通用问题,我发现没有必要添加用于集群或任何数据的代码,请让我知道是否有必要))

cluster-analysis centroid scikit-learn gmm

1
推荐指数
1
解决办法
2751
查看次数