вторник, 15 июля 2014 г.

Как работает оптическая мышь. ЧАСТЬ 3. Refresh rate и Polling rate.

Как работает оптическая мышь. ЧАСТЬ 3. Refresh rate и Polling rate.

С размером матрицы сенсора тесно связан такой параметр, как скорость фотографирования поверхности, которая измеряется в fps (frames per second/кадров в секунду). Действительно, чтобы указанный на Рисунке 1 паттерн не убежал, достаточно просто чаще фотографировать поверхность. Как правило, fps современных мышей колеблется от 3000 fps (Logitech g100s) и выше. Microsoft 3.0 имела две версии с 6000 fps и 9000 fps соответственно. В лазерных мышках SteelSeries, типа Xai, Sensei скорость фотографирования может достигать 12000 fps.

Рисунок 1. Поиск паттерна

Частота опроса (polling rate).
Несмотря на то, что мышь фотографирует поверхность с огромной частотой (это нужно именно сенсору для правильной работы), передача данных о движении происходит по законам порта USB, к которому подключена мышь. Максимальная скорость данного порта – 1000 опросов в секунду, т.е. Герц (Гц). Стандартные офисные мышки передают данные с частотой 125 Гц. Разберем частоту опроса на примере 125 Гц. 125 Гц – это значит, что мышь будет опрашиваться один раз в 8 мс (миллисекунд) [125 * 8 мс= 1000 мс = 1 с]. Т.е. если вы пальнули во врага, нажав левую кнопку мыши, сам выстрел может задержаться на 8 мс. Много это или мало? Обычный средний пинг игровых серверов – 15 мс. Задержка лучших игровых мониторов – около 5-10 мс. На фоне этого 8 мс, кажется, что-то да значат. Но решать вам, я лично предпочитаю задержки в 1 мс, т.е. использую мыши с частотой опроса 1000 Гц.

Как работает оптическая мышь. ЧАСТЬ 2. Факторы качества.



Как работает оптическая мышь. ЧАСТЬ 2. Факторы качества.

Насколько хороша та или иная мышь определяется рядом факторов. Часть из них субъективны, например форма, жесткость/мягкость клавиш, количество кнопок (т.е. кому как удобно), но некоторые параметры можно вполне точно описать цифрами:

- размерность светочувствительной матрицы сенсора в пикселях;
- разрешение (DPI/CPI);
- скорость фотографирования поверхности (фотографий в секунду) и частота опроса (Гц/Hz);

Итак по порядку.

Размер светочувствительной матрицы.

В подавляющем своем большинстве матрицы сенсоров представляют собой маленькую черно-белую камеру, состоящую из светочувствительных элементов и имеющая форму квадрата. Чем больше размер матрицы в пикселях, тем больше скорость движения, при которой мышь остается работоспособной. Важно понимать, почему так происходит. Обратимся к Рисунку 1.

РИСУНОК 1. Влияние размера светочувствительной матрицы сенсора мыши.

Дело в том, что в ходе работы сенсор мыши предполагает, что какая-то часть предыдущей фотографии будет соответствовать другой, и на основании этого он делает вывод о направлении и скорости движения. Но если быстро двигать мышкой, то два последующих снимка могут не иметь между собой ничего общего! Именно поэтому, чем больше размер светочувствительной матрицы сенсора, тем больше предельная скорость работы сенсора. Однако использование более больших матриц налагает определенные требования к производительности процессора мышки, а они не бесконечны. Ведь большие фотографии труднее обрабатывать и они требуют больше памяти. На практике я не встречал сенсоры размером больше чем 32х32 (PixArt 3305, SS Kana, Kinzu, Zowie Mico, A4tech Bloody V).

Как работает оптическая мышь. ЧАСТЬ 1. Принцип.



Как работает оптическая мышь. ЧАСТЬ 1. Принцип.

Этот материал представляет собой вольный перевод статьи Optical Mouse technology by Owens R.L. За собой оставляю право что-то опускать, что-то дополнять, а что-то комментировать.

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

Т.е. оптический сенсор мыши постоянно фотографирует поверхность, по которой ездит мышь. Сравнивая между собой фотографии мышь делает вывод о направлении и скорости своего движения и передает эти данные на компьютер в виде значений dx и dy.
Расчет движения, как правило, происходит с использованием всяких дифференциальных уравнений и прочего матана, недоступного обычным людям. Но посмотреть можно вот тут:
 
- http:/csail.mit.edu/~bkph/papers/Optical_Flow_OPT.pdf - “Optical Flowtechnology;

Важно отметить, что лазерные мышки – это тоже оптические мыши. Но если «обычные» оптические мышки используют для подсветки поверхности светодиодный излучатель LED (как правило, красный), то в лазерных мышках для подсветки используется лазерное излучение VCSEL – т.е. излучение с фиксированной длиной волны света. И это придает лазерным мышкам некоторые особенности. Но об этом в другой раз.

Следует упомянуть, что существует еще одна технология, основанная также на лазерном излучении. Это сенсоры серии Phillips Twin Eye (PTE), в которых два источника лазерного излучения одновременно являются и его приемниками, и по разности исходящего и входящего излучений определяют параметры движения мыши. Данные сенсоры широко применяются в продукции фирмы Razer (Imperator, Naga и т.д.). Особенность данной технологии – это т.н. «Z-axys»-баг, когда мышь реагирует на вертикальное движение, т.е. когда вы её поднимаете.

пятница, 27 июня 2014 г.

Оптические мышки. Что такое DPI и CPI. Для чайников.


В последнее время стало модным ассоциировать высокое значение DPI оптической мыши с высокой точностью её сенсора. Производители игровых девайсов в рекламных буклетах не стесняются прибавить десяток восклицательных знаков к цифре dpi своей новой «революционной мышки» (3200!!! DPI, 6400 DPI!!!!!, 12000 DPI!!!!!!). Рынок диктует свои правила. Конечно, современный мир крайне технологичен, и у обычного человека просто не хватает времени разобраться во всяких телевизорах, андроидах, автомобилях и прочих модных штуках. Что уже говорить о какой-то мышке. Но мы попробуем разобраться, что же такое на самом деле DPI и зачем оно нужно.

Откуда растут ноги

Для начала разберемся, каким образом у людей высокое значение DPI ассоциируется с высокой точность. Скорее всего, тут работате простая аналогия с фотоаппаратом. Все знают, 0.3 mpx (мегапикселя), как на старых телефонах – это плохо: смазанная картинка, плохо видны детали. А вот 8 mpx как в iPhone – это хорошо, потому что все видно очень четко. «Так, наверное, и в мышках», - думают люди, - «в них же тоже есть пиксели». Ведь DPI формально означает "Dots Per Inch", т.е. буквально «ТОЧЕК НА ДЮЙМ». Т.е. больше точек, - лучше видны детали поверхности, – следовательно, мышка может различать даже самые мелкие свои движения. И это позволяет в играх точнее наводить курсор/прицел. Вот и все объяснение. Правильно? Логично? Логично, но, к сожаленью, В КОРНЕ НЕПРАВИЛЬНО!

Как работает оптическая мышь

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

Microsoft 3.0/1.1, сенсор MLT04 ST, 400 dpi, 22х22 светочувствительных элементов

Logitech MX518, сенсор Avago 3080, 1600 dpi, 30х30 светочувствительных элементов

Logitech G400, сенсор Avago 3095, 3500 dpi, 30x30 светочувствительных элементов

Как видно, размеры самих сенсоров в пикселях крайне невелики! Например для сенсора 30х30 общее число пикселей будет 30x30=900 px , в то время как даже у старого фотоаппарата на 0.3 мегапикселя размер сенсора будет 640х480=307200 px! Откуда тогда берутся числа DPI?

Оптическое разрешение мыши

Дело в том, что в оптических мышках, изображение поверхности, по которой мы водим мышь, попадает на сенсор через увеличивающую линзу (Рисунок 1). Увеличение необходимо, чтобы лучше различать текстуру поверхности. Если посмотреть на обычный черный коврик для мыши, то он вроде бы везде одинаковый. Но взгляните на него под микроскопом – и каждый миллиметр поверхности будет по-своему уникален! Таким образом, на сенсор оптической мышки попадает лишь небольшая часть поверхности в виде квадрата. Обозначим сторону этого квадрата L. Если сенсор имеет NxN светочувствительных элементов, то (следите за руками) значение DPI сенсора будет равно:


DPI = N/L
ИМЕННО ТАК!

Это так называемое "базовое" или "оптическое" разрешение мыши.

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

Тем не менее, на разных расстояниях сенсор может по-разному различать поверхность, лучше либо хуже. И именно это в наибольшей степени определяет точность сенсора!

Сильное увеличение (высокое значение dpi) приводит к тому, что в сенсор попадает слишком мало света и фотографии становятся "шумными" (вспомните цветные пятна на фотографиях, сделанных ночью). А слабое увеличение (низкое значение dpi) не позволяет сенсору "видеть" текстуру поверхности. Кроме того, качество самих светочувствительных элементов тоже играет важную роль. В современных игровых мышках базовое разрешение находится в диапазоне 400-800 dpi.

DPI vs CPI

Полученные матрицей фотографии сенсор сравнивает между собой и по смещению рисунков определяет направление и скорость движения мышки. При этом, минимальное расстояние, пройденное мышью, которое может физически зарегистрировать её сенсор – это расстояние, которое фиксирует по крайней мере ОДИН светочувствительный элемент. Т.е. при перемещении мышки на расстояние L сенсор может считать максимум N движений. Поэтому для мышек более правильным будет использовать аббревиатуру CPIcounts per inch, т.е. количество считываний на дюйм.

  Для тех, у кого по-прежнему возникают трудности с пониманием dpi/cpi, предлагаю внимательно проанализировать следующую картинку (Рисунок 2).

DPI = CPI!


"Цифровое" разрешение мыши

Современные методы сравнивания изображений позволяют определять параметры движения с субпиксельной точностью. Т.е. даже если на матрице изображение сместилось всего на один пиксель, сенсор может определить смешение на 5-10 пикселей! В сенсоре Pixart PMW3366, соотношение "один пиксель - одно считывание" выполняется лишь при 800 dpi. А максимальные для этого сенсора 12000 dpi достигаются его возможностью выдавать 16 считываний на один реальный пиксель.

При таком подходе, требования к качеству исходного изображения становятся еще более жесткими. Любой лишний "шумок" может катастрофически влиять на качество трекинга. Именно поэтому, для большинства сенсоров КАЧЕСТВО ТРЕКИНГА ЛУЧШЕ НА НИЗКИХ DPI. Почему так?

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

Фотографии поверхности, сделанные сенсором PMW3366

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

Цифровое увеличение dpi
Математически такой алгоритм работает очень точно. Но в реальности у любого фотоэлемента есть "шум". Это значит, что интенсивность цвета на нем может случайно изменяться, даже если мышь вообще никуда не движется. И если заставить сенсор ловить самые маленькие изменения яркости (т.е. установить очень высокие значение DPI/CPI!), то сенсор может принять случайное изменение яркости вследствие шума за реальное движение!

Зачем нам высокие dpi?

Считывания, выдаваемые сенсором, обрабатываются операционной системой. При стандартных настройках указателя мышки в Windows одно считывание означает перемещение курсора ровно на одну точку на экране. А количество точек на экране зависит от разрешения монитора. Если разрешение экрана установлено 1920*1680, то мышь с 1600 dpi пройдет весь экран слева направо, если её передвинуть на 1920/1600=1.14 дюйма, т.е. всего за три сантиметра, а мышь с 3500 dpi – за 1.5 см! Т.е. ЧЕМ БОЛЬШЕ CPI (DPI) ТЕМ БЫСТРЕЕ МЫШКА БЕГАЕТ ПО ЭКРАНУ! И это, пожалуй, единственное явное преимущество высоких CPI – они позволяют комфортно водить мышкой по экранам с большим разрешением. Правда, для сегодняшних разрешений вполне хватает и 1000-3000 cpi.

В 3D играх каждое считывания обрабатываются немного по-другому: одно считывание означает поворот на некоторый заданный угол. Как правило, этот угол имеет такую величину, что для комфортной игры будет вполне достаточно и 400 dpi
.
Отметим, что в случае с мышкой Logitech MX518, минимальное расстояние, которое различит сенсор мыши при её перемещении будет равно L/N=1/DPI=1/1600 0,000625 дюйма, т.е. примерно 0,015 мм! В случае с Microsoft 3.0/1.1 (400 cpi) это расстояние будет равно 0,0625 мм. Очевидно, что чем больше CPI, ТЕМ СЛОЖНЕЕ навести мышку на конкретный пиксель на экране. Это похоже на прохождение гоночной трассы – вписываться в повороты легче на маленькой скорости (т.е. на малых CPI).

Отсюда мораль: ЧРЕЗМЕРНОЕ УВЕЛИЧЕНИЕ DPI ДЛЯ ПОЛЬЗОВАТЕЛЯ НЕ ИМЕЕТ НИКАКОГО СМЫСЛА.

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

Переключение dpi

Есть один момент. Многие мышки имеют кнопку переключения CPI. Что это значит? Допустим мы переключились с 1600 cpi на 800. В этом случае, сенсор просто будет пропускать каждое второе считывание. А если переключимся на 400 dpi – сенсор будет пропускать 3 считывания из четырех. Именно по этой причине, мы говорим именно о максимальном значении CPI (DPI) сенсора. Выше него, увы, сенсор правильно работать не может. Что будет, если мы захотим наши максимальные значения 1600 cpi превратить в 3200? Мышь просто будет «придумывать» считывания, лежащие между двумя «реальными» считываниями. И такое явление не редкость. Кроме того, изменение CPI также может происходить "программно", например при помощи программного обеспечения мыши. Но это происходит уже вне сенсора, и далеко не всегда благополучно сказывается на точности и скорости отклика сенсора.

Практический урок. SS Kinzu V2 и SS Kana

Как ни странно, обе мышки имеют один и тот же оптический сенсор PixArt PAW3305. Размер матрицы 32х32 элемента. Единственное, чем они отличаются – это линзой. В Кане она увеличивает изображение в два раза слабее. Что в итоге? Поскольку сенсор Каны видит в два раза больше поверхности, это позволило чуть ли не вдвое увеличить максимальную скорость движения, при которой сенсор все еще считывает движения. В случае с Kinzu V2 любое резкое движение просто опрокинет ваш прицел в пол. Но есть и обратная сторона медали. Поскольку сенсор Каны видит в два раза больше поверхности, согласно формуле CPI=N/L, получится, что его реальные CPI уменьшаться в два раза! И если у Кинзу максимальное значение CPI равно 3200, то у Каны оно становится равным 1600. Но производитель SteelSeries заявляет для Каны максимальное CPI такое же как и у Кинзу, т.е. 3200!!! Вот и получается, что сенсору приходится просто вставлять между каждыми своими реальными считываниями одно придуманное, что приводит к ужасной точности Каны на 3200 CPI. Такие вот маркетинговые дела.



ЧИТАЙТЕ ТАКЖЕ
У кого надежнее кнопки: Razer, SteelSeries или Logitech?
какой сенсор мыши лучше? Часть 3-2. Проблемы PMW3310, S3988, PMW3366
время отклика кнопок мыши
анонс SteelSeries Rival 700