Как стать автором
Обновить

Vector-based raster images — это будущее изображений?

Добрый день, читатели сего замечательного ресурса. Ресурс замечателен в первую очередь свободой слова, дающей возможность осмотреть любое событие с любой стороны. Но сегодня я не буду никого разоблачать.
Я хотел бы поговорить о форматах изображений.
Как мы знаем, форматы (как и сами изображения) бывают двух видов — растровые и векторные.

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

Мои размышления
Пока едешь в трамвае в колледж, в голове много чего вертится. Большая часть теряется сразу, что-то висит некоторое время, но тоже исчезает. А некоторые размышления всё же крепко записываются в память.
Изначальной идеей фотографий была возможность абсолютной передачи реальности. Так и появился растр. Он основывался именно на том, что устройства вывода используют поточечный вывод изображения. Конечно, абсолютной реальности мы достигнем не скоро — для этого нужно, что бы в изображении хранилось столько же точек, сколько атомов, излучающих фотоны в данной 3D-сцене, проецирующейся в 2D.
И если растр шёл путём частичного копирования реальных источников света, то вектор использовал принцип «от простого к сложному». То есть, брались математические функции, а это конкретно геометрия, и ими описывались изображения. Действительно, просто чёрный круг на белой бумаге проще описать в векторе.
Растр обычно уже готов к просмотру, в нём только требуется разжать изображение, если оно сжато. С вектором сложнее. Все функции нужно отрисовать непосредственно перед просмотром. Отрисовать – то есть перевести в растр под текущие требования размеров и сглаживания. Отсюда и явный плюс векторных изображений – великолепное масштабирование.
Соответственно размер всегда разный. Чем сложнее изображение, тем выгоднее при большей сложности изображения использовать растр.
Но опять же, вернёмся к идеальному изображению, на котором все источники света описаны в файле изображения и оно идеально масштабируется.

И тут над головой загорается… светодиод!
А что, если взять такое векторное изображение, в котором всё, даже одиночные пиксели, кодируются в векторном формате? Конечно, это довольно сложная вещь, т.к. нужны неслабые мощности для вычисления и отрисовки. И тут нам могут помочь такие технологии, как CUDA и DirectX.
CUDA поможет нам просчитать все сложные алгоритмы. DirectX же отрисует и сгладит всё это в лучшем виде.
У такого «унифицированного» есть и преимущество – большое изображение, залитое градиентом, размером не будет отличаться от меньшего собрата, залитого тем же градиентом.
А Web? — спросите вы. И вебу поможем! Опять же CUDA и DirectX. IE9 нам уже показала, что WEB + DirectX= Скорость + Качество. А для Mac можно использовать OpenGL, благо отрисовка идёт средствами ОС и использование конкретного «ускорителя» не привязано к изображению. Да и CUDA for Mac тоже никто не отменял.
Ах. Ну и мобильные устройства не отменяются. Сейчас намечается переход на платформы Tegra\ION. Тут вам и DirectX и CUDA. И OpenGL найдётся. Так что проблем быть не должно, а если и будут, то наподобие тех же, что и с просмотром Full HD изображений.
И тут же можно использовать знакомые нам алгоритмы, наподобие «объединять в области по 8» из JPEG(если не ошибаюсь). Правда на фоне возможностей, присущих векторным изображениям, это и не понадобится.

Подведём итог.
Какие же, на мой взгляд, минусы?
  • Сложность отрисовки сложных изображений.
  • Требовательность к ресурсам при отрисовке сложных изображений.
  • СТРАШНО-долгое преобразование высококачественных векторных изображений в такой формат. Впрочем, тут можно регулировать сложность алгоритмизации. На самой низкой сложности мы получим большое по размеру, но быстрое по кодированию изображение. На высокой же сложности изображение будет долго кодироваться, но быстрее декодироваться (если оно не очень сложное) и весить меньше.


Какие же плюсы?
  • Хорошая масштабируемость.
  • Возможность иметь изображения, имеющих довольно сложную структуру, но при этом весящих довольно мало.
  • Из 1-го плюса вытекает хорошая детализация
  • Хорошее сглаживание неровностей (antialiasing).


Реализация
Нужно, что бы разработки велись крупной компанией, а не маленькой конторкой, или, тем более, так называемым Open Source –комьюнити. В противном случае, может либо не появиться ничего, либо это будет очередная недоделка.
Кстати, на роль основы для такого формата вполне сгодится тот же BAML, который используется в WPF\Silverlight. Получается он путём предкомпиляции XAML. Впрочем, я не особо знаком с другими форматами.

Предлагаю вам после прочтения данной статьи выразить своё мнение в комментариях.
Готов слушать и спорить.
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.