Распознавание линий на доске
Краткое содержание
Я пытаюсь разработать приложение реального времени, которое, на основе последовательности изображений доски, захваченных веб-камерой, распознает линии, рисуемые на ней. Ему необходимо уметь распознавать линии на фоне доски, фильтровать присутствие учителя на изображении и преобразовывать эти линии в некоторое представление – что-то вроде списка основных событий, таких как "начало линии в xxx,xxx", "продолжение линии в xxx,xxx"… После нескольких дней поисков литературы и справочных материалов ничего не найдено. Наиболее похожими являются приложения для распознавания символов, особенно когда присутствует стадия распознавания штрихов. Какие-либо подсказки? Входные данные будут такими: это, это или это (просто без присутствия студентов). Я ожидаю, что учитель не будет прятать свою руку. Можно представить себе начало с пустой доски. Спасибо. Примечание: я ищу не просто ответ, который говорит только о чем-то вроде "вы можете использовать глубокое обучение, обучив его с двумя классами", без деталей или ссылок.
Полный текст
Задано 6 лет, 1 месяц назад Изменено сегодня Просмотрено 199 раз
Задано 6 лет, 1 месяц назад
2 $\begingroup$ Я пытаюсь разработать приложение в реальном времени, которое, из последовательности изображений доски, сделанных веб-камерой, распознает линии, которые на ней рисуются. Ему должно быть возможно распознавать линии с фона доски, фильтровать присутствие учителя на изображении и преобразовывать эти линии в некоторое представление, что-то вроде списка основных событий, таких как "начало линии в xxx,xxx", "продолжение линии в xxx,xxx" ... После нескольких дней поиска справочных материалов и литературы, ничего не найдено. Наиболее похожими являются приложения для распознавания символов, особенно когда есть стадия распознавания штрихов. Какие-нибудь подсказки? Вход будет в виде последовательности, например, этой, этой или этой (просто без присутствия студентов). Я ожидаю, что учитель не будет прятать свою руку. Мы можем представить себе начало с пустой доской. Спасибо. Примечание: я ищу ответ, который говорит только о чем-то вроде "вы можете использовать глубокое обучение, обучив его двум классам", без деталей или ссылок. Обнаружение объектов Обработка изображений Поделиться улучшением этого вопроса Следить за редактированием 14 дек. 2019 в 12:41 задано 14 дек. 2019 в 11:47 pasaba por aqui 1,313 7 7 серебряных значков 21 21 бронзовый значок $\endgroup$ 3 1 $\begingroup$ Я бы рассмотрел преобразование Хоука en.wikipedia.org/wiki/Hough_transform $\endgroup$ George White – George White 2019-12-14 18:53:38 +00:00 Комментировано 14 дек. 2019 в 18:53 $\begingroup$ @GeorgeWhite: спасибо за ваш комментарий. Как вы знаете, преобразование Хоука в основном предназначено для обнаружения прямых линий. Его можно обобщить на другие параметрические кривые, но я не вижу перспектив его использования в случае свободных форм. $\endgroup$ pasaba por aqui – pasaba por aqui 2019-12-14 19:31:36 +00:00 Комментировано 14 дек. 2019 в 19:31 $\begingroup$ Из "начало линии в xxx,xxx", "продолжение линии в xxx,xxx" я думал, что вы предполагали прямые линии. $\endgroup$ George White – George White 2019-12-14 19:33:40 +00:00 Комментировано 14 дек. 2019 в 19:33 Добавить комментарий | 2 Ответа 2 Отсортировано по: Сбросить по умолчанию Наивысший балл (по умолчанию) Измененная дата (от новых к старым) Созданная дата (от старых к новым) 0 $\begingroup$ Я предполагаю, что камера стабильна (без изменения положения, масштаба или других настроек во время записи видео), в противном случае задача становится значительно более сложной. Предположим, что ваш набор данных представляет собой массив растров (изображения в формате массива). Вы упоминаете, что вам нужно обнаруживать события "начало линии" и "окончание линии". Одним из способов сделать это является вычисление приблизительной производной вашей последовательности изображений. Например, возьмите изображение растра на индексе idx и следующее за ним изображение на индексе idx+1 (захваченные в моментах t и t + Δt, где Δt - интервал выборки). В координатах (i,j), эта производная может выглядеть примерно так: timeDerivative = (images[idx][j][i] - images[idx+1][j][i])/DeltaT. Это грубая оценка, и существуют лучшие способы вычисления приблизительной дискретной производной, но идея есть идея. После этого можно объявить состояние записи: рисуется линия или не рисуется линия. Состояния, мы предполагаем, что они всегда чередуются, поскольку учителю приходится отводить руку, чтобы нарисовать новую линию. Если обнаружена большая производная (область изображения внезапно переходит из черного в белый) и состояние "не рисует", событие "начало линии" записывается, а состояние переключается на "рисует". Пока большая производная продолжает обнаруживаться со временем в окрестности предыдущего места с большой производной, ничего не меняется. Когда это перестает быть правдой, состояние переключается на "не рисует", и событие "окончание линии" записывается в последней точке с большой производной. Это основная идея, которую можно улучшить путем: определения области доски, либо вручную, либо автоматически, усреднения изображений для лучшего результата.