воскресенье, 13 марта 2016 г.

Точный сенсор мыши глазами logitech. Часть 1.



Данный материал является адаптированным переводом видеолекции инженера компании logitech - Francois Morier, который объясняет устройство сенсора оптической мыши. В первой часть речь пойдет о dpi, угловых ошибках и акселерации.


Ссылка на оригинальное видео

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

Разрешение сенсора - CPI (DPI)

Аббревиатура CPI расшифровывается как counts per inch (считываний на дюйм), но пользователи обычно говорят о DPI – dots per inch (точек на дюйм). Это связано с тем, что на экране монитора отображаются «точки», в то время как сенсор в результате своей работе выдает «считывания». Поэтому разница между dpi и cpi состоит исключительно в названии, по факту это понятия обозначают одно и то же.

Давайте заглянем в сенсор мыши. В нем есть светочувствительная матрица, которая состоит из пикселей и линза с заданным увеличением, через которую на сенсор попадает изображение поверхности. При этом на каждый пиксель матрицы проецируется небольшой участок поверхности. Длина этого участка является минимальным элементом, который может увидеть наша матрица. В этом случае, мы понимаем CPI как «сколько пикселей нашей матрицы помещается в одном дюйме поверхности». Это и есть т. н. оптическое или нативное разрешение нашей системы. И поверьте, это разрешение гораздо меньше тех цифр, которые заявляются производителями для своих устройств. Потому что невозможно создать сенсор, который имел бы 8000 dpi реального оптического разрешения, т. к. в этом случае высота оптической системы мыши достигала бы полуметра.

Как мы можем получить более высокое разрешение? Один из способов — разделение пикселей в нашей матрице на более мелкие фотоэлементы. Однако, в этом случае приходится повышать светочувствительность каждого элемента, что в свою очередь увеличивает уровень шумов на матрице. Постепенно увеличивая количество пикселей вы достигаете определенного предела, при котором информация, получаемая пикселем не позволяет определить параметры движения мыши из-за плохого соотношения сигнал/шум. Именно поэтому чрезмерное завышение dpi полностью противоречит самой логике работы сенсора мыши. И если вы видите на коробке мыши высокие цифры dpi, вы должны понимать, что в большинстве случаев они являются бесполезными. Вы получите много шума и неспособность мыши работать на некоторых поверхностях.


Еще раз, сенсор мыши не является подобием сканера, где высокое разрешение позволяет видеть больше деталей поверхности. DPI в сенсоре – это просто отношение между расстоянием, которая проходит ваша рука и количеством точек, которое проходит курсор мыши на экране. В этом смысле значение dpi просто означает сколько точек пройдет курсор, если вы передвинете мышь ровно на один дюйм, и не является ни в каком смысле величиной, которая каким-либо образом определяет качество трекинга.

Примечание. Среди всех составляющих трекинга, о которых будет идти речь в этом материале, только cpi является "входным" параметром для сенсора. Все остальное - это то, что мы получаем "на выходе", и что необходимо нам для оценки качества трекинга.

Угловая ошибка (angle error)

Выделяют три вида угловой ошибки сенсора: общая угловая ошибка, ошибка «3-сигма» и т. н. «угловая привязка».

Общая угловая ошибка — это систематическое отклонение угла, определяемого сенсором, от реального угла, под которым осуществляется движение мыши. При этом пользователей, как правило, этот вид ошибки не слишком беспокоит (если только она не слишком велика), они естественным образом под нее подстраиваются, даже не замечая, что мышь ведет себя как-то неправильно.

Ошибка 3-сигма — это случайное изменение общей угловой ошибки. Можно сказать, что это «ошибка ошибки». В отличие от общей угловой ошибки, к данному недостатку пользователь практически никак не может адаптироваться. Именно поэтому, величина ошибка «3-сигма» является очень важным параметром, который характеризует точность сенсора.

Угловая привязка. Фактически, угловая привязка означает наличие определенного диапазона углов, в котором наша система выдает строго горизонтальное либо строго вертикальное движение. Эта функция была реализована в некоторых сенсорах, чтобы помочь людям, которые работают в офисных либо графических приложениях, рисовать прямые линии. Но такое поведение мышки может быть неприемлемым для геймеров. Естественным желанием для геймера является «чистый» необработанный трекинг, которой позволяет им лучше чувствовать движения своей руки и быть точным, совершая даже небольшие движения мышью. Потому что при экстремальных значениях угловой привязки, рисуя, к примеру, окружность, на выходе вы можете получить вместо круга некоторое подобие квадрата.


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

Зависимость cpi от скорости (resolution vs speed error)

Следует сразу сказать, что данный параметр в очень большой степени определяет точность и воспроизводимость результатов сенсора. Допустим, мы переместим мышь ровно на 20 см, сначала медленно, а затем быстро. Если наш сенсор точный, в обоих случаях мы получим одинаковое число точек, которое пройдет курсор мыши на экране. В реальности, число точек для разных скоростей будет разным. И в этом отношении сенсоры могут очень сильно различаться. Многие пользователи называют это явление акселерацией, но этот термин здесь не совсем подходит. Просто с увеличением скорости сенсор может перестать правильно определять параметры движения, что приводит к разному числу выдаваемых считываний для разных скоростей. Особенно это критично для игроков в шутеры. Если два противника появляются с противоположных сторон, вам нужно сначала выстрелить в одного, затем резко повернуться в другую сторону. Если у вас плохая мышь, сделать это точно у вас вряд ли получится - вы либо повернетесь слишком сильно, либо наоборот - немного не доведете прицел до нужного места.

Примечание. Как и в случае с угловыми ошибками, вариации cpi в зависимости от скорости могут носить как постоянный, так и случайный характер. И очень плохо, когда доля случайных колебаний cpi в сенсоре очень большая.



ЧИТАЙТЕ ТАКЖЕ

5 комментариев:

  1. Не понял насчёт постоянной угловой ошибки. Можете разъяснить почему она получается всегда одинаковой (раз вы говорите, что к ней можно приспособиться) - это ведь следствие недостаточной разрешающей способности и => это неточность, а не постоянный параметр (который мог бы, кстати, быть сглажен с помощью ПО).

    ОтветитьУдалить
  2. конечно, это неточность. просто эта неточность носит постоянный характер. а значит мы можем с ней адаптироваться. Т.е. например я веду мышь под углом 35 градусов, а сенсор выдает угол 33 градуса. Мы просто к этому привыкаем и всё, даже неосознанно. А если мы ведем под тем же углом в 35 градусов, а мышь СЛУЧАЙНО выдает углы в диапазоне 33-37 градуса? Вот тут-то и возникают проблемы. Мне трудно судить, откуда именно берется постоянная угловая ошибка, я лишь привожу слова официального лица logitech. Но то, что сенсору трудно правильно обсчитывать диагональные движения, особенно под маленькими углами - это факт. Могу лишь предположить, и эти предположения вполне подтверждаются практикой, что угловая ошибка ниже в тех сенсорах, где больше мощность получения изображений, т.е. число пикселей в матрице, умноженное на скорость фотографирования. А как постоянную ошибку нивелировать софтом я не знаю, мы же не знаем реального угла. А вот 3-сигма ошибка вполне может быть нивелирована обработкой траектории, и я полагаю так оно и делается внутри сенсора. Просто изучается серия кадров и усредняется общий угол.

    ОтветитьУдалить
    Ответы
    1. А вот вы писали, что в сенсоре А3050 большая угловая привязка. Это значит, что если я веду угол в 35°, то привязка может выбить угол 45°? Вы не знаете, как это сильно мешает? Просто так волнуюсь с выбором мыши

      Удалить
    2. Такое тоже бывает, на офисных мышках в основном, но иногда и на игровых (SteelSeries Kinzu v1). Но в основном, сглаживаются углы, близкие к нулю или к 90 градусам. Т.е. ведешь под углом 5 градусов, в получаешь 0. В А3050 угловая привязка небольшая, хотя некоторые производители могу сделать её большой. Другое дело, что А3050 сам по себе углы неочень точно считает.

      Удалить
  3. Стоит ли брать мышь с сенсором А3090? В 3500 dpi

    ОтветитьУдалить