我的问题来自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直方图,以显示在哪里以及哪些像素处于活动状态。
我事先不知道每个事件中将激活多少个平面,哪个像素将被激活以及设备中有多少个像素。
我接下来要做的是在每个平面上制作不同形状的这些像素的“ 出现频率”。如果一堆相邻像素处于活动状态,则将它们称为群集。这种分类的一个例子:
因此,对于上述事件示例,将发现:
第一分类将基于每个设备具有的线数。这将很好地表明每个设备的活动像素数(不考虑案例:如果同一设备的两个区域在同一事件中触发活动像素)。
对于事件中的一行(表示一个像素处于活动状态),我可以将其直接分类为数字0类别。对于两行,我可以查看左侧/右侧(或顶部/底部)的相邻像素,并检查其是否处于活动状态并将其分类为事件1(或2)。
对于3像素的情况,我不确定如何检查。基本上,我将采用该设备发生Pix
的第一个值,但是我怎么知道它是3个活动像素中的哪个?
而且,如何在Python中对事件进行“分类”?我正在考虑形状的字典。并且一些功能检查以指定某种形状出现在这种形状上。如何在字典中实现?
确实,您可以编写事件字典。
一个简单的解决方案是:1.创建一个NxN矩阵(0和1)的字典。迭代生成所有这些可能的矩阵。例如N = 300010001000000000111011000000000 ... 010 ... 000000000 ... 111000 000 000 000 001 000 111
[可选,为优化此设置,请勿初始化字典。如果不存在,请添加一个新条目,然后增加计数器。
创建另一个形状的字典,例如:点,2行,2列,3行,3列,T,反向T,L,反向L等。
通过这种方式,您可以越来越接近解决方案,并确定需要保持抽象与否的要点。
我知道这不是一个具体的解决方案,但是它可以使您更接近所需的内容。