将事件分配给预定义的形状

问题描述 投票:0回答:1

我的问题来自here所讨论的内容和在此得到的建议。

我从七个设备(每个都是响应性像素传感器的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直方图,以显示在哪里以及哪些像素处于活动状态。

我事先不知道每个事件中将激活多少个平面,哪个像素将被激活以及设备中有多少个像素。

我接下来要做的是在每个平面上制作不同形状的这些像素的“ 出现频率”。如果一堆相邻像素处于活动状态,则将它们称为群集。这种分类的一个例子:

Different active pixel shapes

因此,对于上述事件示例,将发现:

  • 2次出现形状ID 0(设备1和4)
  • 2次出现形状ID 1(设备2和5)
  • 1次出现形状ID 6(设备3)
  • 1次出现形状ID 12(设备6)

第一分类将基于每个设备具有的线数。这将很好地表明每个设备的活动像素数(不考虑案例:如果同一设备的两个区域在同一事件中触发活动像素)。

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

对于3像素的情况,我不确定如何检查。基本上,我将采用该设备发生Pix的第一个值,但是我怎么知道它是3个活动像素中的哪个?

而且,如何在Python中对事件进行“分类”?我正在考虑形状的字典。并且一些功能检查以指定某种形状出现在这种形状上。如何在字典中实现?

python matrix cluster-analysis pixel
1个回答
0
投票

确实,您可以编写事件字典。

一个简单的解决方案是:1.创建一个NxN矩阵(0和1)的字典。迭代生成所有这些可能的矩阵。例如N = 300010001000000000111011000000000 ... 010 ... 000000000 ... 111000 000 000 000 001 000 111

  1. [每当有新事件发生时,请标准化您的像素矩阵,并将其与字典中的像素矩阵进行匹配。增加计数器。 D(001000000)++

[可选,为优化此设置,请勿初始化字典。如果不存在,请添加一个新条目,然后增加计数器。

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

创建另一个形状的字典,例如:点,2行,2列,3行,3列,T,反向T,L,反向L等。

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

我知道这不是一个具体的解决方案,但是它可以使您更接近所需的内容。

© www.soinside.com 2019 - 2024. All rights reserved.