首页 > 解决方案 > 将事件分配给预定义的形状

问题描述

我的问题来自这里讨论的内容以及那里给我的建议。

我从七个设备(每个设备,一个响应像素传感器的 XY 矩阵;想想一个 CCD 相机)获取数据。每个设备的尺寸为 X:1024 像素,Y:512 像素。数据被构造成单独的事件(即,时间戳),其中每个事件有许多这样的像素是活动的。每个像素的 XY 位置由Pix每个设备中关键字后面的两个数字表示。

此类事件的示例,其中 7 个设备中只有 6 个具有活动像素:

=== 169139 ===
Start: 4.80374e+19
End:   4.80374e+19
--- 1 ---
Pix 9, 66
--- 2 ---
Pix 11, 31
Pix 12, 31
--- 3 ---
Pix 17, 53
Pix 16, 53
Pix 16, 54
--- 4 ---
Pix 44, 64
--- 5 ---
Pix 49, 133
Pix 48, 133
--- 6 ---
Pix 109, 143
Pix 108, 143
Pix 108, 144 
Pix 109, 144 

由于论坛中前面提到的问题,我现在能够为 6 个设备中的每一个分离并绘制一个 2D 直方图,显示活跃的像素和位置。

我事先不知道每个事件中有多少平面处于活动状态,哪些像素将处于活动状态以及设备中有多少。

我接下来想做的是为每个平面的这些像素的不同形状制作一个“出现频率”。如果一堆相邻的像素是活动的,它们被称为一个簇。这种分类的一个例子:

不同的活动像素形状

因此,对于上面给出的事件示例,人们会发现:

第一种分类将基于每个设备具有的线路数。这将很好地指示每个设备的活动像素数(未考虑的情况:如果同一设备的两个区域在同一事件中触发活动像素)。

对于事件中的一条线(意味着一个像素处于活动状态),我可以直接将其归为数字 0 类别。对于两条线,我可以查看左/右(或顶部/底部)相邻像素并检查它是否处于活动状态并将其分类为事件 1(或 2)。

对于3像素的情况,我有点不确定如何检查。基本上,我会取该设备出现的第一个值Pix,但我怎么知道它是 3 个活动像素中的哪一个?

另外,如何在 Python 中“分类”事件?我在想一本形状字典。并且某些功能会检查以将特定事件分配给这样的形状。这是如何在字典中实现的?

标签: pythonmatrixcluster-analysispixel

解决方案


事实上,你可以做一本事件字典。

一个直接的解决方案是:

  1. 创建一个包含 0 和 1 的 NxN 矩阵的字典。迭代生成所有这些可能的矩阵。例如 N=3

[00,00] [10,00] [01,00] [00,10] [00,01] [11,00] ... [11,11]

  1. 每当有新事件出现时,标准化您的像素矩阵并将其与字典中的像素矩阵相匹配。增加它的计数器。D(001 000 000) ++

可选地,为了优化这一点,不要初始化字典。如果它不存在,只需添加一个新条目并增加计数器。

  1. 然后,如果您不关心像素位置而只关心形状,请处理字典。

创建另一个形状字典,例如:点、2-line、2-column、3-line、3-column、T、reverse T、L、reverse L 等。

通过这种方式,您可以越来越接近解决方案,并确定需要保持抽象的点。

我知道这不是一个具体的解决方案,但它可能会让你更接近你想要的。


推荐阅读