Устранение искажений в растровых дисплеях


 

 
 

Рассмотрим мелкие объекты. Не используя принцип выравнивания, объекты I и III будут проигнорированы, т.к. не покрывают центр , а объект II будет высвечен в виде целого с максимальной яркостью.

 

Рис. 3.15

 

При движении объекта (см. рис) будет наблюдаться мерцание. Кадр I, III – объекта нет (по той же причине), кадр II – объект есть.

 

 
 

Рис. 3.16

 

 
 

В случае мелких объектов (соизмеримых с ) физический разбивается на несколько мнимых (разрешение увеличивается в 2 раза). Значение интенсивности физического определяется как усредненное значение интенсивностей мнимых .

 

Рис. 3.17

 

 

Для цветных изображений:

 

Рис. 3.18

 

Вместо 256 независимых цветов оценивается R-, G-, B- составляющие для каждого из 4 мнимых .

 

Сглаживание линий

 

Есть итальянская поговорка: “Необязательно говорить правду, главное, чтобы то, что вы скажите, хорошо звучало”.

Это относится и к сглаживанию линий; не нужно рисовать картинку идеально. Нужно, чтобы картинка лишь выглядела как настоящая. Не следует углубляться в сложную математику, чтобы получить идеально сглаженные линии, зрительная система человека видит то, что хочет видеть, так почему бы не дать ей лишь ключ к распознаванию?

 

Алгоритм Ву

 
 

Идея: при рисовании линий обычным образом с каждым шагом по основной оси высвечивается два по неосновной оси.

 

Рис. 3.19

 

Их интенсивность подбирается пропорционально расстоянию от центра до идеальной линии. Чем дальше т., тем < ее интенсивность. Значение интенсивности 2-ух дают в сумме 1, т.е. это интенсивность 1 , в точности попавшего на идеальную линию. Это придает линии одинаковую интенсивность на всем ее протяжении, создавая иллюзию, что точки расположены вдоль линии не по 2, а по одной в точности по идеальной линии.

Горизонтальные, вертикальные и диагональные линии не требуют сглаживания. Для других линий алгоритм Ву проходит их вдоль основной оси, подбирая координаты по неосновной оси. Смещение вдоль неосновной оси вычисляется 1 целочисленным делением (для линий с наклоном < 1 берется сам наклон, с наклоном > 1 – 1\2 наклона). Это значение называется ошибкой смещения. Ошибка накопления ( ) показывает, как далеко ушли от идеальной линии по неосновной оси, и как только она достигает критического значения, делается шаг на 1 вдоль неосновной оси. Если основной осью является X, то будут установлены 2 т. с координатами (x,y) и (x,y+1). Короче говоря, продвижение вдоль линии аналогично алгоритму Брезенхэма, только на каждом этапе устанавливается не 1 , а 2. Осталось определить их интенсивность. Ошибка смещения суммируется с ошибкой накопления.

Пусть число уровней интенсивности кратно 2,

min интенсивность — ,

max интенсивность — 0.

 
 

Старшие n битов ошибки накопления покажут необходимую интенсивность для одного из . Интенсивность 2-го пары - интенсивность . Ошибка накопления содержит соотношение расстояний от центра каждого из двух до идеальной линии.

 

 

Рис. 3.20

Заполнение области

Алгоритм построчного сканирования

 
 

 

Рис. 3.21

 

Есть область, граница которой разложена в растр. Требуется: заполнить область внутри. Пусть внутри задана точка “boundary” — значение граничных . “old” – значение внутри области до заполнения. “new” – значение внутри области новое.

Объект заключается в прямоугольную оболочку и проверяется принадлежность объекту.

Проводится построчное сканирование. Находится со значением “boundary”, , следующий за ним и имеющий значение “old” меняется на “new” и так до тех пор, пока не будет встречен еще один со значением “boundary”. После этого осуществляется переход на следующую строку.

 

 
 

Рис. 3.22

Недостаток: Просматривается больше , чем необходимо.

 

Метод заполнения с затравкой

Область называется 4-хсвязной, если из любой внутренней т. можно достичь любой другой т., двигаясь в одном из 4-х направлений.

 

4-х связная обл. 8-связная обл.

 

Рис. 3.23

 

Алгоритм:

1) Поместить затравочный в стек.

2) Пока стек не пуст:

а) извлечь из стека;

б) присвоить требуемое значение;

в) для каждого из соседних 4-хсвязных проверить:

- является ли он граничным;

- не присвоено ли требуемое значение.

г) проигнорировать в любом из этих двух случаев.

иначе поместить в стек.

Пример:

 
 

 

Рис. 3.24

 

Стек

0 11 12 13

1 10 2

2 3

3 2 14

4 5 13 15 14 16

6 3 1 17

7 8 3 5 18 17 16

9 10

       
   

 


Заполнение линиями

Для заданной т. (x,y) определяется и заполняется максимальный отрезок, содержащий эту т. и лежащий внутри области. Потом в поисках еще не заполненных проверяются отрезки, лежащие выше и ниже. Если такие находятся, то функция рекурсивно вызывается дальше. Алгоритм эффективен и для областей с отверстиями.

 



Дата добавления: 2016-07-18; просмотров: 1441;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.016 сек.