Ние произвеждаме графичен таблет от уеб камери със собствените си ръце
И тогава уеб камера на таблета, може да се каже. И тук и там - за една чиния, че ние ще бъдем виртуално!
Веднъж, след като е прочел за играчката Sony Eye от [1], си мислех за необичайни начини да се въвеждат данни в компютъра. В този момент дойде идеята да се опита да се самосглобят нещо подобно - добър уеб камера е под ръка.
Така че, нека помислим - които могат да бъдат наблюдавани с камера? На първо място - позицията на всеки обект, който е различен от фона. Въпреки това, той трябва да се движи само на определен самолет - цели да се проследят координати в пространството ще изисква две камери. Второ - ние можем да се проследи промяната в цвета и формата на обекта. За съжаление, признаването на форма ще изисква сериозно изследване на алгоритми за разпознаване на образи, и поради това трябва да бъде изоставена. Дори един прост проследяване на позиция в пространството е достатъчно, за да се съберат на виртуална табела, ако се грижи за натискане на сензора.
По този начин, принципа на работа. Намира се в камерата видите бялата книга. Тук на върха на цвят химикалка маркер. Ако копчето, за да се премести на лист хартия, след това чрез откриване на маркер на цвят снимката може да се получи координати в равнината на дръжката. Ако тези координати се превръща в движение на курсора на екрана, ние получаваме една проста виртуална табела.
Дръжка с цвят маркер
За стабилна признаване е необходимо, за да следите на цвета се различава значително от фоновото изображение. В допълнение, цветът трябва да е богата. Най-доброто нещо е имало ръка - стикери се използват за залепване на цените на стоките. Bright зелен цвят перфектно контрастира с фоновото изображение.
Вземете един обикновен химикал.
Вземете една лепенка, и нарязани на тънки ленти.
Лентата се навива на дръжката на прът.
Нашата "staylus" готова. Картината показва, че наситен цвят е буквално "изгаряне" и затова непрекъснато ще призната от нашата програма. Нашата писалка не е натиснат сензора, така че потребителят ще трябва да използвате произволен клавиш от клавиатурата, например - ляв Ctrl.
Всъщност, "хардуер" част е вече приключила. Ние прикрепи фотоапарата стабилно, така че хартията може да се сервира като голяма част от картината, и направи "писалка". Софтуерът на камерата се вижда, че когато се направи на хартия, на снимката на фотоапарата може ясно да се види на цвят маркер. Ние трябва да се напише софтуер, който ще проследява позицията на маркера върху лист хартия и да го превърне в движение на движение на курсора на екрана на компютъра. Аз трябва да кажа, че читателят е запознати с програмиране да пропуснете следващите две секцията и да отидете директно на изпитание, тъй като -Шелф на софтуера е приложен към статията.
С камерите получаваме картина в RGB (червено, зелено, синьо). С тази информация, трябва да се признае за позицията (координатите) на маркера в изображението. Нямах никакво желание да се справят с най-сложни алгоритми за разпознаване на образи, и затова взех най-простият алгоритъм: в една линия, за да мине през всички пиксели на изображението, изберете тези, чийто цвят е подобен на цвета на маркера, както и да намерите най-средните координатите на точки (X, Y) ,
Сравнете цветовете по-добри в пространство на YUV (Y - яркост, UV - цвят), игнорирайки яркост (Y). Това е да се гарантира, че условията на осветеност не оказват влияние върху стабилността на признаването.
Координатите на всички точки, подобни на цвета на маркера, е необходимо да се определят и се разделят на броя им. По този начин, ние получаваме средна позиция, която ще бъде позицията на нашето маркер в изображението.
където п - брой подобни точки.
Така че, първата версия на нашия "шофьор" вече е в състояние да определи координатите на маркера в изображението. Въпреки това, координатите на изображението - това не е координатите на хартията, като лист отнема цялото изображение област. Второ, листът е разположена косо към равнината на изображението.
За да се превърне маркера в образа на координатите на хартията, ние трябва да знаем координатите на ъглите на хартията в изображението. За да направите това, трябва само да поиска от потребителя да "калибрира" нашата виртуална таблет - кликнете в ъглите на хартията.
След "калибриране" ние получаваме четири чифта координати (х1, у1, Х2, Y2, X3, Y3, Х4, У4) в картината, които съответстват на краищата на хартията. Сега е необходимо да се приведе съотношението, което ще ни позволи да се преведат на координатите на изображението (х, у) на координатите на хартията (X, Y). На първо място, аз не можех да разбера как да го направя, но след това успях да се намери решение.
Хартия е равнината, в пространството. Да приемем, че координатите на ъглите на изображението в три измерения са:
Тъй като ние не се интересуват от реални измерения в пространството и само относителните координати на лист хартия, можем да взема позиция зад триизмерен самолета. I избра определен за получаване на изход X и Y координатите в интервала [0..1].
От триизмерна графика на курса, ние знаем, че за да се създаде двуизмерни образи на триизмерен модел на триизмерни координати на точките се умножават по местно матрица на обекта и сензора на камерата:
Получените триизмерни координати в пространството камера се проектира върху плоскостта на екрана. Обикновено се използва за тази проекция матрица, но в случай на перспектива проекция на същият процес може да се опише чрез проста формула:
където е - фокусно разстояние.
Заместването (1) в (2) и боя матрица вектор размножаването на:
където - сумата на елементите на матрицата .gif
Отново, тъй като ние се интересуваме само от съотношението на фокусното разстояние може да се пропусне, и предположи, че той е включен в елементите на матрицата. са в числителя.
Умножете и напишете (3):
Express X, Y (координати на лист хартия):
Като формула (4), можем да получи координатите на хартията (X, Y) координира на картината в (х, у). Координатите на лист хартия ще бъдат в интервала [0..1]. и просто ще ги умножи по разделителната способност на екрана, за да се получи желаната позиция на курсора.
Как да намерите елементите на формула (4)? Ние знаем координатите на триизмерната ъгли хартия (- приети по-рано) и техните координати в картината (- получена по време на калибриране). Необходимо е да ги заместят във формула (4) и решаване на получената система от уравнения.
Ние получаваме система от линейни уравнения, които могат да бъдат написани на матрична форма, като:
Добавих матрицата с нули под него, за да получите квадрат.
Имаме 8 9 уравнения и неизвестни. 9 За да намерите неизвестното не е достатъчно 8 уравнения. Но ние знаем, че точката (X, Y, Z) са в равнината, и следователно зависи линейно. Това е всъщност уравненията повече от непознатото, а след това, системата има решение. Нека просто кажем, че такава система от уравнения решен чрез разлагане по особена стойност на матрицата, която се счита тук няма, защото със сигурност вече толкова уморен :).
усложни хардуер
Така че, ние вече може да се направи с помощта на нашата чиния! Въпреки това, признаването на стабилността е силно зависимо от условията на осветеност и да използвате клавиша Ctrl, за да кликнете не е много удобно. Нека да поставим "напреднал стилус" за нашия таблет.
За подобряване на стабилността, реших да се облича в зелено писалка върха LED. Сега стабилността на признаване на практика зависи от осветление. Като се натисне сензора, взех микропрекъсвача от стария мишката.
Вземете една стара милионсантиметра химикалка диаметър.
Вземете старата COM-мишката.
На мишката, се нуждаем от жицата към конектора и микропрекъсвача.
Microswitch се вкарва в ръкохватката, така че при натискане на буталния прът на писалката включени.
Вземете зеления светодиод. Малко съм го отряза с ръбовете, за да по-малко.
Лепило светодиода на върха на писалката. I увити LED фолио от страни. Сега, в мрака около индикаторът не създава аура, както и признаване на стабилността е подобрена.
Payaem всички по-горе схема. Значението е както следва: Индикаторът се захранва от сигналните линии COM порт и стабилен на. Микро превключвател затваря веригата на приемане и предаване, и по този начин депресирани програмата получава "ехо" на данните, предадени. Можете да проверите това, като пуснете HyperTerminal и напишете няколко знака на конзолата. При натискане на бутона - героите не се показват. Когато натиснат - влезе знаци се предават от терминала, върнати обратно и се показва на конзолата.
След монтажа, трябва да имате нещо подобно.
За конфигуриране на софтуера
Опитах се да направя софтуера с най-интуитивен интерфейс под формата на Учителя.
Веднага след старта, софтуерът се опитва да се свърже с уеб-камера и не се нуждае от калибриране. Фокусирам се отделно на някои страница на съветника.
На цветен екран монитора Настройки е необходимо да изберете параметрите на "разсейване", "чувствителност" и гледах цвета, така че лявата картина на върха на писалката е ясно последва червен кръст.
Ние трябва да започнем с параметъра "Чувствителност". Задайте го така, че в десния прозорец ще се открояват ясно ни цветен маркер. Щракнете с мишката върху изображението на маркера в ляво или дясно прозореца. Програма да си спомня цвета, който искате, и започнете да събирате подобни термини. Брой на подобни точки се показва под етикета "Пробите се броят:". В лявата част на прозореца, подобни точки са отбелязани в розово. Необходимо е да изберете опцията "разсейване", така че броят на подобни точки приблизително равна на петдесет. Може да се наложи да се коригира размера на цвят маркер на върха на дръжката и отстраняване на чужди тела извън полезрението на камерата.
Надявам се, че останалата част от инструкциите, няма да доведе до проблеми. След завършване на магистърската, нашата "шофьор" се намира в системния трей. Включване / изключване на таблета може да бъде ключ "Scroll Lock" на клавиатурата.
Мисля, че ако някога имате желание да си купите някакъв евтин таблет ", за да играе с", за тези цели ще бъде достатъчно, за виртуална. В крайна сметка, всичко, което трябва - е да поставите фотоапарата, придържайте се маркер на върха на писалката, инсталирате софтуера - и плочата е готова.
Допълнително съдържание