что такое интерполяция мыши
Немного о растяжении видео.
Сегодня я расскажу вам о такой штуке, как масштабирование видео. Каждый день мы встречаемся с ним, но не каждый понимает, как оно вообще происходит, и мол, дескать, нафиг мне это не надо вообще.
А вот нифига. Предисловие.
Наглядно проиллюстрировать самые известные можно картиночками из вики.
Билинейная интерполяция. Наверное, самый распространенный случай. Алгоритм, грубо говоря, связывает точки прямыми линиями сначала в одном направлении, потом в другом, т.е плоскостями. Немного мылит картинку и сглаживает лесенки. Достаточно быстрый.
К тому же во многих плеерах можно встретить такие вещи, как spline36, jinc, mitchell, а также фильтров и прескейлеров, начиная от superxbr, и заканчивая крайне сложными с точки зрения вычислительной мощности nnedi3 и waifu2x, которые являются нейронными сетями.
-и конечно, метод ближайшего соседа.
Здесь, как ни странно, имхо, побеждает билинейная интерполяция. Не зря ее так любят. Она не сильно мылит картинку, не грузит комп и не дает «звона», как jinc (каемка вокруг рта).
Еще картиночку в студию.
Пошли пушки потяжелее. По-порядку:
— spline36 + настройки opengl-hq
— билинейная интерполяция + superxbr
— билинейная интерполяция + superxbr + sharpen (небольшое «заострение граней»).
Ну, далеко не все есть в FullHD, это да. Мониторы выше FullHD вроде как еще не запретили. Так что затюнинговать плеер для воспроизведения чего-нибудь нарисованного на хорошем дисплее иногда бывает неплохо.
Хотел было выругаться на JPEG, потом понял, что всё так и должно быть. Спасибо за пост.
lancos незаслуженно забыт!
А какие алгоритмы интерполяции используются в смартфонах для увеличения разрешения фотографий?
Так вот как они аниме 80х выкладывают в HD, что оно по 100 гиг весит.
А если бикубическую шарпнуть? Мне кажется должно лучше быть, не могу проверить.
Может все таки стоит написать в Geektimes или Habrahabr?! Все таки, там такое ждут.
Много событий в этом немом фильме
В Черновицкой области быдло-школьница решила продемонстрировать свою силу и до»балась до какого-то «ботана»
Только вот тихий паренёк оказался не терпилой и накидал ей в кабину.
Я устал. Руки опустились
Ответ на пост «Елена, Алё?!»
Кому интересно. Продолжение.
Видео из Тик тока helen._nail62
О погибших шахтерах
Выбравшиеся живыми на поверхность рассказывают о взрывной волне и резкой потере сознания, перечисляют явные признаки подземного взрыва.
Однако в новостях по-прежнему пишут о неком «задымлении».
И пока будет такое наплевательское отношение к охране труда, люди так и будут гибнуть.
Ответ на пост «Ты просто красавчик, тебе так идёт это пальто, это пальто великолепно на тебе смотрится»
Запустим новый челлендж:
Белый снег на чистой странице (с)
Без национальности или никогда такого не было и вот опять
Просьба предать огласке и посоветуйте как довести дело до реального срока.
Этот человек опасен для общества.
Смотрите, какая интересная история!
Хозяин жизни, происхождение которого скоро нельзя будет указывать, ехал по обочине, чтобы проехать быстрее.
После того, как молодой парень не пропустил «обочечника», произошло культурное обогащение, закончившееся переломом ноги у 19-летнего Ивана и сломаным носом у девочки курсантки колледжа МВД. (В форме была). И теперь он под подпиской о невыезде. Вот как к этому относиться?
Сынуля
О тех кого называть нельзя
Уважаемый пикабу. Я так подумал, а не знаяит ли что раз нельзя публиковать национальность и веру, то проблема должна быть зарублена на корню? Т.е. запретить наклейки на авто «DAGESTAN 05», мусульманские знаки, различные флаги и особенно совершение намаза в местах где есть хоть 1 человек?
Иван Ургант о новом предложении Госдумы
Маразм крепчал, и танки наши быстры.
Монетизация
Неадекватная мамашка
— Заглушите пожалуйста двигатель, очень дымит!
— Что правильный такой?
— Детям прям в лицо, вашим в том числе!
— невнятное что-то. (закрыв окно)
— показывает средний палец
решил проучить ее и отправить фото в гибдд за неправильную парковку, достал телефон, скачал приложение помощник москвы, зарегился, разобрался как там и чего, сфоткал знак, начал фоткать ее машину на фоне знака.
-Отвали отсюда идиот, да у тебя просто денег на машину нет. и в таком духе.
люди оборачиваются, и это все она кричит в окно через своего ребенка, сопровождая средним пальцем.
Параметры сенсоров мышей и игровых мышей
Содержание
Содержание
Игровые мыши — это огромный мир периферийных устройств, который по-своему интересен: он удивляет техническими рекордами, новыми разработками и постоянным развитием эргономики. Несмотря на большое количество материалов на эту тему, сенсорам уделяется не так много внимания. Именно поэтому речь сегодня пойдет только о сенсорах.
Оптическая светодиодная мышь чаще всего выбирается для работы — она самый частый гость в офисах. Оптическая лазерная мышь — выбор профессиональных геймеров. Вообще главное отличие геймерской мыши от простой заключается не в уникальном дизайне и даже не в типе сенсора, а в характеристиках устройства.
Сегодня в продаже можно встретить устройства с максимальным разрешением датчика от 300 до 24000 dpi, но большая часть мышей имеет максимальное разрешение, которое не превышает 5000 dpi. Почему же так происходит? Давайте разбираться.
Принцип работы, разбираемся в тонкостях
Сердцем любой компьютерной мыши является сенсор. На сегодняшний день самыми распространенными являются два типа устройств— оптическая светодиодная и оптическая лазерная мышь. В основе первого типа устройств лежит стандартный светодиод, во втором случае — инфракрасный излучатель (лазер).
Инфракрасный лазер оптической лазерной мыши
Игровые мыши чаще всего оснащаются инфракрасным лазерным излучателем — такие устройства отличаются высочайшей точностью и предельной скоростью реагирования. Разрешение сенсора у игровых мышей может достигать рекордных значений.
Видна часть оптического датчика светодиодной мыши
Что касается оптических светодиодных мышей, то они отличаются умеренной точностью, работают относительно быстро, без задержек и для своих целей вполне оправданны.
Оптико-светодиодный сенсор
В бюджетных устройствах используются оптические сенсоры с диодами красного цвета, так как подобные излучатели являются самыми доступными в производстве. Диод-излучатель, под специальным углом, излучает свет, который формирует тени на поверхности стола/коврика. Сенсор оснащается камерой низкого разрешения, которая покадрово фиксирует тени в микронеровностях. Каждый полученный кадр преобразуется в систему координат, которая позволяет точно воспроизвести месторасположение мыши в пространстве.
Как работает сенсор оптической светодиодной мыши
Для тех, кому интересен процесс работы сенсора подробнее, рассмотрим его детальнее. CMOS камера с высокой скоростью (несколько тысяч снимков в секунду, в зависимости от производителя и модели мыши) фотографирует маленькие участки коврика или другой поверхности. Полученный кадр делится на квадраты — каждому из них присваивается средний показатель яркости. Например: от 0 до 70 единиц, где 0 — черный, а 70 — самый яркий белый участок. Одновременно формируется подобие мозаики, которая состоит из огромного числа таких квадратиков.
Рабочая поверхность в представлении процессора мыши
Один такой квадрат является тем самым count или отсчетом, который указывается в качестве единицы измерения разрешения сенсора. Все считываемые изображения накладываются друг на друга, но со смещением. Обработку отснятых кадров осуществляет процессор устройства. Каким именно образом происходит обработка, зависит от производителя мыши — алгоритмы являются закрытыми и запатентованными.
Все полученные кадры сопоставляются друг с другом — в итоге CPU мыши идентифицирует величину/вектор передвижения устройства. Затем все данные трансформируются в координатную систему, вычисляются и передаются уже в систему компьютера.
Мышь с оптическим сенсором. Хорошо виден свет от красного излучателя
Лазерно-инфракрасный диод
Лазерно-инфракрасный диод используется в мышах с лазерным сенсором. Благодаря передаче луча прямо на процессор (илл. ниже), достигается высочайшая точность измерений. Инфракрасное излучение точнее фокусируется на плоскостях, которые содержат большое количество неровностей.
Схема работы оптической светодиодной и оптической лазерной мыши
Лазерная мышь эффективно взаимодействует с любым типом поверхности, включая глянцевые, стеклянные, основания. Кроме этого мыши с лазерным сенсором отличаются низким уровнем энергопотребления.
Лазерная мышь практически не чувствительна к типу поверхности
Что такое интерполяция
Интерполяция — это пропуск кадров. Интерполяция активируется, когда микроконтроллер вынужден угадывать значения датчика в оси координат, вместо того, чтобы иметь «реальные» значения положения мыши в пространстве. Пропуск кадров происходит в двух случаях.
Первый — если датчик отслеживает значения, которые превышают его диапазон по умолчанию (нейтральный диапазон).
Второй случай — если данные приемника-датчика и микроконтроллера не синхронизированы, либо — если сервисный интервал возвращает ошибку, сброс или нулевые данные. Последнее происходит, когда события ESD содержат недопустимые адреса, например — в случае поломок микроконтроллера.
Основные параметры сенсоров
К основным параметрам сенсоров можно отнести: разрешение, время отклика, максимальное ускорение.
Сенсор мыши — именно этот компонент определяет точность и трекинг.
Разрешение сенсора обозначается как DPI или CPI — эти аббревиатуры используются для обозначения количества точек на дюйм. Чем больше разрешение сенсора, тем продолжительнее расстояние, которое пройдёт курсор на экране, по отношению к пути мыши на рабочем основании.
G403 — предельная точность и скорость в играх. Высочайшее разрешение обеспечивается лазерным сенсором HERO 16K
Сенсор мыши определяет точность и трекинг. К основным параметрам сенсоров можно отнести разрешение и время отклика.
Как меняется разрешение: современные игровые мыши позволяют менять разрешение не только программным образом, но и при помощи кнопок, которые находятся на корпусе устройства. Последний способ предпочтительнее, так как разрешение можно менять на лету — за считанные секунды, что особенно актуально в играх. Программно менять разрешение можно при помощи специализированных утилит или путем задействования различных макросов.
Как измеряется: разрешение сенсора измеряется в DPI или CPI — эти характеристики используются для обозначения количества точек на дюйм и количества считываний на дюйм, соответственно. Если быть скрупулезным и более точным, то измерять разрешение сенсора нужно только в CPI, так как мы измеряем именно число считываний, а не число точек.
На что влияет: разрешение определяет перемещение устройства по рабочему основанию. Максимальное значение разрешения позволяет понять, какое минимальное движение мыши будет зафиксировано и считано самим устройством.
G PRO — один из королей геймерской периферии. В основе — всё тот же HERO 16K. Мышь улавливает количество точек в диапазоне от 100 до 16000 dpi. Идеальный выбор для профессиональных геймеров
Частота опроса или время отклика — еще один важный параметр для игровых мышей. Чем меньшее время отклика, тем быстрее мышь будет «откликаться» на действия игрока, наприме — в динамичных шутерах. Современные игровые мыши обладают временем отклика, которое варьируется в пределах миллисекунды. Частота опроса или время отклика — это характеристика, которая показывает насколько часто контроллер устройства сравнивает данные о текущем местоположении с исходным расположением.
Чем выше опросная частота, тем плавнее будет передвигаться курсор мыши на экране. Измеряется опросная частота в Герцах. Чтобы было понятнее, как эта характеристика влияет на отклик, приведем пример: при частоте опроса 500 Гц отклик будет составлять около двух миллисекунд, при опросе 1000 Гц — уже около одной миллисекунды. Следовательно, при частоте опроса в 500 Гц мышь будет ощущаться острее, а при 1000 Гц — более плавно.
Таким образом, частота опроса — это характеристика, которая показывает, как часто процессор опрашивает матрицу (или, проще говоря, как часто он делает фото подложки).
Какие бренды пользуются наибольшим доверием
В условиях высочайшей конкуренции современные сенсоры практически не отличаются — наращивать, например, ту же мощность уже нецелесообразно. Даже если производитель использует какие-то собственные наработки — кастомные линзы или модернизированную прошивку, заметить это без специализированных тестов не сможет даже опытный геймер.
Сенсоры современных игровых мышей изготавливают множество производителей. Лучше выбирать сенсоры проверенных брендов. К ним можно отнести сенсорные модули следующих производителей:
● Pixart;
● TrueMove3;
● HERO;
● Mercury.
Модельные линейки сенсоров от значимых брендов
Вышеуказанные сенсоры используются при производстве многих популярных игровых мышей. Так сенсоры Pixart (серии 3389, 3390, 3391, 3366, 3361, 3367 3360, 3310, 3330, 3988) используются при создании мышей Razer, включая Naga Trinity, DeathAdder Elite. Сенсоры Pixart также используются в устройствах Lancehead, Pulsefire FPS Pro, Corsair IronClaw RGB, Asus ROG Gladuis, SteelSeries Rival 300. Вообще большинство геймерских мышей оснащаются именно сенсорами Pixart.
В основе DeathAdder одноименный сенсор с разрешением 6400 DPI. Бюджетный, но практичный вариант для любых игр
Сенсоры Mercury используется при создании мышей Logitech G102. Сенсоры HERO используется при создании мышей G502 HERO, G Pro Wireless и G502. Сенсоры TrueMove3 нашли применение в устройствах Rival, включая 650 Wireless и проводные мыши Rival 310, 710, 600. Также сенсорами TrueMove комплектуется мышь Sensei 310 производителя SteelSeries.
Заключение
Сегодня возможности игровых мышей практически сравнялись. Разницу можно ощутить лишь между светодиодными и лазерными устройствами. Для современной игровой мыши главной характеристикой является скорость и ускорение. Разрешение сенсора уже отошло на второй план. Выбирая геймерскую мышь нужно обратить внимание на производителя сенсора — лучше выбирать устройства в основе которых лежат проверенные разработки Pixart, TrueMove3 и HERO.
Анатомия цифрового фотоаппарата: сенсоры
Да будет цвет!
Для того чтобы каждому пикселю соответствовал свой основной цвет, над ним помещается фильтр соответствующего цвета. Фотоны, прежде чем попасть на пиксель, сначала проходят через фильтр, который пропускает только волны своего цвета. Света другой длины будет просто поглощаться фильтром. Ученые определили, что любой цвет в спектре можно получить смешением всего нескольких основных цветов. В модели RGB таких цвета три.
Для каждого применения разрабатываются свои массивы цветных фильтров. Но в большинстве сенсоров цифровых камер наиболее популярными являются массивы фильтров цветовой модели Байера (Bayer pattern). Эта технология была изобретена в 70-х компанией Kodak, когда проводились исследования в области пространственного разделения. В этой системе фильтры расположены вперемежку, в шахматном порядке, а количество зеленых фильтров в два раза больше, чем красных или синих. Порядок расположения таков, что красные и синие фильтры расположены между зелеными.
Посчитаем?
Размер файла изображения зависит от количества пикселей (разрешения). Чем больше пикселей, тем больше файл. Например, изображение сенсоров стандарта VGA (640х480 или 307200 активных пикселей) будет занимать в несжатом виде около 900 килобайт. (307200 пикселей по 3 байта (R-G-B) = 921600 байт, что примерно равно 900 килобайтам) Изображение 16 MP сенсора будет занимать около 48 мегабайт.
В общее число пикселей входят все пиксели, физически существующие в сенсоре. Но активными считаются только те, которые участвуют в получении изображения. Около пяти процентов всех пикселей не будут участвовать в получении изображения. Это либо дефектные пиксели, либо пиксели, использующиеся камерой по другому назначению. Например, могут существовать маски для определения уровня темнового тока или для определения формата кадра.
Интерполяция разрешения
Теперь, когда мы ознакомились с принципами работы сенсоров, знаем, как получается изображение, давайте заглянем несколько глубже и затронем более сложные ситуации, возникающие при цифровой фотографии.
Интерполяция + (линейная | логарифмическая) шкала + С++
В этой статье я распишу теорию (а также базовые виртуальные классы), в следующей возьмусь за конкретные реализации средствами Qt.
Осторожно: в тексте много графики!
Откуда растут ноги у задачи
В общем, надо мне сделать регулятор холостого хода — такая штука для автомобиля, которая при холостом ходе в зависимости от температуры двигателя должна поддерживать определенные обороты. Поддерживает она их, регулируя заслонку шаговым двигателем.
В общем, мне надо знать текущую температуру. Было решено измерять ее штатными средствами — с терморезистора. Измеряем падение напряжения на нем — получаем сопротивление. Далее из таблицы (поскольку это микроконтроллер) получаем требуемые обороты.
Таблицу эту надо задать (для этого программа пишется средствами Qt). У меня есть несколько точек «сопротивление => температура». Мне надо для каждого кода АЦП (для ряда значений сорпотивлений) получить соответствующую температуру. Поскольку у разных автомобилей эти значения могут быть разными, то надо на экране, сверившись с таблицей, задать несколько точек на кривой.
По ходу дела оказалось, что график этот будет явно в логарифмическом масштабе. Значит, надо его вывести на экран. Как это сделать — читаем дальше.
Постановка задачи
Давайте немного подробнее опишем что нам надо:
Вот такое ТЗ… Ну да ничего, я справился! Давайте и вам помогу.
Да, пока не нырнули — спасибо Equation Editor-у от CodeCogs! С их помощью я лихо построил все математические формулы без всяких Microsoft Equation Editor, которые потом надо еще экспортировать в графику со вставкой сюда. Кстати, там есть и русский редактор. В общем, рекомендую!
Ну и если вместо формул вы видите пустые квадратики — это тоже «спасибо» Equation Editor-у…
Прикрепленный Excel-файл
По ходу написания статьи я все расчеты строил и проверял в таблице Excel с формулами. Оказалось очень удобно. И я решил его выложить для общественного пользования. Там внизу перечислены страницы по разделам. На каждой странице параметры, которые можно менять, отмечены как ячейки с желтым фоном. Остальные клетки лучше не трогать. Впрочем, все формулы можно смело смотреть. Скачивайте файлик и пробуйте на здоровье! Если проблемы с файлом — пишите, вышлю.
Функциональная зависимость
Итак, у нас есть некоторая зависимость — обозначим ее как . Здесь у нас
— горизонтальная ось графика,
— вертикальная. В моем случае
было значение сопротивления,
— температура.
Почему не ? Ведь вроде бы должно быть так? Так-то оно так, но
только в школе в простейшем случае.
— это координаты точки на плоскости. Для простоты определимся использовать Декартову систему координат:
задает вертикальное смещение горизонтальной оси относительно нуля,
задает горизонтальное смещение вертикальной оси относительно нуля.
Все хорошо тогда, когда мы рисуем на бумаге эту самую систему координат и в ней ставим точки. Там и вправду — выбрали центр, линейкой отложили сюда, потом туда. А вот при построении графика в какой-то программе уже тонкости начинаются — что считать нулем? Что считать за «+», а что за «-«? Я рисую для этой статьи графику в CorelDRAW — там центр считается снизу слева (его можно передвинуть куда надо).
Да и в каких единицах график-то? В сантиметрах? А почему? У меня следующий этап будет реализация на С++ средствами Qt, так там я сделаю окно QWidget, у которого по умолчанию ноль — это слева сверху; единицы измерения — экранные пиксели.
Ну и не забываем о том, что это все эти красивые рассуждения справедливы пока что для линейной шкалы, а у нас маячит за горизонтом логарифмическая. Там вообще черт знает что будет!
Но это только лишь точка. А у нас будет какая-то линия, точнее — много линий. Что там будут за преобразования?
Вот именно поэтому мы с самого начала должны четко разделить функциональную зависимость и преобразования координат.
Итак, давайте договоримся о следующем: у нас есть некоторый абстрактный процесс, который описывается функциональной зависимостью . При отображении на экран используется преобразование в координаты
, где
,
. Следующие шаги — это прояснить эти самые
и
.
Но отложим пока в сторону координаты — нам надо как-то задать нашу функцию (помните ТЗ)? Причем задать в тех самых абстрактных координатах . Этим и займемся.
Интерполяция
В моем случае был известен ряд точек :
180 | 100 |
6 000 | 0 |
30 000 | -30 |
Методов интерполяции много, все рассматривать я тут не буду. Лично мне приглянулся вначале интерполяционный многочлен Лагранжа. Он весьма прост в расчете и реализации, а также в настройке. Там предполагается, что задано множество из
точек вида
(тут мы на время таки вернемся к заданию точек в виде
— так уж принято в математике).
Многочлен вычисляется как , где
.
Математика испугала? Хм… Ладно, напишу на языке С++:
Как видите, все достаточно тривиально (насколько тривиальными могут быть полиномы).
Еще одно большое достоинство полиномов Лагранжа — их легко можно промоделировать в таблице Excel-я, что я и делал.
Потом, правда, все стало немного печально, т. к. у этих полиномов, как и у любых других, на графике видны вибрации. Т. е. они не могут дать прямые линии — постоянные значения. В моем случае я не смог их настроить дОлжным образом — они выгибались в явно недопустимые числа. Поэтому мне пришлось от них отказаться…
Работая в Corel, я был близко знаком с кривыми Безье — тоже достаточно удобное и простое представление табличных данных. Весьма легко реализуется в программировании. Однако это уже не интерполяция, а, скорее, аппроксимация, т. к. тут приходится подгонять кривую к нужному виду.
В итоге, внимательно присмотревшись к своей функции, я понял, что у меня вполне прокатит кусочно-линейная интерполяция — прямые отрезки между заданными линиями. Не то, чтобы совсем уж фен-шуйно, но зато легко реализуемо и удобно настраиваемо.
Говоря языком математики, мы между точками и проводим прямые линии вида .
Опять же, на языке С++ это будет выглядеть так:
Тоже ничего революционного, не так ли?
Есть одно существенное различие между полиномом Лагранжа и линейной интерполяцией: у первого нельзя явно задать значения за пределами точек — они вычисляются, у второго можно это дело контролировать. Также и поэтому я в конечном итоге остановился на линейном варианте. Более того — в логарифмическом масштабе, к которому я стремился, линейные отрезки дают более подходящий мне вариант.
Впрочем, не будем заморачиваться сейчас на методах интерполяции. Давайте лучше мы сделаем базовый класс, от которого будем наследовать реализации различных методов $#*@!поляции.
Базовый класс для задания/расчета функции
Что этот класс должен уметь делать? Мне кажется, что такой класс должен:
Еще есть мысли? Если будут — пишите в комментариях, добавим!
Получается такой вот класс:
(Тем, кто недоволен моим стилем и структурой — предложите объективно лучше!)
(Тем, кто найдет ошибки в коде — спасибо!)
Думаю, тут все очевидно.
Для координат используется представление точки в виде QPointF (пара чисел в виде qreal, qreal. «На всех платформах, кроме ARM, используется double» — так написано для Qt 4.8).
В следующей статье мы распишем пару вариантов реализации этого класса.
Функция преобразования для вертикальной/горизонтальной шкалы
Есть линейные и логарифмические шкалы. Учитывая, что вертикальная шкала может быть сделана в одном формате, а горизонтальная — в другом, мы получаем четыре варианта графика:
Вариант первый — обе шкалы линейные. Вариант второй — обе логарифмические. Варианты третий и четвертый — смешанные графики. Кстати, в моем случае именно смешанный случай в итоге и подошел, т. к. по горизонтали у меня потребовался логарифмический масштаб, по вертикали — линейный.
Следовательно, задачу отображения нужно решать отдельно для обеих осей.
Напомним, что при отображении на экран используется преобразование в координаты , где
,
. Наша дальнейшая задача — построить эти функции для линейного и логарифмического случаев.
Что это за функции такие? На вход они получают координату в абстрактных (для компьютерной подпрограммы отображения на экран) координатах, на выход дают в экранных («экранные» координаты будут для разных операционных систем разными»). Для расчета им нужно знать следующее:
Базовый класс для преобразований шкал
Давайте сформулируем желаемую функциональность виртуального класса преобразований для шкалы, от которого будут унаследованы реализации шкал:
Реализация может выглядеть так:
Линейное преобразование
Давайте отдельно рассмотрим линейное преобразование для горизонтальной и вертикальной оси.
Расчет этих констант достаточно прост — это решение системы двух уравнений:
Еще важно уметь делать обратное преобразование — скажем, координаты указателя мыши перевести в абстрактные координаты. Также ничего сложного:
Шаг в данном случае для расчета не используется, но он потом нам пригодится в реализации на С++ для расчета смещения.
Как это будет использоваться на практике? Да все просто! Горизонтальное преобразование: — граница картинки графика, соответствующая (как правило, слева), — (как правило, справа), — шаг вывода картинки по горизонтали. Вертикальное преобразование — аналогично, но по вертикали (у нас в Qt будет нижней границей картинки, — верхней, причем scr_
Логарифмическое преобразование
А теперь окунемся туда, ради чего все это закрутилось:
(на графике не логарифм нарисован, а что-то похожее на него. Сделано это специально, т. к. логарифм тут будет не очень нагляден)
Вроде бы базовую математику рассмотрели. Нашли ошибки или неточности — пишите в комментариях, буду благодарен!
Со временем напишу следующую статью — реализацию этой математики средствами Qt языка C++.