Журнал «Компьютерра» № 13 от 04 апреля 2006 года
Шрифт:
Такая система позволяет быстро и эффективно вычислять проекции (фактически на каждый пиксель требуется лишь несколько простейших арифметических операций). Теперь, прогоняя заданные картинки через построенную нейронную сеть и сравнивая получаемые изображения с заданной стереопарой, мы при помощи метода последовательных приближений можем с достаточной точностью построить искомые изображения.
И сколько длится просчет одного кадра?
– Сначала алгоритм был реализован на CPU, и расчет одного кадра занимал не меньше двух минут. На современных процессорах все равно будет порядка одной минуты. В любом случае, для приложений реального времени это слишком много.
Лет
Подождите, но ведь 2000 год – это максимум второй GeForce. А значит, ни о каких шейдерах и речи не шло?
– Конечно, пиксельных шейдеров тогда еще не было. Но нам удалось обойтись и без них. Мы воспользовались структурой предложенной системы, которая позволила представить трехмерный объект в виде суперпозиции двухмерных изображений. А для работы с плоскими объектами нам хватило стандартных операций с текстурами. Таким образом, мы «подручными средствами» смоделировали действие нашей нейронной сети. При этом получается огромный выигрыш по скорости, поскольку все операции выполняются на GPU, который именно под эти операции и оптимизирован.
Получается, что при таком подходе не учитывается влияние установленной между экранами размывающей маски?
– Да, действительно, до появления пиксельных шейдеров смоделировать действие маски в реальном времени не удавалось. Мы даже пытались заказать специальный DSP-процессор для решения этой проблемы, но по ряду причин и он не подошел. А на современных карточках нам удалось смоделировать более сложную нейронную сеть, учитывающую воздействие маски, и добиться производительности в 30 fps.
А есть реальные устройства на основе вашей технологии? Где они применяются?
– Да, есть. Я тогда работал в фирме NeurOK [www.neurok.ru], и было выпущено несколько готовых дисплеев, которые демонстрировались на крупнейших международных выставках, таких как Comdex и Infocomm. Насколько мне известно, было изготовлено несколько игровых автоматов для американского казино, кажется MGM. Нам удалось скооперироваться с одной фирмой, которая производила специальные установки на основе больших параболических зеркал. Если в такую оптическую систему поместить любой монитор, то изображение трансформируется, в результате чего получается иллюзия объема. Ну а когда туда поставили наши дисплеи, объем увеличился многократно.
А почему не удалось дальше раскрутиться?
– Просто рынок пока не готов. Ну, рынка как такового нет. Однажды на Comdex’е к нашему стенду подошел пожилой японец, долго стоял и смотрел, как мы общаемся с посетителями. Потом представился. Оказалось, что он в Sony руководил группой, которая продвигала цветной телевизор. Он сказал, что столкнулся с теми же проблемами, что и мы. Качество первых цветных телевизоров было низким, и все спрашивали: а зачем это нужно? Ведь на черно-белом телевизоре все и так прекрасно видно! Прошло время. И где вы сейчас найдете черно-белый телевизор?
Нам потенциальные производители и консьюмеры говорили, что все
Я сотрудничаю с оптиками из МИИГАиК[Московский Государственный университет геодезии и картографии, www.miigaik.ru], фотограмметрия – это их хлеб, а там стереоизображение используется для восстановления трехмерной структуры. Для обработки снимков специалисты обычно используют стереосистему со специальными очками. Так вот, они мне говорили, что относительно небольшой процент людей может долго работать с такой системой. То есть человек отработал день-второй-третий – и все, жалуется на постоянные головные боли. Мозг просто не может этого выносить, и как говорят, «глаза ломаются». Страшное напряжение, зачем это нужно?
А объясняется все очень просто: в реальной жизни люди привыкли к небольшому параллаксу. Я знакомился с медицинскими исследованиями – для комфортного восприятия угол схождения глаз не должен превышать двух градусов. Если больше, начинает болеть голова.
А насколько реалистичным получается изображение на вашей системе?
– Полный реализм. Глаз четко различает, что это объем. На выставках я обычно сначала делал один экран прозрачным, и видно – картинка плоская. Включаю второй – сразу появляется объемность. Но сказать, что изображение высовывается так, что хочется его потрогать, не могу – этого, естественно, нет. Хотя можно подобрать такие исходные изображения, что глубина будет казаться больше, но в среднем – так, как мы в жизни и видим.
Насколько я знаю, кроме вашей есть еще технологии 3D-дисплеев, не требующие очков.
– Да, сейчас много разных систем выпускается. Например, Sharp производит панели с микролинзовым растром. Но они так устроены, что чуть голову в сторону сдвинешь – нет объема. Еще чуть в сторону – у вас изображение для левого глаза поменялось местами с изображением для правого. Область, в которой видно стерео, очень узкая. Причем настолько, что надо сидеть не шелохнувшись. А некоторые фирмы даже выпускают устройства для слежения за глазами зрителя. Когда наблюдатель меняет положение, то либо экран поворачивается, либо на экран выводится подстроенное изображение.
А у нашего нейродисплея допустимая зона достаточно большая. На выставках по два-три человека одновременно смотрят. Кто по центру, тот вообще классно видит, кто сбоку – чуть похуже (у границы экрана заметно, что есть два раздельных изображения). Отошел подальше – вообще видно прекрасно.
А у вас были еще какие-нибудь проекты с использованием GPU? Нейросетей на GPU?
– Были еще две задачи, связанные с 3D. Во-первых, проекционная система, в которой объем также был виден без очков. В ней использовались четыре проектора, находившиеся на расстоянии нескольких метров от специального экрана. Поскольку проекторы были разнесены по горизонтали на десятки сантиметров, при сведении в одну область экрана возникали трапецеидальные искажения. Для их компенсации был разработан специальный алгоритм. На каждый проектор по очереди выводился тестовый прямоугольник, фиксировавшийся камерой. Изображение анализировалось программой, определявшей координаты углов прямоугольника, а затем рассчитывались координаты плоскости, на которую нужно спроецировать изображение для компенсации искажений. После этого на проекторы выводились результаты наложения исходных изображений на соответствующие плоскости, полученные с помощью DirectX.