- BrainTools - https://www.braintools.ru -

Взглянуть на мир глазами кошки

Вам никогда не хотелось посмотреть на мир глазами кошки? Не в метафорическом смысле, а буквально: с её цветами, её полем зрения [1], её способом выделять движение.

посмотреть и попробовать модель можно прямо тут [2].

Когда-то давно, лет семнадцать назад, я довольно много писал про моделирование человеческого зрения [3], цветовосприятия и дальтонизма. Были статьи про моделирование зрения [4], нормализацию картинки под восприятие [5] и работу модели eye tracking [6]. Тогда я описывал человеческое зрение: как глаз строит изображение, как воспринимается цвет, как можно попытаться всё это смоделировать на компьютере.

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

Как устроено зрение кошки

Кошка – дихромат. У неё два типа колбочек с пиками чувствительности примерно в синей области (около 450–460 нм) и в жёлто-зелёной (около 550–560 нм). Красный и зелёный для неё не существуют как отдельные цвета: они схлопываются в один жёлто-зелёный канал. Это довольно близко к тому, что я когда-то моделировал для протанопии и дейтеранопии, только здесь «потеря» красно-зелёного различения – норма, а не нарушение. Мир кошки в результате не серый, но и не такой цветной, как наш: синие остаются синими, а всё, что для нас красное или зелёное, уходит в желтовато-сероватые тона.

Поле зрения у котов шире человеческого. Горизонтальный угол обзора заметно больше – порядка 200–270° против наших 180–220°. Глаза посажены дальше друг от друга, поэтому бинокулярное поле растянуто именно по горизонтали, вертикально же преимущество уже не такое выраженное. Ещё есть visual streak – зона повышенной остроты в центральной горизонтальной полосе сетчатки. Периферическое зрение сверху и снизу заметно хуже: детали там размываются. Плюс кошки в ближней зоне относительно дальнозорки – примерно до 80 см всё более смутно, чем у человека с нормальной аккомодацией.

И отдельно – про движение. У человека есть свои психологические особенности восприятия [7] цвета (об этом когда-то была статья о силе цвета [8]), а у кошки – свои любопытные особенности восприятия. Кошки (и их зрительная кора) особенно хорошо выделяют объекты, которые движутся горизонтально. Это немножко больше, чем просто “они лучше видят движение”. Кошки очень резко реагируют на горизонтальное движение. Быстрый горизонтальный объект буквально выскакивает для них из фона.

Всё это вместе даёт довольно чёткую картину того, что стоит попробовать смоделировать: цвет, расширенное горизонтальное поле, вертикальную периферию и особое отношение к горизонтальному движению.

Цветовая модель

Когда я когда-то моделировал дальтонизм (про дальтонизм и моделирование цветовосприятия [9], как видят мир дальтоники [10]), основная идея была простой: посмотреть, как меняется вклад колбочек, и пересчитать цвет в пространстве, где один из каналов ослаблен или отсутствует. С кошкой похожая логика [11], только каналов изначально два.

В программе цветовая коррекция делается первой, до любых размытий. RGB переводится в упрощённое дихроматическое представление: берётся синий канал и жёлто-зелёная смесь (красный и зелёный схлопываются), после чего насыщенность жёлтого снижается. Это не полная спектрофотометрическая модель по кривым Govardovskii, но принцип тот же, что и в старых экспериментах с протанопией/дейтеранопией: мы просто не «красим картинку в жёлтый», а пересчитываем её так, как если бы у наблюдателя были другие фоторецепторы. В результате красные и зелёные объекты становятся ближе друг к другу по цвету, синие остаются относительно самостоятельными, а насыщенность некоторых цветовых сочетаний падает.

Углы обзора и эллипс

Расширенное поле зрения кошки – это в первую очередь горизонталь. Когда мы смотрим на плоскую картинку (кадр видео), у нас нет настоящего 200-градусного обзора, поэтому применена эллипсоидная дисторсия как способ адаптировать к человеческому восприятию более широкое бинокулярное поле.

Горизонталь сжимается сильнее, вертикаль слабее. Это не сферический фишай, где радиус одинаковый во всех направлениях. Преобразование эллипсоидное: по бокам изображение «поджимается» сильнее, чем сверху и снизу. Визуально это даёт ощущение более широкого взгляда, хотя мы по-прежнему смотрим в обычный прямоугольник. В приложении это делается одним преобразованием UV-координат в шейдере без наложения нескольких разных дисторсий друг на друга.

Движение и внимание

Самое интересное, пожалуй, здесь. Кошка не просто «видит движение». Её зрительная система [12] (и дальше – мозг [13]) особенно хорошо реагирует на горизонтальную компоненту. Чтобы это показать, в модели сделано две вещи:

Во-первых, при обнаружении быстрого горизонтального движения относительно фона проигрывание замедляется, когда в кадре ничего особенно не движется, видео идёт чуть-чуть быстрее обычного (около 1.15×). Когда же появляется быстрый объект, то скорость падает (примерно до 0.85×). Это не «замедленная съёмка ради красоты», а попытка дать зрителю то же ощущение, которое, вероятно, получает кошка: быстрый горизонтальный объект становится заметнее за счёт того, что время вокруг него как бы растягивается.

Во-вторых, сам объект дополнительно выделяется резкостью. Фон и более медленные объекты размываются, а самый быстрый по горизонтали выделяется как самый чёткий. Размытие в модели сделано обычным гауссом, сила зависит от скорости самого быстрого объекта в кадре. Более медленные движущиеся вещи получают промежуточную чёткость. Для лучшего выделения маска движения не пропадает мгновенно: она затухает по логистической кривой примерно за 150 мс, так что объект не «выключается» резко. Это согласуется с исследованиями как воспринимаются “траектории движения” правда не кошкой, а человеком.

Детекция идёт относительно фона: камера может поворачиваться, фон смещается, и это смещение сначала оценивается и компенсируется. То, что остаётся после компенсации, считается движением объектов. Именно по горизонтальной компоненте этого residual и строится и замедление, и маска резкости.

Вертикальная периферия тоже чуть размывается сильнее (visual streak): верх и низ кадра мягче центральной полосы. Это слабее выражено, чем эффект от движения, но присутствует.

Почему без нейросети

Была попытка сделать оценку движения и глубины через TensorFlow.js. Идея выглядела заманчиво: взять готовую модель глубины или optical flow и получить более точную карту. На практике выяснилось две вещи: крупные модели, которые давали приемлемый результат, слишком тяжёлые для веб-страницы – их неудобно тащить клиенту и они заметно тормозят обработку. Мелкие же, которые ещё можно было впихнуть, давали слишком шумный и нестабильный результат на обычном видео с телефона. В итоге остался классический путь: оценка глобального сдвига камеры, residual и маска.

Как это собрано

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

Движение считается классически: оценка глобального сдвига камеры, residual, маска. Цвет – упрощённый пересчёт каналов. Дисторсия – одно геометрическое преобразование. Но вместе это уже даёт ощущение, что картинка смотрит на мир немного иначе.

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

Код модели можно посмотреть и попробовать прямо на странице [2].

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

Автор: ymik

Источник [14]


Сайт-источник BrainTools: https://www.braintools.ru

Путь до страницы источника: https://www.braintools.ru/article/38177

URLs in this post:

[1] полем зрения: http://www.braintools.ru/article/9711

[2] посмотреть и попробовать модель можно прямо тут: https://zveriki.com/zver-vision/cat.html

[3] зрения: http://www.braintools.ru/article/6238

[4] моделирование зрения: https://habr.com/ru/articles/57686/

[5] нормализацию картинки под восприятие: https://habr.com/ru/articles/61750/

[6] работу модели eye tracking: https://habr.com/ru/articles/68261/

[7] восприятия: http://www.braintools.ru/article/7534

[8] статья о силе цвета: https://habr.com/ru/articles/60426/

[9] про дальтонизм и моделирование цветовосприятия: https://habr.com/ru/articles/60362/

[10] как видят мир дальтоники: https://habr.com/ru/articles/58803/

[11] логика: http://www.braintools.ru/article/7640

[12] зрительная система: http://www.braintools.ru/article/9236

[13] мозг: http://www.braintools.ru/parts-of-the-brain

[14] Источник: https://habr.com/ru/articles/1105002/?utm_campaign=1105002&utm_source=habrahabr&utm_medium=rss

www.BrainTools.ru

Rambler's Top100