射线聚类算法

2024-04-15

我知道显然有点的聚类算法,但我有不同的场景。我有许多光线,它们的起点都在 3D 球体上,并且其方向矢量向内指向球体。一些光线指向 A 点,其他光线指向 B 点等,并带有一些噪声(即光线彼此不完全相交)。是否有一种聚类算法可以让我根据光线指向的点对光线进行聚类?我不知道 A、B 等点的位置,只知道光线的起点和方向向量。

例如,在这幅图片中 https://i.stack.imgur.com/yJqRq.png是一个示例设置,但在 2D 中,我不知道哪些光线一开始是红色或蓝色。我如何将光线聚集成红色和蓝色?或者,我如何找到他们指向的点的位置?

我想到的一个解决方案是采用成对的光线,找到这两条光线之间最近的点(在二维中,如果延伸光线,这就是交点),并对每对光线执行此操作(所以我会得到 n (n-1)/2 点,其中 n 是光线数量)。然后,我可以对这些点使用常规聚类算法。但是,这似乎不起作用 - 我在原点只得到一大块点,我不知道为什么会发生这种情况。


这是一些可以尝试的东西,大致基于https://en.wikipedia.org/wiki/Random_sample_consensus https://en.wikipedia.org/wiki/Random_sample_consensus and https://en.wikipedia.org/wiki/K-means_clustering https://en.wikipedia.org/wiki/K-means_clustering。它尝试爬山找到解决方案,因此您可能需要使用不同的随机开始多次尝试。

我们尝试找到点和簇的排列,以最小化从每个簇中的射线(扩展为线)到与每个簇关联的点的平方距离之和。我们知道,点到线的距离的平方是二次方(https://en.wikipedia.org/wiki/Distance_from_a_point_to_a_line https://en.wikipedia.org/wiki/Distance_from_a_point_to_a_line)因此,如果您知道哪些线进入哪个簇,您就可以找到该簇的点,该点可以最小化它的平方距离之和。

如果您知道点,但不知道哪些线属于哪些簇,则可以将每条线分配给距离它最近的点的簇。

因此,首先将线随机分配到簇中。现在找到每个簇的点,使距离平方和最小。现在你有了点,将每条线放入距离最近的点的簇中,进一步减少距离平方和。现在您已经将线以不同的方式排列成簇,重新计算点,再次减少平方距离的总和。显然,您可以重复此过程,减少每一步的距离平方和,直到收敛到某个局部最小值。

我建议您尝试多次,每次都从不同的随机开始开始,并查看相同的答案是否在最后出现多次,在这种情况下,您可能会发现接近全局最佳值的结果,或者至少有一个非常突出的局部最小值。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

射线聚类算法 的相关文章

  • 点集子集的最小周长凸包

    给定平面上的 n 个点 没有 3 个共线 给定数字 k 找到 k 个点的子集 使得 k 个点的凸包在 k 个点的子集的任何凸包中具有最小周长 我可以想到一个简单的方法 运行时间为 O n k k log k 找到大小为 k 的每个子集的凸包
  • 由周期表元素形成的最大单词的算法

    我想为以下问题场景编写一个算法 根据元素周期表元素的名称 找到可以组成的最大单词 符号如Na Ne等应被视为单个元素 这是在一家知名公司的求职面试中被问到的 有人可以帮我解决这个问题吗 我认为更好的方法是检查字典中的每个单词 看看是否可以从
  • 无需构建树即可预测霍夫曼压缩比

    我有一个二进制文件 我知道其中每个符号出现的次数 如果我要使用霍夫曼算法压缩它 我需要预测压缩文件的长度 我只对假设的输出长度感兴趣 而不对单个符号的代码感兴趣 因此构建霍夫曼树似乎是多余的 作为一个例子 我需要得到类似的东西 包含 4 个
  • URL路径相似度/字符串相似度算法

    我的问题是我需要比较 URL 路径并推断它们是否相似 下面我提供了要处理的示例数据 GROUP 1 robots txt GROUP 2 bot html GROUP 3 phpMyAdmin 2 5 6 rc1 scripts setup
  • 快速约会算法

    我在一家咨询公司工作 大部分时间都在客户所在地 正因为如此 我很少见到同事 为了更好地了解彼此 我们将安排一个晚宴 会有很多小桌子 方便人们聊天 为了在聚会期间与尽可能多的不同的人交谈 每个人都必须每隔一段时间 比如每小时 换一张桌子 如何
  • 在常数空间中创建 1..N 的随机排列

    我正在寻找枚举固定空间中数字 1 N 的随机排列 这意味着我无法将所有数字存储在列表中 原因是 N 可能非常大 超过可用内存 我仍然希望能够一次遍历这样一个数字的排列 只访问每个数字一次 我知道对于某些 N 可以这样做 许多随机数生成器随机
  • 迭代任意大小的子集

    我可以迭代大小为 1 的子集 for int a 0 a lt size a 或大小为 2 的子集 for int a1 0 a1 lt size a1 for int a2 a1 1 a2 lt size a2 or 3 for int
  • 归并排序中递归树的高度log(n)+1是怎么来的

    我按照 stackoveflow 的建议阅读了一些问题和答案 我正在遵循 cormen 的 算法简介 一书进行自学 那本书里已经解释得很清楚了 但唯一没有解释的是如何在合并排序分析中计算树的高度 如果在后面的章节中对此进行解释的话 我仍然在
  • Florian 的 Grisu2 算法如何工作?

    我遇到了一个关于将 double 转换为 ascii 的问题 经过搜索 我得到了 Florian 的论文 使用整数快速准确地打印浮点数 http www cs tufts edu nr cs257 archive florian loits
  • 两组点之间的最佳匹配

    I ve got two lists of points let s call them L1 P1 x1 y1 Pn xn yn and L2 P 1 x 1 y 1 P n x n y n 我的任务是找到它们点之间的最佳匹配 以最小化它
  • 实施二分查找有哪些陷阱? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 二分查找比看起来更难实现 虽然二分搜索的基本思想相对简单 但细节可能出人意料地棘手 Donald Knuth 新的二分搜索实现中最有可
  • 二维滑动窗口最小值/最大值

    假设我们得到一个大小为 NxN 的像素整数矩阵和一个整数 k 窗口大小 我们需要使用滑动窗口找到矩阵中的所有局部最大值 或最小值 这意味着 如果某个像素与其周围窗口中的所有像素相比具有最小 最大 值 则应将其标记为最小 最大 有一种著名的滑
  • 有没有时间复杂度为O(N)的排序算法?

    大多数排序算法的复杂度为 O NN 或 O NlogN 来实现结果 但是 对于特定的输入集 有些算法的复杂度为 O N 我想知道是否有一种排序算法在所有情况下都具有 O N 的复杂度 如果您只能比较 检查两个项目是否为 正在排序的值 那么您
  • 数学/算法使图像适合屏幕保留纵横比

    我需要数学 算法方面的帮助来拍摄已知尺寸的图像并适合两个屏幕尺寸之一 720 x 480 或 1280 x 1024 图像尺寸来自 XML 文件 但这些尺寸是 Web 尺寸 我还从 XML 中选择了一些图像 这些图像的分辨率可能比 Web
  • 数量重新分配逻辑 - 具有外部数据集的 MapGroups

    我正在研究一种复杂的逻辑 需要将数量从一个数据集重新分配到另一个数据集 在例子中我们有Owner and Invoice 我们需要从数量中减去Invoice准确地Owner匹配 在给定汽车的给定邮政编码处 减去的数量需要重新分配回同一辆车出
  • 列出所有 k 元组,其条目总和为 n,忽略旋转

    有没有一种有效的算法来查找所有序列k总和为的非负整数n 同时避免旋转 如果可能的话 完全避免 顺序很重要 但对于我正在解决的问题来说 轮换是多余的 例如 与k 3 和n 3 我想要得到一个如下所示的列表 3 0 0 2 1 0 2 0 1
  • 如何使用 python 有效地找到两个大文件的交集?

    我有两个大文件 它们的内容如下所示 134430513125296589151963957125296589 该文件包含未排序的 id 列表 某些 id 可能会在单个文件中出现多次 现在我想找到路口两个文件的一部分 这就是两个文件中都出现的
  • 优先连接,Matlab 中的复杂网络

    大家好 我现在正在 MATLAB 中研究优先附件模型 在理解以下内容时遇到一些困难 假设我一开始有 4 个节点 连接如下 time 0 1 lt gt 2 3 lt gt 4 在下一个时间步骤中 我添加一个节点和 4 个连接 然后添加另一个
  • pytesseract 无法从图像中识别复杂的数学公式

    我在用pytesseractpython 中的模块 pytesseract从图像中识别文本 但它不适用于包含复杂数学公式 例如根 推导 积分数学问题或方程 的图像 代码2 py Import modules from PIL import
  • 在矩阵/位图中查找质量簇

    这是此处发布的问题的延续 在 2D 位图上查找质心 https stackoverflow com questions 408358 finding the center of mass on a 2d bitmap正如给出的例子 它讨论了

随机推荐

  • Spring Data Rest 覆盖存储库(控制器与 AOP)

    域 存储库 Project User owner Querydsl repositories RepositoryRestResource public interface ProjectRepository extends PagingA
  • chrome.identity.getProfileUserInfo 意味着返回什么?

    随着 Chrome 37 的发布 有一个新的 API 可用 身份 getProfileUserInfo https developer chrome com extensions identity method getProfileUser
  • Mocha:异步与同步

    根据 Mocha 文档 Mocha 测试串行运行 这意味着按照它们定义的顺序运行 我的问题是 是什么让async 带有完成回调 测试不同于sync 您通过传递给 Mocha 来告诉 Mocha 测试是异步的it调用一个带有参数的函数 传统上
  • 如何从适配器类打开弹出窗口

    我创建了一个类 用于在 RecyclerView 内的 CardView 中显示员工详细信息 新的要求是点击时显示卡片的弹出窗口 所以我添加了 setOnClickListener 并且它工作正常 我在日志中得到了卡名 但是如何通过单击打开
  • 是否可以将自定义参数传递给 android market,以便我的应用程序在首次启动时收到它?

    有没有办法将自定义参数传递给 android market 或任何其他方式 以便我的应用程序在安装后 并首次运行 接收该参数 让我解释 使用 argument1 Hello world1 自定义参数 每一个 时间 从 Android 市场安
  • 如何打乱数组? [复制]

    这个问题在这里已经有答案了 我想在 JavaScript 中打乱数组元素 如下所示 0 3 3 gt 3 0 3 9 3 6 0 6 gt 0 3 6 9 6 3 3 6 0 6 gt 0 3 6 3 6 Use Fisher Yates
  • onUpgrade数据库Android版本号不增加

    我正在尝试更新 Android 应用程序中的数据库 当我更新版本号时 会调用onUpgrade 但版本号不会增加 因此每次访问数据库时 都会调用onUpgrade 这是我的代码 private final static int DB VER
  • 如何在 iPhone 上将 NSMutableData 转换为 NSString?

    我从服务器收到 NSMutableData 现在我想将其转换为 NSString 关于如何做到这一点有什么想法吗 您可以使用initWithData 初始化器 NSString alloc initWithData data encodin
  • Python - 类似于 VLOOKUP (Excel) 的函数

    我正在尝试连接两个数据框 但无法理解 Python 提供的可能性 第一个数据框 ID MODEL REQUESTS ORDERS 1 Golf 123 4 2 Passat 34 5 3 Model 3 500 8 4 M3 5 0 第二个
  • 如何使用python分离两条高斯曲线?

    I measured the fluorescence intensity of thousands of particles and made the histogram which showed two adjacent gaussia
  • Google Map API 3 从 API 2 的代码中为标记创建不同的颜色

    我在 API 2 中使用了此代码 但找不到 API 3 的等效代码 我想根据严重性为标记创建不同的颜色 因此它们不是静态值 我有如何创建的问题GICON G DEFAULT ICON GSize 和 addOverlay 如果有人告诉我如何
  • Scala:将 Map 应用于元组列表

    非常简单的问题 我想做这样的事情 var arr1 Array Double var arr2 Array Double var arr3 Array Double Double arr1 zip arr2 arr3 foreach x g
  • 检查(从书签)页面是否已加载?

    我正在写一个书签 javascript 这里的问题是用户可以在某些页面完成加载之前和之后调用它 我想确保脚本仅在页面加载完成后运行 怎么做 检查文档是否已加载的一种方法是检查文档就绪状态 http www w3 org TR html5 d
  • Python C-API 访问字符串常量

    我想使用 python 的 C API 在 C 语言中实现我为 python 编写的库 在 python 中 我可以通过声明以下内容在我的模块中声明 常量 RED red Not really a constant I know BLUE
  • 如何使用 stargazer 或 xtable 省略交互?

    是否可以使用omit选项 通常我会将变量名称写入omit c varname 但在互动的情况下我不知道该写什么 有什么提示吗 在其他包中如何解决这个问题 例如xtable documentclass article begin docume
  • Firebase 更改 Android 中子数据信息的布局

    这是我的 firebase 数据结构 当在我的应用程序中打印出来时 它是这样的 我该如何改变这个 所以它不显示逗号 但改为新行 在 Android 中 我只有一段代码可以从子 成分 中检索所有值 那是因为您已将成分存储在数组中 Fireba
  • 想要在激活 iOS 键盘时调整浏览器视口的大小

    在 iOS 网络浏览器 Safari Chrome 等 中 当您单击输入字段并显示键盘时 它会保持视口大小相同 但将其部分向上滑动到视图之外 这使得创建类似应用程序的网站非常困难 因为我正在编写一个聊天应用程序 当键盘显示时 我希望将对话完
  • SQL Server:如何将固定值绑定到列?

    假设我定义了一个 char 列类型 我想严格限制它的值 例如 黑 白 红 蓝 我怎样才能做到这一点 据我所知 这在 Access 中很容易 P 如果只有几个允许的值 那么您可以使用CHECK约束 http msdn microsoft co
  • 使用 Docker Jenkins 容器管道构建 docker 映像时找不到 Docker

    我有一个 Jenkins 作为 docker 容器运行 现在我想使用管道构建 Docker 映像 但 Jenkins 容器总是告诉 Docker 未找到 simple tdd pipeline Running shell script do
  • 射线聚类算法

    我知道显然有点的聚类算法 但我有不同的场景 我有许多光线 它们的起点都在 3D 球体上 并且其方向矢量向内指向球体 一些光线指向 A 点 其他光线指向 B 点等 并带有一些噪声 即光线彼此不完全相交 是否有一种聚类算法可以让我根据光线指向的