我有以下问题:
给定一张图像,我正在进行一些斑点检测。作为一个限制条件,假设我最多有16个斑点,并且从每个斑点中计算质心(x,y位置)。 如果没有畸变发生,这些质心会按照等距4x4网格排列,但它们可能非常扭曲。 假设它们保持更或少的网格形式,但它们可能非常扭曲。
我需要对这些斑点进行排序,以便知道哪一个是最近的左、右、上和下。所以最好将这些斑点写入矩阵中。
如果这还不够,可能会检测到少于16个,那么我也需要将它们排序到矩阵中。
有人知道如何在Matlab中高效地解决这个问题吗?
谢谢。
[更新1:]
我上传了一张图片,红色数字是我的斑点检测算法分配给每个斑点的数字。
结果矩阵应该像这样带着这些数字:
例如,我从blob 11开始,最近的右侧数字是12,以此类推。
更新2: 发表的解决方案看起来很不错。实际上可能会出现外部点之一或者也许两个缺失...我知道这会使一切变得更加复杂,我只是想知道是否值得花费时间。 如果您使用Shack-Hartmann波前传感器分析波前,并希望增加动态范围,则会出现这些问题 :-) 斑点可能真的被弯曲,以至于分界线不再正交。 也许有人知道分类算法的好文献。 最好的解决方案是能够在FPGA上实现而不需要太多努力,但在这个阶段这并不是很重要。
给定一张图像,我正在进行一些斑点检测。作为一个限制条件,假设我最多有16个斑点,并且从每个斑点中计算质心(x,y位置)。 如果没有畸变发生,这些质心会按照等距4x4网格排列,但它们可能非常扭曲。 假设它们保持更或少的网格形式,但它们可能非常扭曲。
我需要对这些斑点进行排序,以便知道哪一个是最近的左、右、上和下。所以最好将这些斑点写入矩阵中。
如果这还不够,可能会检测到少于16个,那么我也需要将它们排序到矩阵中。
有人知道如何在Matlab中高效地解决这个问题吗?
谢谢。
[更新1:]
我上传了一张图片,红色数字是我的斑点检测算法分配给每个斑点的数字。
结果矩阵应该像这样带着这些数字:
1 2 4 3
6 5 7 8
9 10 11 12
13 16 14 15
例如,我从blob 11开始,最近的右侧数字是12,以此类推。
更新2: 发表的解决方案看起来很不错。实际上可能会出现外部点之一或者也许两个缺失...我知道这会使一切变得更加复杂,我只是想知道是否值得花费时间。 如果您使用Shack-Hartmann波前传感器分析波前,并希望增加动态范围,则会出现这些问题 :-) 斑点可能真的被弯曲,以至于分界线不再正交。 也许有人知道分类算法的好文献。 最好的解决方案是能够在FPGA上实现而不需要太多努力,但在这个阶段这并不是很重要。