标签: centroid

数组的加权质心

所以我有一个二维数组代表一个坐标平面,一个图像.在该图像上,我正在寻找"红色"像素,并根据我的相机找到的所有红色像素找到(希望)红色LED目标的位置.目前,我只是将十字准线拍到所有红色像素的质心上:

// pseudo-code

for(cycle_through_pixels)
{
   if( is_red(pixel[x][y]) )
   {
      vals++; // total number of red pixels
      cx+=x;  // sum the x's
      cy+=y;  // sum the y's
   }
}
cx/=vals; // divide by total to get average x
cy/=vals; // divide by total to get average y

draw_crosshairs_at(pixel[cx][cy]); // found the centroid
Run Code Online (Sandbox Code Playgroud)

这种方法的问题在于,虽然这个算法自然地使质心更接近最大的斑点(红色像素最多的区域),但是当一点红色闪烁到一边时,我仍然看到我的十字准线从目标上跳下来眩光或其他轻微干扰.

我的问题是:

如何更改此模式以查找更加重量的质心?简而言之,我想让较大的红色斑块比较小的斑点更重要,甚至可能完全忽略远处的小斑点.

math image-processing centroid

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

计算R中的加权多边形质心

我需要根据单独的种群网格数据集计算一组空间区域的质心.感谢如何在下面的例子中实现这一目标.

提前致谢.

require(raster)
require(spdep)
require(maptools)

dat <- raster(volcano)   # simulated population data
polys <- readShapePoly(system.file("etc/shapes/columbus.shp",package="spdep")[1])

# set consistent coordinate ref. systems and bounding boxes
proj4string(dat) <- proj4string(polys) <- CRS("+proj=longlat +datum=NAD27")
extent(dat) <- extent(polys)

# illustration plot
plot(dat, asp = TRUE)
plot(polys, add = TRUE)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

gis r raster centroid

5
推荐指数
2
解决办法
2076
查看次数

K-Means 聚类中距质心最近的 M 个点

我实现了一个函数,用于查找运行 K 均值聚类算法后计算出的每个质心最近的数据点。我想知道是否有一个sklearn函数可以让我找到距离每个质心最近的M个点。

python cluster-analysis k-means centroid scikit-learn

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

多边形内的r sf包质心

我需要向多边形添加标签,并且通常使用质心,但是质心不会落在多边形内。我发现这个问题是在SpatialPolygon中/内部计算质心,但我使用的是sf包。

以下是玩具数据

rm(list = ls(all = TRUE)) #start with empty workspace

library(sf)
library(tidyverse)
library(ggrepel)

pol <- st_polygon(list(rbind(c(144, 655),c(115, 666)
                         ,c(97, 660),c(86, 640)
                         ,c(83, 610),c(97, 583)
                         ,c(154, 578),c(140, 560)
                         ,c(72, 566),c(59, 600)
                         ,c(65, 634),c(86, 678)
                         ,c(145, 678),c(144, 655)))) %>%
  st_sfc()

a = data.frame(NAME = "A")
st_geometry(a) = pol

a <- a  %>% 
  mutate(lon = map_dbl(geometry, ~st_centroid(.x)[[1]]),
     lat = map_dbl(geometry, ~st_centroid(.x)[[2]]))

ggplot() +
  geom_sf(data = a, fill = "orange") +
  geom_label_repel(data = a, aes(x = lon, y = lat, label …
Run Code Online (Sandbox Code Playgroud)

r centroid r-sf

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

如何在python Scikit-learn中获得聚集聚类“ Centroid”

这段代码是我使用的silhouette_score。在这里,我使用聚集聚类,链接称为Ward。我想获得聚集群集的“中心”,聚集群集是否有可能?我只能得到K均值的质心和Fuzzy c均值。

df1 
    Height  time_of_day resolution
272 1.567925    1.375000    0.594089
562 1.807508    1.458333    0.594089
585 2.693542    0.416667    0.594089
610 1.036305    1.458333    0.594089
633 1.117111    0.416667    0.594089
658 1.542407    1.458333    0.594089
681 1.930844    0.416667    0.594089
802 1.505548    1.458333    0.594089
808 1.009369    1.708333    0.594089


def clustering(df1):
    X = df1.iloc[:].values
    range_n_clusters = [2,3,4]
    for n_clusters in range_n_clusters:
        # Create a subplot with 1 row and 2 columns
        clusterer = AgglomerativeClustering(n_clusters=n_clusters, linkage='ward')  
        clusterer.fit_predict(X)
        cluster_labels = clusterer.labels_

        silhouette_avg = silhouette_score(X, cluster_labels)
        if silhouette_avg …
Run Code Online (Sandbox Code Playgroud)

python cluster-analysis centroid pandas scikit-learn

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

从R中的单个中心坐标和面积创建方形多边形

我在绘制真实的R中地理像素时遇到问题。这些文件随附了每日单个坐标和像素大小(面积)的列表。与此分开的还有一个Z元素。数据结构如下所示:

 X <- c(1,3,6,7)
 Y <- c(3,2,7,8)
 Z <- c(38,23,12,12)
 Area <- c(32,23,45,67)
Run Code Online (Sandbox Code Playgroud)

X和Y以经度和纬度为单位,而面积以平方公里为单位。我可以使用以下方法轻松创建点要素:

library(sp)
A <- cbind(X,Y,Z,Area)
B <- SpatialPoints(A)
Run Code Online (Sandbox Code Playgroud)

我可以使用面积值轻松地绘制这些图,以确定要绘制的“ cex”。Z列是强度,我使用这些值确定颜色。如何使用R中每个点的面积创建空间多边形要素?我将使用这些点来创建栅格化栅格。

r polygon centroid r-sp

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

如何获得路径质心D3

我不能使用.centroid()方法,因为它返回[NaN,Nan]。我不知道什么是正确的数据格式。

    var pathh = d3.geo.path();
    d3.selectAll("path.line")
        .each(function (d, i) {
        var centroid = pathh.centroid(d);
        console.log('Centroid at: ', d,+ centroid[0] + ', ' + centroid[1]);
     });
Run Code Online (Sandbox Code Playgroud)

我的数据格式是:一个对象是多边形的一个点(顶点)

0: Object
   area_id: "IVP001"
   vertex_id: "37451"
   x: "100"
   y: "100"

1: Object
   area_id: "IVP001"
   vertex_id: "37452"
   x: "150"
   y: "120"

2: Object
   area_id: "IVP001"
   vertex_id: "37453"
   x: "50"
   y: "120"
Run Code Online (Sandbox Code Playgroud)

有一个父数组,其中包含多边形的顶点对象。我想获取多边形的每个质心,并在此附加文本。

我的解决方案是正确的,但不够准确,而且丑陋...

    var areas = cg.selectAll("g.area-group")
        .data(data);    

    var ag = areas
            .enter()
            .append("g")
            .attr("class","area-group")
            .attr("data-area-id",function(d) {return d[0].area_id; });

    var area_path = ag.insert("path")
            .attr("class", "line") …
Run Code Online (Sandbox Code Playgroud)

format centroid d3.js

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

如何为k-means聚类选择初始质心

我正在致力于在 Python 中实现 k-means 聚类。为数据集选择初始质心的好方法是什么?例如:我有以下数据集:

A,1,1
B,2,1
C,4,4
D,4,5
Run Code Online (Sandbox Code Playgroud)

我需要创建两个不同的集群。我如何从质心开始?

python cluster-analysis data-mining k-means centroid

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

rgeos::gCentroid() 和 sf::st_centroid() 返回的值是否不同?

rgeos::gCentroid()和返回的值是否sf::st_centroid()不同?如果是这样,如何?

语境

在阅读了wiki 中rgeos部分导出相关命令后,我很高兴地看到我只需要这个包——不再需要导入包——来计算给定几何的质心。r-spatial/sfsfrgeos

但是,使用sf::st_centroid()给了我这个警告,这是在这里解决的

Warning message:
   In st_centroid.sfc(x = comarea606$geometry) :
   st_centroid does not give correct centroids for longitude/latitude data
Run Code Online (Sandbox Code Playgroud)

该警告使我测试了两种质心检索方法之间的相等性,以确保无论使用哪种方法,坐标都相同。

虽然我使用identical()%in%导致了不相同的匹配,all.equal()并且绘制了每种方法的质心的地图似乎在说这两种方法几乎相同。

有什么理由为什么一个方法会返回一组与另一个不同的值?

质心比较的 SS

可重现的例子

# load neccessary packages
library( sf )
library( rgeos )

# load data
comarea606 <-
    read_sf( 
      dsn = "https://data.cityofchicago.org/api/geospatial/cauq-8yn6?method=export&format=GeoJSON" 
      , layer = "OGRGeoJSON" 
    )

# find the centroid …
Run Code Online (Sandbox Code Playgroud)

equality r centroid r-sf

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

如何使用 Scikit-learn 找到聚类质心

我有一个带有(标记的)集群的数据集。我试图找到每个集群的质心(一个向量,他的距离是集群的所有数据点的最小距离)。

我找到了许多执行聚类的解决方案,然后才找到质心,但我还没有找到现有的质心。

Python schikit-learn 是首选。谢谢。

python machine-learning centroid scikit-learn

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