Превратить экран Macbook в сенсорный с помощью машинного распознавания образов, зеркала, горячего клея — и потратить $1

Перевод материала из блога студента Массачусетского технологического института Аниша Аталье.

Мы превратили экран Macbook в сенсорный с помощью оборудования общей стоимостью $1 и машинного распознавания образов. Эксперимент под названием «Сикстинский проект» (в честь нашей фотографии-пародии на фреску «Создание Адама») разработан и проведён мной, Кевином, Гильермо и Логаном за 16 часов.

Механизм работы

Основной принцип работы устройства прост: если посмотреть на поверхность монитора под углом, можно увидеть отражение и по положению пальца понять, касается он экрана или нет. Если палец лежит на экране, то он как бы упирается в своё отражение.

Превратить экран Macbook в сенсорный с помощью машинного распознавания образов, зеркала, горячего клея — и потратить $1

Кевин ещё в средней школе заметил это и создал ShinyTouch. С помощью внешней веб-камеры он построил систему сенсорного ввода, не требующую практически никаких настроек.

Мы решили попробовать усовершенствовать эту систему без использования внешней камеры — установить маленькое зеркало перед встроенной в ноутбук камерой так, чтобы направить объектив на монитор под острым углом. Камера увидит пальцы, дотрагивающиеся до экрана, и мы сможем перевести видеозапись в касания с помощью машинного распознавания образов.

Оборудование

Настроить аппаратуру оказалось просто. Всё, что требовалось от нас, — установить зеркало перед камерой под определённым углом. Вот список использованных материалов:

  • Маленькое зеркало.
  • Жёсткий лист бумаги.
  • Дверная петля.
  • Горячий клей.

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

Вот как выглядит готовое изделие:

Превратить экран Macbook в сенсорный с помощью машинного распознавания образов, зеркала, горячего клея — и потратить $1

Обнаружение касания

Прежде чем начать процесс обработки видео, необходимо обнаружить палец. Вот пример того, что видит веб-камера:

Превратить экран Macbook в сенсорный с помощью машинного распознавания образов, зеркала, горячего клея — и потратить $1

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

  1. Отфильтровать цвет кожи и провести бинаризацию изображения.
  2. Обнаружить контуры.
  3. Найти два длинных контура — пальца и его отражения — и убедиться, что они пересекаются по горизонтали и что меньший контур находится над большим.

  4. Установить точку касания в центре линии, по которой соединяются верхушка нижнего контура и низ верхнего контура.

  5. Отличить касание от зависшего над монитором пальца по длине между двумя контурами.

Результат такого процесса, вид через веб-камеру. Палец и его отражение (контуры) показаны салатовым, ограничительная рамка красным, а точка касания — ярко-розовым
Результат такого процесса, вид через веб-камеру. Палец и его отражение (контуры) показаны салатовым, ограничительная рамка красным, а точка касания — ярко-розовым

Преобразование данных и настройка

Заключительный шаг обработки данных — преобразование координат точки касания с веб-камеры на координаты на мониторе. Они гомографически соответствуют друг другу. Мы вычисляем гомографическую матрицу с помощью настройки, во время которой пользователь должен дотронуться до определённых точек на мониторе.

Собрав все данные, которые сопоставляют координаты веб-камеры с координатами на мониторе, мы можем выполнить гомографическое преобразование с помощью метода RANSAC (Random Sample Consensus — метод оценки на основе случайных выборок). Оно даст нам матрицу проекции, которая преобразует координаты камеры в координаты на мониторе.

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

Точка касания по координатам камеры показана ярко-розовым цветом. После окончания настройки матрица проекции показывается красным, а программа переключается в режим, при котором расчётная точка касания обозначается синим.

Применение

Сейчас мы переводим касания и наведения в события мыши, делая существующие приложения сенсорными.

Если мы решим создавать собственные приложения, управляемые сенсорно, то сможем напрямую использовать данные касаний, включая информацию вроде высоты наведения пальца.

Для прототипа «Сикстинский проект» работает вполне неплохо. При наличии небольших усовершенствований, например веб-камеры с более высоким разрешением (разрешение нашей составляет 480 пикселей) и вогнутого монитора, который позволит камере видеть монитор полностью, «Сикстинский проект» может стать практичной и дешёвой сенсорной системой.

Исходный код

Код прототипа находится в открытом доступе и выпущен на основании лицензии Массачусетского технологического института.

123123
42 комментария

Если взять листок бумаги,
Ручку, ножницы и клей
И немножечко отваги,
Можно сделать сто рублей

87
Ответить
13
Ответить

Блин я вот то же самое собирался написать просто даже прочитав один заголовок..

Ответить

А черные пальцы распознает?

47
Ответить

Опачки, а вот и первый судебный иск разработчику!

38
Ответить

У них ладони белые. Нужно просто перевернутой вверх рукой водить

2
Ответить

У нас было маленькое зеркало, жесткий лист бумаги, дверная петля, тюбик, наполовину наполненный клеем, целое море свободного времени и $1.

18
Ответить