ZX News #03
28 февраля 1997

Сглаживание картинок - Алгоритм сглаживания статических изображений.

(C)1997 Serge Segal

  АЛГОРИТМЫ СГЛАЖИВАНИЯ ИЗОБРАЖЕНИЙ.


  В данной статье речь пойдет об
  алгоритмах сглаживания  стати-
  ческих  изображений.   Сначала
  разберемся зачем это нужно,  а
  затем можно уже разбирать  сам
  процесс.

          ИТАК, ЗАЧЕМ ЭТО НУЖНО?


  Каждый кто видел программу "EXTACY MD"
группы "RUSH", помнит  часть, в  которой
вращается  надпись  "XTC". Так  как  она
вращается быстро, незаметно,  что  линии
составляющие ее выглядят, мягко  говоря,
не  очень  красиво,   как-то  зубцевато.
Все дело в том,  что  использовался  ре-
дактор 3D-изображений, который не  сгла-
живает линии. Сейчас все  редакторы  для
3D-графики на мощных машинах это делают.
Для этого специально изменяется алгоритм
рисования линии и окружности. Об этом мы
расскажем  в  следующих  номерах  нашего
журнала, а сейчас, о том, как эту  проб-
лему можно решить, не меняя кода  редак-
тора.  Можно самому  написать  алгоритм,
который автоматически сгладит линии.

  Второе применение сглаживания  -  кор-
рекция увеличенных  растровых  изображе-
ний. С  проблемой  угловатости  картинки
сталкивался каждый, кто работал в редак-
торе "Art Studio" с увеличением, особен-
но с непропорциональным. Такую увеличен-
ную картинку также необходимо сгладить.


 КАК ЖЕ ВСЕ-ТАКИ РАБОТАЕТ ЭТОТ АЛГОРИТМ


  По старой традиции мы не будем рассма-
тривать  сложные  и  малоприменимые  для
"ZX-Spectrum" алгоритмы. Так интеллекту-
альное  сглаживание   обрабатывает  одну
картинку около часа. Эффект, конечно ...
Но вот производительность, как-то не тя-
нет... Поэтому я придумал иной  алгоритм
сглаживания, простой до  идиотизма,  но,
вместе с тем, работающий довольно быстро
и дающий сносный эффект.  Состоит  алго-
ритм из двух частей:  сглаживание  линий
(для векторных изображений) и  сглажива-
ние углов (для увеличенных  избражений).
Работают оба алгоритма на одном и том же
принципе: сканирование экрана в  поисках
шаблона и замена шаблона на более краси-
вый.
  ┌─┬─┐  ┌─┬─┐  Как видно,  для  первого
  │█│░│  │█│█│  алгоритма,  мы   находим
  ├─┼─┤=>├─┼─┤  зубец и заменяем его  на
  │░│█│  │█│█│  квадрат, либо уголок.
  └─┴─┘  └─┴─┘  На что будем менять, по-
   ||           казывает переменная DOU-
  ┌─┬─┐         BLE, если 0  -  то  зуб,
  │█│█│         иначе квадрат.  Рекомен-
  ├─┼─┤         дую для увеличенных изо-
  │░│█│         бражений квадрат, а  для
  └─┴─┘         векторных - уголок.

Второй проход - сглаживание углов  рабо-
тает с матрицей 3 на 3.

  ┌─┬─┬─┐  ┌─┬─┬─┐   Аналогично первому,
  │█│█│█│  │█│█│█│  этот алгоритм  заме-
  ├─┼─┼─┤  ├─┼─┼─┤  няет углы  на  треу-
  │█│░│░│=>│█│█│░│  льные зубцы. Никакой
  ├─┼─┼─┤  ├─┼─┼─┤  сложности   в   этом
  │█│░│░│  │█│░│░│  нет, главное -  пра-
  └─┴─┴─┘  └─┴─┴─┘  вильно снять матрицу
                  и правильно ее вернуть
на место.  Кроме  того  пришлось  ввести
принудительное инвертирование для  неко-
торых картинок на время сглаживания (пе-
ременная INVERT). После окончания  сгла-
живания, картинка возвращается  в  неин-
вертированное состояние.

  Кроме названных существуют еще две пе-
ременных управления процессом:  FIRST  и
SECOND, включение / выключение  соответ-
ственно  первого  и  второго алгоритмов.
Ну и естественно координаты окна,  кото-
рое сглаживается: X1, Y1, X2, Y2.

  В приложении Вы найдете:

      - SGLAV1.Z, SGLAV2.Z  два исходных
        файла алгоритмов с комментариями
      - SGLAV2  кодовый файл,  готовый к
        использованию
      - SGL.EXMP  пример   использования
      - $BASHK1  картинка - пример.

  Ну все, на сегодня пожалуй  хватит.  В
дальнейших номерах мы возможно (!)  про-
должим тему извращений над картинками.


  ____________________________________



Другие статьи номера:

От автора - Новшества во вьювере.

Анкетиривание - Ответьте на 10 вопросов и вы попадете в энциклопедию "SPECCY особей".

Обзор журналов - О журналах : SPECTROFON,ZX-FORMAT,ADVENTURER,SPECCY, FAULTLESS.

Моя собака - Фокстерьер - мечты и реальность.

ANDY CAPP - Описание игры ANDY CAPP.

WEC LE MANS - Небольшое вскрытие WEC LE MANS.

RED HAWK - Описание игры RED HAWK.

Вращение картинок - алгоритм поворота изображения относительно заданного центра.

Сглаживание картинок - Алгоритм сглаживания статических изображений.

Морфирование картинок - Об эффекте плавного перетикания одного изображения в другое.

Последний звездный боец - Презентация луганской игры - THE LAST STAR FIGHER.

Как вы знаете Spectrum - Тест "Как хорошо вы знаете Spectrum".

Сокращения - Общепринятые сокращения (это должен знать каждый).

Война за феньки - Хроника однодневной войны (Игровая секция Толкиновского Общества в действии).

Ролевая игра - Немного о ролевых играх.

Умные мысли - Умные мысли великих людей.

Письма читателей - Первые отклики читателей о журнале: Роман Рублаченко, Вячеслав Садоненко, Impetus Led.

Отчет за год - Прошел год... с момента выхода первого номера.

Coming soon - что вас ждет в 4-м номере журнала.

Приложение - Смагли-3 демо, Andy Capp, Red Hawk!, SGLEXMP, Crystal Dream members in East Ucrainian State University, Screen Editor, Rotate, Morph, Last Star Fighter, UFO-2 Help.

Реклама - Реклама и обьявления ...

Авторы - авторы журнала.


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Игрушки - Что новенького: обзор новинок
Набат - ОДИНОКИЙ МЫСЛИТЕЛЬ.
График - график работы BBS.

В этот день...   21 августа