В данной статье не будет кода но будет описание проблем и логики их решения.
Итак. Проект для регистрации движения с камер наблюдения оказался достаточно интересным.
Столкнулся с многими вопросами и успешно их решил.
Вопросы
1 Принцип достаточности и необходимости при постановке задачи
2 Методика анализа изображения
Давно уяснил для себя один момент - всегда необходимо использовать принцип достаточности. Распространённая болезнь программистов - стремление к улучшению, оптимизации и совершенству кода :) Но если на этом заиорочиться на начальных этапах проектирования то можно потерять много премного времени...
Я исходил, в данном случае, из следующих соображений:
1 Достаточно что бы регистрировался бы факт движения при любой скорости перемещения
2 Необходимо что бы вокруг объекта рисовалась бы прямоугольная рамка.
3 Достаточно того что анализируется только один объект (так было в ТЗ)
4 Достаточно того что в случае испарения объекта на регистрирующем экране
останется последняя картинка перемещений.
Исходя из данных условий анализ движения производился следующим образом:
1 Ищем крайнюю верхнюю левую точку изменения изображени
2 Ищем крайнюю нижнюю правую точку изменения изображения
3 Разница в изменении цвета точки подбирается опытным путём (от этого зависит чувствительность системы)
4 Для достижения скорости картинка анализируется случайным распределением с количеством шагов в 50 % (в результате достигалась приличная скорость анализа изображения)
5 И... контрольный выстрел области случайного распределения разбиваются на 10 частей и запускается 10 потоков.
В результате клиент доволен, программа работает быстро задание выполнено.:)
TotalCoder
Итак. Проект для регистрации движения с камер наблюдения оказался достаточно интересным.
Столкнулся с многими вопросами и успешно их решил.
Вопросы
1 Принцип достаточности и необходимости при постановке задачи
2 Методика анализа изображения
Давно уяснил для себя один момент - всегда необходимо использовать принцип достаточности. Распространённая болезнь программистов - стремление к улучшению, оптимизации и совершенству кода :) Но если на этом заиорочиться на начальных этапах проектирования то можно потерять много премного времени...
Я исходил, в данном случае, из следующих соображений:
1 Достаточно что бы регистрировался бы факт движения при любой скорости перемещения
2 Необходимо что бы вокруг объекта рисовалась бы прямоугольная рамка.
3 Достаточно того что анализируется только один объект (так было в ТЗ)
4 Достаточно того что в случае испарения объекта на регистрирующем экране
останется последняя картинка перемещений.
Исходя из данных условий анализ движения производился следующим образом:
1 Ищем крайнюю верхнюю левую точку изменения изображени
2 Ищем крайнюю нижнюю правую точку изменения изображения
3 Разница в изменении цвета точки подбирается опытным путём (от этого зависит чувствительность системы)
4 Для достижения скорости картинка анализируется случайным распределением с количеством шагов в 50 % (в результате достигалась приличная скорость анализа изображения)
5 И... контрольный выстрел области случайного распределения разбиваются на 10 частей и запускается 10 потоков.
В результате клиент доволен, программа работает быстро задание выполнено.:)
TotalCoder
Комментариев нет:
Отправить комментарий