在序列中查找一簇 1

Finding a cluster of 1s in a sequence

从图像预处理工具中,我得到了一系列 0 和 1,其中 1 表示预处理工具已找到我要查找的内容。在理想世界中,这看起来像这样:

00000000000000001111111000000000000000000

我现在需要找到 1 的“中间”位置,即

00000000000000000001000000000000000000000

这会相当简单(遍历列表,获取到 1 的过渡和到 0 的过渡,并从这两个位置计算中间值。

但是,这里有点棘手:

序列通常看起来更像:

0000100001000101000100000011110110111100000000001000101000000

即有大量的“噪音”。

我假设我可以假设,任何“孤独的”1 或“孤独的”0 都可能是噪音并翻转它,但我想知道是否有更优雅和更稳健的方法来找到“最有可能的集群” 1's" 的随机顺序?

您可以按正向和反向顺序对序列求和 运行。两个系列相等的地方就是你的中间。在此示例中,两个系列在索引 30 处都等于 9。

Index 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
Original 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 1 1 1 1 0 1 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0
Sum Series 0 0 0 0 1 1 1 1 1 2 2 2 2 3 3 4 4 4 4 5 5 5 5 5 5 5 6 7 8 9 9 10 11 11 12 13 14 15 15 15 15 15 15 15 15 15 15 15 16 16 16 16 17 17 18 18 18 18 18 18 18
Reverse Sum Series 18 18 18 18 18 17 17 17 17 17 16 16 16 16 15 15 14 14 14 14 13 13 13 13 13 13 13 12 11 10 9 9 8 7 7 6 5 4 3 3 3 3 3 3 3 3 3 3 3 2 2 2 2 1 1 0 0 0 0 0 0
Summed Sums 18 18 18 18 19 18 18 18 18 19 18 18 18 19 18 19 18 18 18 19 18 18 18 18 18 18 19 19 19 19 18 19 19 18 19 19 19 19 18 18 18 18 18 18 18 18 18 18 19 18 18 18 19 18 19 18 18 18 18 18 18

如果您查看该系列的图表,它确实是一个“X 标记点”的情况。 Series Graph