Абзац
:: Поиск
:: Поддержка проекта
Webmoney:
  • Z610389805629
  • R427996570517
  • E023541002978
  • :: №6 (05.07.2001) Просмотров: 6493

    Автор: Станислав Юдин.

    Рубрика: Читатель читателю.

    Номер: №6 (05.07.2001).



    Стереограммы на спектруме (Часть 1)

    Наверное, многие из вас видели цветные альбомы с объемными изображениями, которые словно выплывают из плоского листа, если посмотреть особым образом на кажущиеся беспорядочными узоры. До сих пор помню свои незабываемые ощущения, когда я впервые увидел альбом со стереограммами (именно так называются эти фантастические изображения). Тогда я просто не мог поверить в увиденное. Мой разум просто отказывался поверить, что из плоской картинки без каких-либо дополнительных приспособлений появляется действительно объемное изображение. Спустя время, разбираясь с программой «Personal Paint» на компьютере Amiga, я обнаружил фильтр, который преобразовывал нарисованную определенным образом картинку в стереограмму. Мой интерес к подобным изображениям вспыхнул с новой силой. Тогда впервые, полученную на Amiga картинку, я перенес на свой ZX-Spectrum и даже распечатал с него на принтере. Мысль о том, что стереограммы можно строить сразу на Спектруме не давала мне покоя. Однако меня смущал тот факт, что даже Amiga строила стереограммы, затрачивая на это определенное время. Я сомневался, а хватит ли моему Спектруму быстродействия и памяти для выполнения данной задачи? Но тогда я еще не знал алгоритма, по которому обсчитываются стереограммы. Мне так и не удалось найти его описания. Но вот однажды, ко мне в руки попал дополнительный модуль к программе «Photoshop» на РС, который тоже позволял создавать стереограммы и имел при этом разнообразные настройки. Именно благодаря этому plag-in’у я и понял, каким образом строятся стереограммы. Целый день я крутил настройки plug-in’а и строил различные изображения (простые фигуры, точки и т.д.)  пока я, наконец, не нащупал суть алгоритма. Продолжая манипулировать настройками, мне становилось понятным все больше и больше вещей. Потом настал переломный момент, когда вручную в программе «Art Studio» на Спектруме я нарисовал маленький квадрат, который был настоящей стереограммой. Дальше последовала первая программа на ассемблере, которая позволяла строить предельно простые изображения. Не смотря на все это, некоторые моменты мне оставались неясными, в частности я не мог расположить по горизонтали рядом две фигуры - изображение рушилось. После некоторых изменений алгоритма объемное изображение стало стабильным, но появилось эхо. Были и другие неудачи. Но, наконец, наступил момент, когда алгоритм был полностью побежден. Он оказался предельно простым, гораздо проще, чем я представлял его вначале. Прежде чем продолжить дальше, мне хочется привести историю создания стереограмм, описанную Стивом Перри в предисловии к буклету  «Новое измерение».

    «Добро пожаловать в мир трехмерных иллюзий! Эти непостижимые изображения буквально потрясли мир. Мы уверены, что, увидев их, вы вместе с нами восхититесь новым видом искусства, появившимся благодаря компьютерной графике. Начало ему было положено еще в 1838 году. Сначала - элементарное наблюдение, затем - примитивные рисунки, а в конце 50-х годов XX века, когда специалисты изучали, каким образом функционирует наше зрение, создание трехмерных изображений получило дальнейшее развитие. Технология достигла значительных успехов в конце 60 - 70-х годов, когда начали широко использоваться компьютеры, что позволило создать более четкие и более сложные изображения. В конце 80-х годов энтузиасты компьютерной технологии всего мира начали обмениваться методикой и полученными изображениями (главным образом в виде форм и композиций). До того времени еще никому не удавалось представить изображения животных, пейзажи, космические корабли и т.п. Однако на этом развитие не остановилось: художники продолжали обмениваться опытом и напряженно трудились. Их целью было создание образов, способных поразить воображение, вызвать у читателей достаточный интерес, чтобы им не жаль было выложить несколько долларов. То, что началось полтора века назад, с потрясающим успехом превратилось в 1991 году в крупный бизнес, когда несколько новых компаний приступили к производству и реализации высококачественных четырехцветных изображений, взятых из реальной жизни. Развитие технологии быстро набирало темпы в США и Японии, и к концу 1993 года было продано 2 миллиона книг, не говоря уже о 3 миллионах постеров (в среднем стоимостью по 20 долларов каждый). Судя по всему, это лишь начало, потому что остальные страны тоже стали приобщаться к этому новому захватывающему виду искусства. И каков же следующий шаг? Первое, что приходит в голову: трехмерный фильм. Для осуществления этой возможности, наверное, потребуется еще несколько лет, однако и сейчас немало новых компаний уже приступили к производству постеров, брелоков для ключей, маек, календарей, обоев, почтовых открыток, бумаги для упаковки рождественских подарков, поздравительных открыток, плитки для настила полов и т.п. с трехмерными картинками. В Японии даже начали производство одежды, украшенной такого рода изображениями. Что дальше? Этого мы точно не знаем, но уверены: как только вы научитесь рассматривать трехмерные изображения, вы с нетерпением станете ждать новых достижений в этой области.»

    Ну, что ж, я думаю, что теперь самое время коснуться аспектов построения стереограмм. Все мы знаем, что человек обладает бинокулярным зрением, то есть он воспринимает окружающий мир двумя зрительными анализаторами. Каждый из глаз передает полученную картинку в мозг, где две, почти одинаковые, картинки складываются воедино и дают человеку представление об объемности предмета. На основе этого свойства человеческого зрения созданы стереослайды, стереофильмы и даже стереоигры на мощных компьютерах. Но во всех перечисленных случаях, на каждый глаз попадает только свой, предназначенный для этого глаза кадр. В стереослайдах, картинки механически отделены друг от друга так, что каждый глаз смотрит только на свой слайд. Для просмотра стереофильмов применяют очки либо с цветными фильтрами, либо с поляризующими, в зависимости от того, на основе какой технологии изначально снимался такой фильм. В компьютерных играх также применяются очки, однако их устройство гораздо сложнее: картинка на экране компьютера в таких играх строится либо через строчку, либо через кадр, а фильтры очков соединенных с компьютером переключаются соответствующим образом, позволяя видеть каждому глазу либо свои строки, либо свои кадры. Несколько иначе состоит дело со стереограммами, ведь здесь оба глаза видят одну и ту же картинку. Как же становится возможным появления стереоизображения? Все дело в том, что при просмотре стереограмм фокус изображения перемещается за плоскость рисунка. А теперь я перехожу непосредственно к алгоритму. Начиная готовить изображение для преобразования в стереограмму, нужно иметь ввиду, что переконвертировать в стереограмму можно любую картинку, но далеко не любая картинка будет после этого видна и казаться объемной. Поэтому, рисуя картинку в графическом редакторе, нужно придерживаться некоторых правил. Прежде всего, рисунок не должен содержать слишком мелких деталей - они просто не будут различимы на стереограмме. Каков будет минимально различимый размер деталей, зависит от многих факторов, ведущими из которых являются разрешение и текстура стереограммы. Следующий момент, который необходимо иметь ввиду: весь объемный рисунок будет иметь максимальный размер 192х192 пикселя, поэтому при подготовке рисунка к конвертированию правую его часть шириной в 8 знакомест (64 пикселя) необходимо закрасить в черный цвет и ничего там не рисовать. Не смотря на то, что рисунок получается смещенным влево, после конверсии он будет виден в центре экрана. И самое главное - цвета. Каждому цвету соответствует свой план. Жесткой привязки здесь нет - все зависит от программы, но принято делать так: чем светлее цвет, тем ближе будет план. То есть детали рисунка, окрашенные в черный цвет, будут расположены на заднем плане, а окрашенные в белый цвет будут ближе всего. На втором этапе необходимо подготовить основу для стереограммы. Для этого необходимо  залить весь (обязательно весь!) экран какой-нибудь текстурой. Текстура может быть как черно-белой, так и цветной. Однако здесь стоит оговориться, что на Спектруме на черно-белой стереограмме гораздо проще увидеть объемное изображение, тем более что цвет на цветной стереограмме будет прозрачным. Идеальным для восприятия объемного изображения является заливка экрана случайным образом так, чтобы количество черных и белых пикселей приблизительно было равным. Если же для заливки использовать какой-то орнамент, то высота повторяющегося фрагмента не ограничена, а ширина должна быть 32 пикселя или 4 знакоместа.  В противном случае, если фон преобразуемого изображения будет черным, то орнамент на готовой стереограмме будет обрезан как раз до 32 пикселей. На этом подготовительный этап заканчивается и начинается непосредственно конвертирование, которое производится построчно. Во время конвертирования приходится манипулировать одновременно двумя изображениями: с подготовленной для конвертирования картинкой и основой для стереограммы. Берем первый пиксель первой строки, подготовленной картинки и смотрим на его цвет (если пиксель зажжен, то смотрим на цвет чернил, а если погашен, то на цвет бумаги). Затем берем первый пиксель первой строки основы стереограммы и смотрим, зажжен или нет он. После этого в зависимости от цвета точки на картинке ставим дополнительную точку на будущей стереограмме, для этого отсчитываем вправо определенное количество точек (оно зависит от цвета точки картинки) и зажигаем или гасим пиксель. То есть дополнительный пиксель должен быть точно таким же, как и первый пиксель первой строки основы стереограммы. Далее берем второй пиксель первой строки картинки, определяем его цвет, берем второй пиксель первой строки стереограммы, определяем, зажжен он или нет, в зависимости от цвета второго пикселя первой строки картинки вычисляем, где будет стоять еще один пиксель стереограммы и зажигаем или гасим его в зависимости от того зажжен или погашен второй пиксель первой строки стереограммы. Операцию проводим до конца строки. В конце строки возникнет ситуация, когда парные пиксели стереограммы не будут помещаться на экран - их необходимо просто пропустить и не ставить. По такому же принципу обрабатываем остальные строки картинки и стереограммы. Подытоживая, я попытаюсь сформулировать суть алгоритма одним предложением: любой точке стереограммы соответствует парная точка справа, а расстояние между ними зависит от цвета точки на конвертируемом рисунке.


    (С) Станислав Юдин
    г. Владивосток
    e-mail: speccy@softhome.net
    FIDO: 2:5045/78.4
    ZXNet: 500:4232/1


    Ссылки по теме:

    Стереограммы на спектруме (Часть 2) [№7]


    © 2004-2013 Perspective group