Похоже, что тема стереоизображений заинтересовала наших читателей. После выхода статьи "Почем опиум для народа" я даже получил целое читательское письмо, чего уже давненько не случалось. Так что продолжим углубляться в этот вопрос. Наверняка желание получить объемную картинку с совершенно плоского листа бумаги возникло у человека сразу после изобретения фотографии. И действительно, что может быть естественнее, чем объемное изображение объемного же мира. Только вот как? Способов было придумано и реализовано много, только вот большинство из них страдают необходимостью в сложном оборудовании и, соответственно, высокой ценой. А мы обратимся к простейшим - с использованием компьютера.
Сначала немного теории. Как образуется стереоизображение? Как известно, у нормального среднестатистического человека имеется два глаза, разделенных некоторым горизонтальным расстоянием. Соответственно, каждый глаз видит объект, находящийся перед человеком, немного под разными углами. Из геометрии известно, что, зная расстояние между двумя точками и углы между направлением из них на объект и соединяющей их линией, можно вычислить расстояние до этого самого объекта. Называется это триангуляцией. Причем зрительным центром мозга такая триангуляция выполняется очень хорошо и быстро, поскольку именно так наши обезьяньи предки определяли расстояние до ближайшей ветки и дальнего саблезубого тигра. Те предки, которые в триангуляции были не сильны, давно упали с ветки и/или порадовали тигра обедом. Но все это справедливо только для объемных объектов, которые разные глаза видят немного по-разному (вот они, те самые углы). Картинка же на бумаге или экране плоская. Вопрос в том, как придать ей объем. Элементарное решение - сделать две картинки: по одной для каждого глаза (стереопару). Теперь осталось только сделать, чтобы каждый глаз видел свою картинку (то есть разделить стереопару). Тут существует много способов. Можно расположить картинки бок о бок или друг под другом и приучиться смотреть на каждую "своим" глазом.
Но мы обратимся к техническим способам. Один из них реализован в компьютерных стереоочках - там картинки разделяются на экране во времени (выводятся в последовательных кадрах), а очки по очереди затемняются и пропускают "нужную" картинку к "нужному" глазу. Этот способ обеспечивает достаточно качественный стереоэффект и хорошую цветопередачу, но требует покупки очков (порядка $30-50). Второй способ попроще (так называемые анаглифы) - грубо говоря, картинка для одного глаза окрашивается в красный цвет, для другого - в синий. Затем эти картинки накладываются друг на друга и выводятся на экран. Смотреть на них надо через светофильтры - красный для одного глаза и синий для другого. Таким образом, картинки разделяются, и формируется стереоизображение. Способ хорош простотой и относительной доступностью светофильтров. Правда, цветопередача страдает - в идеале картинка должна вообще получиться черно-белой. Однако есть способы получения и цветных анаглифов - там могут быть проблемы с подбором цветов картинки, но зато эффект от цветного изображения лучше. И еще один плюс анаглифов - их можно распечатать на любом цветном принтере и смотреть с бумаги.
Собственно, с теорией покончено. Перейдем к практике. Сначала надо сделать стереопару - то есть пару картинок, каждая из которых будет соответствовать виду одним из глаз (для простоты назовем их правой и левой картинкой). Тут есть два варианта - можно стереопару сфотографировать, а можно полностью сгенерировать на компьютере (например, в 3ds'е). Фотографировать, конечно, удобнее всего цифровой камерой, поскольку сразу можно посмотреть на результаты и, если картинки не сводятся, сделать еще одну попытку. Да и втянуть картинки в компьютер можно намного быстрее. Впрочем, можно сделать фотографии и обычной пленочной камерой, но тогда придется ждать, пока проявят пленку, пока вы ее отсканируете - а потом может оказаться, что пара получилась неудачной. В общем, цифровая камера тут намного удобнее.
Как это делается? Очень просто - для начала выбираем объект, который надо изобразить "в объеме". Теперь наводим на него камеру и делаем снимок. Затем переносим камеру на некоторое расстояние (оно называется стереобазой) и делаем еще один снимок. Стереобаза выбирается из соображений, что отношение расстояния между точками съемки и расстоянием до объекта должно находиться в пределах 1:15 - 1:30. Чем меньше отношение, тем менее выражен стереоэффект, однако если выбрать его слишком большим, то картинки могут не свестись (или стереоизображение будет искаженным). И сразу запомните, какая картинка соответствует правому глазу, а какая - левому. Еще несколько важных моментов - камера при съемке не должна менять ориентации в пространстве. То есть ее нельзя наклонять, поворачивать и смещать по вертикали. В идеале должно быть только горизонтальное перемещение. Доворачивать камеру на объект съемки тоже не надо (см. рисунок). И учтите, что при смещении камеры кадр немного сдвинется, так что краями изображения придется при обработке пожертвовать. Соответственно, кадрировать придется с некоторым запасом справа и слева. Да, естественно, что объект во время съемки должен быть неподвижен и равноудален от обеих точек съемки. В случае генерации картинки в 3ds - просто переместите камеру, сохранив направление луча зрения.
Итак, будем считать, что стереопару мы получили (см. рис.). Теперь надо ее свести (в компьютере) для просмотра. Программ, умеющих делать из стереопары готовую картинку под тот или иной способ просмотра, на самом деле существует масса. Хорошая подборка ссылок имеется по адресу www.stereo3d.com/applications.htm. Я бы рекомендовал 3D Stereo Image Factory (members.aol.com/threedr) и 3D Combine (www.photoalb.com/combine). Первая удобнее, но бесплатно доступна только демо-версия без возможности сохранения (к тому же, что противнее, она наклеивает метки "Demo" на готовые картинки). Вторая чуть уступает по своим возможностям, зато это полнофункциональная "шаравара". В общем, выкачиваем одну из программ, загружаем в нее левую и правую картинки и выбираем, как смотреть. Да, еще надо указать программе точку, по которой сводить кадры. Точка должна быть видна на обеих картинках и находиться на одной высоте. В простейшем случае будем сводить под анаглифические очки (красно-синие или красно-зеленые - все зависит от имеющихся светофильтров). В результате получится стереокартинка (в газете печатать ее смысла не имеет, поскольку нужна цветная печать, а вот на сайте мы ее выложим). Вот мы и получили настоящее объемное изображение, причем цветное. И на всю операцию потребовалось минут 15-20, не больше. Зато сколько удовольствия! Очень советую поэкспериментировать, если есть возможность. И зайдите на сайт - посмотреть, как выглядит результат. Кстати, для лучшего понимания процесса советую почитать справку к 3D Stereo Image Factory - там очень много интересной информации.
Константин
АФАНАСЬЕВ,
[email protected]
А вот готовая сведенная цветная стереопара. Сделана для красно-синего комплекта светофильтров. Красный на левый глаз.
О светофильтрах
Пару слов о подборе светофильтров для просмотра. Красный фильтр должен полностью отсекать синюю часть картинки, синий - красную. Сложенные вместе, фильтры должны быть на просвет практически черными. В крайнем случае можно поэкспериментировать с насыщенностью цветов, чтобы подогнать картинку под имеющиеся фильтры. Опять же, для распечатанной картинки может понадобиться немного другая комбинация фильтров, поскольку для печати используется цветовая формула CMYK, а на мониторе - RGB. В общем, все надо проверять и, возможно, корректировать цветопередачу. Где взять фильтры? Их можно купить в фотомагазине. А можно изготовить и самому, но это уже отдельная тема.
Комментарии
Тогда пишите
http://wmiller.hobi.ru/photo/inkfiltr.htm
А вообще, больше всего интересного у меня хранится не на сайте.