Йоханнес Копф, сотрудник Microsoft, и Дани Лишинский из Еврейского Университета в Иерусалиме, разработали весьма любопытный алгоритм, позволяющий преобразовывать крупнопиксельную 8-битную графику в весьма благообразно выглядящую современную векторную.

С одной стороны, ну и что? Алгоритмы сглаживания – интерполяционные – вещь отнюдь не новая… Однако простая (или не очень) интерполяция даёт далеко не всегда удовлетворительные результаты, особенно, когда картинка из очень низкого разрешения переводится в высокое.

Вот пример из японской аркады 1987-го года Zeliard.

Сглаженный (алгоритмом, встроенным в DosBox) и несглаженный варианты Zeliard. Нажмите на изображение, чтобы открыть полноразмерный вариант.

Как известно, художники 1980-х были, скажем так, сильно ограничены в выразительных средствах – крайне небогатая цветовая палитра, низкое разрешение… При этом немногопиксельные персонажи у хороших художников получались на редкость выразительными – ни одного случайного пикселя.

При интерполяционном сглаживании картинка, какой бы грубой по нынешним временам она ни казалась, получается не сглаженной, а размазанной в мыло и ещё менее приятной для глаза:

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

Копф и Лишинский пошли совершенно иным путём. Их алгоритм распознаёт детали на попиксельном уровне, чтобы обеспечить адекватный шейдинг, и, кроме того, при приобразовании оригинального низкополигонального изображения способен создавать гладкие сплошные линии из серии отдельных пикселей (квадратов), смыкающихся только по диагонали. Вот так:

Или вот:

Интересно, что вариант Photo Zoom выглядит лучше, чем алгоритм Копфа.

Что ещё важно, так это что получившееся изображение может быть любого разрешения – ибо векторное.

Впрочем, есть и некоторые недостатки: он делает все контуры очень гладкими, что не всегда правильно, а иногда и может вообще выдавать бог знает что. Например:

Сам по себе алгоритм требователен к вычислительным ресурсам, так что его real-time применение пока затруднительно. Но кто знает, может быть в будущих консолях тех же Microsoft и Nintendo что-то подобное будет уже встроено, и древние крупнопиксельные аркады вдруг обретут новую жизнь?..

Кстати, вот фрагмент допотопного Mario, “улучшенного” с помощью этого алгоритма:

P.s. По неизвестной причине сайт одного из авторов алгоритма едва открывается, и оригинальный PDF скачать невозможно. Возможно, это временно. Пока с оригинальным документом можно ознакомиться здесь.