4.3. Алгоритм с использованием буфера глубины.

 

Синтез изображения в общем случае: алгоритм с использованием буфера глубины.

 

 

 

 

 

 

 

 

 

 

 

 

 


Суть метода: кроме плоскости изображения резервируем память, точно соответствующую объему изображения, а в буфер глубины записываем величину (g) равную удаленности точки объекта от наблюдателя. При обработки любой точки сравниваем удаленность точки с величиной, хранимой в буфере. В буфер глубины можно записывать Евклидово расстояние.

 

 

 

 

 

                        Можно восстановить пространственную координату и посчитать R для любой точки (нужно для прорисовки отрезка на поле изображения).

 

 

 

 

 

 

Если в буфер глубины записываем Евклидово расстояние, то получится:

 

В результате интерполяции Евклидово расстояние это середина отрезка. В буфер G записывать величину R при линейной интерполяции нельзя. Глубину (S) тоже нельзя записывать в буфер глубины, т. к. ее нельзя будет линейно интерполировать. Но в буфер глубины можно записать параметр глубины (h),т. к. h может быть линейно интерполирована в плоскости изображения.

 

,      где A и B – любые числа

Для величины h вводим буфер глубины H. H-буфер – это некоторая область памяти. Она имеет разрядность. Размер этой области равен размеру изображения.

 

                          

          при ;             Smax – задний план

 


   при ;              Smin – передний план

 


Все что находится за Smax и перед Smin  отсекается. Пирамида видимости – это пространственная пирамида (все что находится в ней попадает в поле видимости). Если объект находится за пределами пирамиды видимости, то он не изображается.

 

h обладает рядом достоинств:

1)         соответствие, т. е. Smin соответствует hmax, Smax соответствует hmin

удаленные элементы имеют меньшее значение h, приближенные элементы – большее значение h.

2)                  яркость можно связать с h. Что ближе более яркое, что дальше, то более темное.

 

 

Обработка h при непосредственном синтезе изображения.

 

1.      Инициализируем поля V, H = 0. Очищаем поле V (например, делаем его черным). В H записываем минимальное значение, т. е. заполняем его нулями. Минимальные значения соответствуют максимальной удаленности.

 

 

 

 

 

2.         Для пространственного многоугольника определяем точки с координатами (X,Y,Z,S). Для плоскости изображения используются координаты (x,y,h,v), где v – это яркость в точке.

 

 

 

3.         Используем алгоритм построчного сканирования.

 

 

 

h и v – линейно интерполируем

 

 

 

 


Обработка текущей точки:

 


а) точка вдали

               ;

б)         точка в близи

 

       

 

Пример:

Пусть,

а) точка в дали

 

  ошибка по глубине

б) точка вблизи

При малоразрядном буфере отношение Smin и Smax уменьшается.

Значение h – нелинейно зависимое разрешение по глубине от дальности.

 

Если записывать в G значение S, то нельзя линейно интерполировать.


              

Формула нелинейной интерполяции величины S:

 

Недостатки:

-         Большие вычислительные затраты на каждую текущую точку;

-         S имеет равномерную (т. е. постоянную) разрешающую способность по глубине;

-         Вместо линейной - нелинейная интерполяция.

 

                      

 

Hosted by uCoz