Назначение событий предварительно определенным фигурам - PullRequest
0 голосов
/ 03 мая 2020

Мои вопросы приходят после того, что обсуждалось здесь и совета, который мне дали там.

Я получаю данные с семи устройств (каждое, XY матрица чувствительных пиксельных датчиков; подумайте о ПЗС-камере). Размеры каждого устройства составляют X: 1024 пикселя, Y: 512 пикселей. Данные структурированы в отдельные события (т. Е. С метками времени), где количество таких пикселей активно для каждого события. Положение XY каждого пикселя представлено двумя числами после ключевого слова Pix в каждом устройстве.

Пример такого события, когда только 6 из 7 устройств имеют активные пиксели:

=== 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 устройств двухмерную гистограмму, показывающую, где и какие пиксели были активными, благодаря предыдущему вопросу на форуме.

Я не знаю заранее сколько самолетов будет активным в каждом событии, какие пиксели будут активны и сколько в устройстве.

Что я хотел бы сделать дальше, это сделать " частота появления"различных форм этих пикселей на плоскость. Если группа соседних пикселей активна, они называются кластером. Пример такой классификации:

Different active pixel shapes

Таким образом, для приведенного выше примера события можно найти:

  • 2 вхождения идентификатора формы 0 (устройства 1 и 4)
  • 2 вхождения идентификатора формы 1 (устройства 2 и 5)
  • 1 вхождение идентификатора формы 6 (устройство 3)
  • 1 вхождение идентификатора формы 12 (устройство 6)

Первая классификация будет основываться на количестве линий, которые имеет каждое устройство. Это было бы хорошим показателем количества активных пикселей на устройство (случай не учитывается: если две области одного устройства имеют активные пиксели, запускающие одно и то же событие).

Для одной строки в событие (имеется в виду один пиксель активен), я мог бы напрямую классифицировать его в категорию номер 0. Для двух строк я мог бы посмотреть на соседний пиксель влево / вправо (или сверху / снизу) и проверить, активен ли он, и классифицировать его как событие 1 (или 2).

Для случая 3 пикселей: Я немного не уверен, как проверить. По сути, я бы взял первое значение вхождения Pix этого устройства, но как узнать, какой из 3 активных пикселей это?

Кроме того, как я могу "классифицировать" события в Python ? Я думаю о словаре форм. И некоторые функции проверяют, чтобы назначить определенное вхождение такой форме. Как это реализовано в словаре?

1 Ответ

0 голосов
/ 03 мая 2020

Вы действительно можете создать словарь вхождений.

Прямое решение:

  1. Создать словарь из NxN матриц 0 и 1. Генерация всех этих возможных матриц итеративно. например, N = 3

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

Всякий раз, когда приходит новое событие, нормализуйте матрицу пикселей и сопоставьте ее с цифрой в словаре. Увеличьте счетчик для этого. D (001 000 000) ++

Необязательно, чтобы оптимизировать это, не инициализируйте словарь. Просто добавьте новую запись, если она не существует, и увеличьте счетчик.

Тогда, если вас не заботит положение пикселей, а вы только фигуры, обработайте словарь.

Создайте другой словарь фигур, например: Точка, 2- линия, 2 столбца, 3 строки, 3 столбца, T, обратный T, L, обратный L и т. д.

Таким образом, вы можете go все ближе и ближе к решению и определять точки которые должны оставаться абстрактными или нет.

Я знаю, что это не конкретное решение, но оно может приблизить вас к тому, что вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...