Анаглифный метод представления и просмотра стереоскопических изображений был изобретён очень давно. Принцип метода очень прост - разделение спектра цвета на две части, одна часть отдаётся для левого ракурса, а другая для правого. Каждый ракурс пропускается через свой фильтр, который отрезает свою часть спектра, а итоговое изображение получается суммированием обработанных ракурсов. Последующее воспроизведение происходит с помощью очков с двумя разными фильтрами для каждого глаза.
Как можно догадаться, при обратном разделении ракурсов с помощью очков каждый глаз видит ракурс с урезанным спектром. Может показаться, что ни к чему хорошему это не приведёт, но благодаря уникальным способностям нашего мозга и тому факту, что в сумме 2 ракурса дают полный цветовой спектр (разумеется относительно исходного изображения), мы видим полноцветное изображение!
Разумеется, на практике не всё так гладко:
- Во-первых, мозг у нас хоть и хороший, но у каждого свой: у разных людей есть различная ‘переносимость’ такого раскрашивания, всем необходима некоторое время для адаптации и у всех со временем устают глаза/голова (время комфортного просмотра индивидуально, хотя и подвержено тренингу);
- Анаглифному изображению свойственны ‘слепые пятна’, то есть определённые цвета просто теряются.
- Возникают ‘пестрящие цвета’. То есть определённые цвета становятся слишком нарочитыми.
- Разность яркости ракурсов.
Со временем возникла ещё одна неочевидная проблема, связанная не с самим анаглифом, а с разработанными без адаптации под него форматами сжатия видео и изображения. Популярные JPEG для изображения и семейство MPEG для видео адаптируют цветовое пространство для максимально эффективного сжатия, что было рассчитано для обычного моноскопического изображения, тогда как хранение анаглифного приводит к появлению цветового гхоста - то есть к двоению изображению (взаимопроникновение ракурсов).
Каковы же преимущества анаглифного метода? Их тоже много:
- Дешевизна и доступность (картонные очки с пластиковыми фильтрами стоят копейки).
- Высокая совместимость (нет необходимости менять воспроизводящее оборудование - совместимы практически все проекторы, мониторы, кинотеатры, даже цветная типография!!!).
- Нет необходимости в специальном программном обеспечении для просмотра (картинки, видео - всё это возможно в обычном просмотрщике, проигрывателе, интернет-обозревателе без сторонних расширений).
Всё это в совокупности сделало анаглифное стерео самым доступным способом просмотра стерео, и даже сегодня он не сдаёт своих позиций, оставаясь самым популярным. Существуют сайты, галереи, книги и видео доступное исключительно в анаглифном формате на зло любителям полноценного (полноцветного) стерео.
Dolby3D стал некоторой попыткой решить проблему цветопередачи анаглифного формата путём более сложного спектрального разбиения. Однако используемые в очках фильтры делают невозможным использование технологии со стандартным RGB мониторами и рассчитана исключительно для кинозалов, где такие же фильтры применяются для проектора. При использовании цветового колеса достаточно одного проектора с высокой частотой кадров - колесо меняет фильтр каждый кадр, то есть на экране в каждый момент времени на самом деле только один ракурс, хотя сами очки остаются пассивными. В этой статье этот формат более не рассматривается.
Формирование анаглифного изображения
Каждый ракурс стерео-изображения пропускается через специальный фильтр. Выбор фильтров напрямую связан с очками для просмотра готового изображения.
Самые популярные очки - красно/голубые, где левое стекло красное, а правое - голубое. Для таких очков правый ракурс исходной стерео-пары нужно пропустить через ‘голубой’ фильтр (то есть удалить красный цвет), а левый ракурс - через ‘красный’ фильтр (удалить голубой цвет). Простота идеи сочетается с простотой реализации - такую фильтрацию можно легко провести аналоговыми методами (без участия компьютера - простыми стеклянными фильтрами). На изображении справа наглядно изображён процесс формирования анаглифного изображения.
Наиболее распространённым форматом хранения изображения на компьютере является RGB (Red - красный, Green - зелёный, Blue - синий). При таком представлении каждый пиксель (точка, минимальная единица деления, совокупность которых формирует полное изображение) закодирован сочетанием красного, зелёного и синего (вспомните уроки рисования в школе - смешиванием этих 3х цветов можно получить любой другой цвет). В простейшем случае каждый пиксель анаглифного изображения будет равен = R-компонента от левого ракурса и GB-компоненты от правого ракурса.
Однако получаемое простейшим способом изображение для красно-голубых очков довольно часто страдает рядом недостатков. Были просчитаны и другие варианты смешивания цветов. Такие фильтры проще представить в виде матрично-векторного умножения и сложения. Введём следующие обозначения: L - пиксель левого ракурса (left), R - пиксель правого ракурса (right); компоненты пикселя (x) обозначим как x.r - красная (red), x.g - зелёная (green) и x.b - синяя (blue). Рассмотрим различные варианты фильтров.
Color (red-cyan) anaglyph
Или обычный красно-голубой анаглиф. Формула: |r| | 1 0 0 | |L.r| | 0 0 0 | |R.r| |g|=| 0 0 0 |*|L.g|+| 0 1 0 |*|R.g| |b| | 0 0 0 | |L.b| | 0 0 1 | |R.b| |
True (dark) anaglyph
Или тёмный анаглиф. Как можно догадаться из названия, получаемое изображение темнее исходного. Формула: |r| |0.299 0.587 0.114| |L.r| | 0 0 0 | |R.r| |g|=| 0 0 0 |*|L.g|+| 0 0 0 |*|R.g| |b| | 0 0 0 | |L.b| |0.299 0.587 0.114| |R.b| |
Gray anaglyph
Или серый анаглиф. Данный фильтр преобразует исходную стерео-пару в анаглиф с оттенками серого. С помощью этого трюка достигается более равномерная яркость ракурсов и восприятие анаглифа в ущерб цветам в целом. Формула: |r| |0.299 0.587 0.114| |L.r| | 0 0 0 | |R.r| |g| = | 0 0 0 |*|L.g| + |0.299 0.587 0.114|*|R.g| |b| | 0 0 0 | |L.b| |0.299 0.587 0.114| |R.b| |
Optimized anaglyph
Или оптимизированный анаглиф. Данный фильтр сохраняет цветовой баланс исходного изображения (в отличие от серого и тёмного фильтров). Сложными вычислениями достигается лучшая цветопередача изображения (в отличие от простого анаглифа), более равномерная яркость ракурсов. Когда эта формула была выведена, её использование в реальном времени было невозможным. Однако сегодня для мощных векторных процессоров (видеокарт с поддержкой пиксельных шейдеров) такие вычисления не представляют сложности. Источник - https://research.csc.ncsu.edu/stereographics/LS.pdf Формула: |
|r| | 0.4154, 0.4710, 0.1669| |L.r| |-0.0109,-0.0364,-0.0060| |R.r| |g|=|-0.0458,-0.0484,-0.0257|*|L.g|+| 0.3756, 0.7333, 0.0111|*|R.g| |b| |-0.0547,-0.0615, 0.0128| |L.b| |-0.0651,-0.1287, 1.2971| |R.b|
Yellow-Blue anaglyph
Или ColorCode или жёлто-синий анаглиф. Этот фильтр не является вариантом для красно-голубых очков, а предназначен для жёлто-синих очков. Другая комбинация разделения базовых компонент (RGB, красный, зелёный, синий) как оказалось даёт лучшую цветопередачу, нежели красно-голубое, даже без дополнительных оптимизаций на большинстве материалов, а также более равномерную яркость ракурсов. Формула: |r| | 1 0 0 | |L.r| | 0 0 0 | |R.r| |g|=| 0 1 0 |*|L.g|+| 0 0 0 |*|R.g| |b| | 0 0 0 | |L.b| | 0 0 1 | |R.b| |
Популярность анаглифа вызывает скорее негативную реакцию у любителей полноценного стерео (то есть оборудованными дорогими стерео-устройствами). Использование анаглифа повсюду делает дорогие устройства бесполезными - чтобы посмотреть сохранённое в анаглифном формате изображение необходимо либо надеть анаглифные очки, либо преобразовать его в стереопару.
Из формул, по которым вычисляется анаглифное изображение, легко понять, что итоговое изображение всегда теряет большую часть информации оригинальных ракурсов. Таким образом, первое что нужно понять - полноценное восстановление невозможно никакими алгоритмами.
Первый шаг, который делается с целью получения стереопары - это выделение ракурсов теме же фильтрами, что и в анаглифных очках. Полученные ракурсы будут лишены части цветового спектра, однако просмотр такой пары уже возможен без анаглифных очков. Качество и ощущения при этом будут будут примерно теми же, что и при просмотре через анаглифные очки.
Поскольку основная проблема восстановления из анаглифа это потеря цвета, то преобразовав полученные ракурсы в оттенки серого и откорректировав яркость, можно добиться более комфортного просмотра.
Однако смотреть фильм, изначально снятый в цвете, в оттенках серого - не самое приятное времяпровождение. Поэтому на втором шаге восстановления стереопары из анаглифа проводится раскрашивание ракурсов. Да, именно раскрашивание - как в детских книжках. В общем случае, автоматизировать такой процесс едва-ли возможно - такое раскрашивание придётся проводить профессионалу в профессиональном фоторедакторе (GIMP, Photoshop, Corel Photopoint,…).
Но пытливые умы пошли на хитрость. Дело в том, что многие стереофильмы идут комплектом: анаглиф + моно. Причём моно как правило является левым ракурсом. Таким образом, в руках мы имеем уже как минимум один полноцветный ракурс и один урезанный, что уже гораздо лучше! С полноцветного ракурса можно снять цветовую карту и попытаться раскрасить обеднённый ракурс. По всей видимости, именно этим и занимаются коммерческие продукты: DeAnaglyph от Питера Виммера (создателя StereoScopic Player’a) и DeAnal от Kostasoft.
Очевидно, что эти средства автоматизации становятся бесполезными для абсолютного большинства фотоматериалов, выложенных в интернет в исключительно анаглифном формате. Использование анаглифа в качестве формата было оправдано в прошлом, но сегодня для пользователей более выгодным является хранение видео и изображений с раздельными ракурсами. Текущие программные средства способны преобразовывать стереопары в реальном времени не только в анаглиф, но и в форматы для других устройств. Одной из причин разработки sView как раз и была необходимость в бесплатном, удобном и функциональном приложении, которое смогло бы сделать минимально полезным хранение материалов в ‘мёртвом’ анаглифном формате.