Устранение искажений в растровых дисплеях
|
Рассмотрим мелкие объекты. Не используя принцип выравнивания, объекты 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; просмотров: 1666;











