Про стереограммы

Вам знакомы такие загадочные картинки?

Если да, то вы знаете, что в них в буквальном смысле закодировано объёмное изображение. Но как это делается?

Весь процесс делится на 2 части: создание маски будущего объёмного изображения и деформации блок-изображений. Начнём со сложного :)

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

И чем ближе мы хотим расположить что-то на нашем рисунке, тем в маске эта деталь будет светлее (впрочем, всё зависит от алгоритма чтения маски, о чём расскажу позже)

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

2. Для чего вообще использовать блок-изображения? Очевидно, для упрощения возникновения стерео-эффекта у зрителя, т.к. при рассмотрении такой картинки методом параллельных глаз проще её увидеть, если одинаковые точки стереопары расположены близко друг к другу (1-3 см). И чем уже полоски блок-изображений, тем проще и быстрее увидеть весь объёмный рисунок. Но для опытных зрителей это не принципиально.

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

Чтобы определить, какие детали на какой глубине расположены, происходит чтение маски объёмности: 

- Мысленно рассекаем маску на слои по яркости цвета: выбираем цвет из палитры маски, например, светло-серый (для компьютера понятнее 16-ричная форма записи цвета, но это не меняет сути) и ищем все места маски, имеющие такой цвет.

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

Например, вот исходное изображение:

#     #     #     #     #     #     #     #     #

#     #     #     #     #     #     #     #     #

#     #     #     #     #     #     #     #     #

#     #     #     #     #     #     #     #     #

#     #     #     #     #     #     #     #     #

В данном примере блок-изображение - это столбец из знаков "#".

А вот маска:

0     0     0     0     0     0     0     0     0

0     0     0     0     0     0     0     0     0

0     0     0     0     1     0     0     0     0

0     0     0     0     0     0     0     0     0

0     0     0     0     0     0     0     0     0

Здесь 0 - чёрный цвет (глубокий), 1 - белый (близкий). Продеформируем сетку по правилу объёмности: более глубокие детали имеют более разнесённые точки.

#     #     #     #     #     #     #     #     #

#     #     #     #     #     #     #     #     #

#     #     #     #    #     #     #     #     #

#     #     #     #     #     #     #     #     #

#     #     #     #     #     #     #     #     #

Как видим, там, где в маске была 1, в исходном изображении произошёл сдвиг точек друг к другу.

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