Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Свертка и устранение ступенчатости
Распространение обсуждавшихся простых методов устранения ступенчатости (сглаживания) требует использование математического метода, называемого сверткой. Для сглаживания берется свертка сигнала, т. е. изображения, с ядром свертки. А результат используется для определения атрибутов пиксела. Свертка задается интегралом
где
h(-x) ядро или функция свертки,
у(х) свертываемая функция,
с() свертка h(x) и у(х)
Представить себе физический смысл свертки из ее математического определения весьма трудно. Однако нам в этом поможет простой графический анализ.
Рассмотрим свертку функции у(х) = х, 0х1 с простой прямоугольной функцией свертки h(x) = 1, 0х1. В графическом виде функция показана на следующем рисунке a.
Для того чтобы получить h(-x), функцию надо отразить относительно ординаты (рис. b). Отраженное ядро для получения h(-x) переносится вправо на величину (рис.с). Затем, как показано на рисунке ниже, ядро свертки и свертываемую функцию у(х) (рис. d) перемножают для разных значений величины. Площадь под объединенными кривыми (функциями) равна значению свертки с(). Которая тоже изображена на рисунке с. Заметим, что в данном случае свертка не равна нулю только в диапазоне 0х2. Таким образом, определение свертки эквивалентно отражению ядра свертки, его сдвигу, перемножению двух функций и определению площади, заключенной под объединенными кривыми.
Математически ядро свертки равно
h(x) = 1 0х1
Отражение приводит к
h(-x) =1 -1х0
Перенос на дает
h(-x) =1 -1х
Поскольку как ядро, так и свертываемая функция у(х) не равны нулю лишь на конечных интервалах, то пределы интегрирования в свертке тоже конечны. Как их определить. Из рисунка ясно, что нижний предел равен максимуму начал интервалов, на которых функции не равны нулю, а верхний предел равен минимуму концов этих интервалов. Таким образом,
c() = 01
=-x)y(x)dx 12
Подстановка функций h(-x) и у(х) дает
c() = 01
= 12
где обе функции параболические (нижняя часть рисунка). Если тангенс угла наклона равен m, а не 1, то результат можно обобщить в виде m 2/2 и (m /2)(2-).
Чтобы понять, какая связь существует между сверткой и устранением ступенчатости (сглаживанием) вспомним эвристический метод модуляции интенсивности, в котором для определения интенсивности используется площадь пиксела. Проверка функции свертки c() показывает, что для m1 значение свертки на правой стороне пиксела, т.е. при х== =1, равно площади той части пиксела, что находится внутри многоугольника, т.е. m/2 (рис б, с уi=0). Для m>1 значение свертки дает сумму площадей частей двух пересекаемых пикселов, расположенных внутри многоугольника (рис б, с уi=0). Этот результат легко обобщить на случай 0. Таким образом, два предыдущих алгоритма (эский модулирования по площади и модифицированный Брезенхема) эквивалентны свертке функций ребер, т.е. прямой и ядра свертки, вычисленных по правой стороне пиксела.
Операция свертки часто называется фильтрацией, а ядро свертки функцией фильтра. В обсуждавшемся ранее простом методе с площадями изображение предварительно фильтруется. Префильтрация выравнивает атрибуты пикселов вычисленного разрешения с разрешением, большим, чем разрешение дисплея, и дальнейшее усреднение атрибутов нескольких пикселов для получения пикселов с меньшим разрешением можно рассматривать как постфильтрующую операцию.
Хотя при помощи простого прямоугольного фильтра или ядра свертки получают вполне приемлемые результаты, треугольный и гауссовский фильтр приводят к еще более качественным результатам. Используются также двумерные фильтры. В настоящее время исследованы простое прямоугольное, пирамидальное, конечное и двумерное гауссовские ядра свертки.
Простые фильтры в виде свертки не всегда эффективны для маленьких многоугольников с площадью, меньшей площади пиксела или для длинных тонких многоугольников. Тем не менее сглаживание можно реализовать с помощью отсечения. Стороны области пиксела образуют отсекающее окно. Каждый индивидуальный многоугольник отсекается по сторонам этого окна. Для модулирования интенсивности пиксела используется отношение площади полученного в результате отсечения многоугольника к площади пиксела. Если внутри пиксела находится несколько многоугольников, то используется среднее (либо равномерное, либо взвешенное) их атрибутов для модулирования пиксела.