АППРОКСИМАЦИЯ ПОЛУТОНАМИ. Пусть Вас не пугает данное название. Суть этого метода очень проста. Еще при зарождении капиталис- тического строя ( не у нас в России ) этот метод использовал- ся для изготовления текстильных изделий. Что же это такое алгоритм аппроксимации полутонами? Сначала рассмотрим метод представления информации, назы- ваемый конфигурированием. Он основан на том, что нес- колько пикселей объединяются в конфигурации ( обычно представ- ляемые в виде решеток, пример см. рис. 1 ). Далее все изобра- жение на экране строится с ис- пользованием только данных кон- фигураций точек. Для примера, рассмотрим нес- колько конфигураций ( квадратные решетки 2*2,3*3, прямоугольные решетки 3*2 ). Нужно выбирать конфигурации очень осторожно, так как иначе могут возникнуть нежелательные мелкомасштабные структуры. Не стоит выбирать, например, струк- туры типа горизонтальные линии и типа вертикальные линии. На ри- сунке 2 показан пример неудачно- го выбора конфигураций. Итак, каждая конфигурация ( решетка ) состоит из определен- ного числа пикселей и количество пикселей в решетке растет с вместе с уровнем интенсивности ( уровнем закрашенности данной конфигурации). Причем, при размере решетки M*N количество возможных уровней интенсивности равно M*N+1, и, соответственно, величина набора конфигураций будет составлять тоже M*N+1 конфигурацию. Это все, что Вам нужно знать о конфигурировании. Теперь же о самом методе аппроксимации. Итак, мы опреде- ляем ( можно использовать уже приведенные методы ) интенсив- ность для каждой точки представ- ляющей собой решетку 4*4 пикселя ( для экрана размерами: 128*96 точек, для набора конфигураций 2*2, либо 64*48 точек, для набо- ра 4*4 ). После этого мы получаем соот- ветствующую данной интенсивности конфигурацию точки ( к примеру, используя пороговые значения ) и изображаем ее на экране. Так об- ходится весь экран. УЛУЧШЕНИЕ ПОРОГОВЫХ МЕТОДОВ. Видно, что использование кон- фигураций ведет к потере пространственного разрешения взамен улучшения визуального. Можно ли как-нибудь выбрать та- кой метод, чтобы получить ка- кой-нибудь компромисс? Можно, если использовать до- работки пороговых методов. Раз- беремся в двух из них: А) Метод Флойда-Стейнберга; Б) Метод возбуждения; Рассмотрим их более подробно: МЕТОД ФЛОЙДА-СТЕЙНБЕРГА. При простом пороговом методе, рассмотреном в прошлом разделе, наблюдается потеря мелких дета- лей и фактуры слабого изображе- ния. Особенно это заметно для волос и складок одежды, а также ее фактуры. Мелкие детали теряются здесь из-за больших ошибок выводимой интенсивности для каждого пиксе- ла. То есть мы получали некото- рую общую интенсивность 13, а пороговое значение для закраши- вания пикселя у нас было 10. В итоге мы получали ошибку e= 13- 10 = 3. В методе Флой- да-Стейнберга сама эта ошибка распределяется на окружающие пиксели по закону, нарисованому на рисунке 3. Таким образом, ес- ли при обработке точки с коорди- натами ( 0 , 0 ) мы получили ошибку, равную 8, то ошибка распределенная на точки с коор- динатами ( 0 , 1 ) и ( 1 , 0 ) будет равна 3, а на точку с ко- ординатами ( 1 , 1 ) равна e= 2. При подсчете интенсивностей для этих точек к их общей интенсив- ности будет добавлено значение получившейся ошибки. Далее мы обрабатываем точку ( 0 , 1 ) по- лучившуюся здесь ошибку для точ- ки ( 1 , 1 ) мы прибавляем к по- лучившейся ранее. И т.д. РИС.3 Распределение ошибки. Распределение ошибки улучшает вид деталей изображения, так как теряется только минимум информа- ции. С программной точки зрения данный алгоритм требует наличия буфера равного высоте экрана при проходе точек сверху вниз. Глав- ный недостаток - необходимость вещественных расчетов. Но данный метод может использоваться с грубыми целочисленными расчета- ми, хотя может потерять всю свою прелесть. МЕТОД ВОЗБУЖДЕНИЯ. Этот метод не требует ве- щественных рассчетов и наличия буфера. Было замечено, что если в изображение вводится опреде- ленный вид случайной ошибки, ко- торая добавляется к общей интен- сивности точки до ее сравнения с пороговой величиной, то изобра- жение на экране улучшается. При этом добавление совершен- но произвольной ошибки не приво- дит к требуемому результату. Нужна матрица отвечающая следую- щим требованиям: Получаются следущие матрицы: ┌ ┐ размера 2*2: │ 0 2 │ (матрица Лима)│ 3 1 │(не из ф.) └ ┘ ┌ ┐ размера 4*4: │ 0 8 2 10│ │12 4 14 6│ │ 3 11 1 9│ │15 7 13 5│ └ ┘ Далее эти матрицы в шахматном порядке добавляются к изображе- нию.