Альтернативы сглаживания

Я видел сглаживание в Windows с использованием GDI+, Java, а также с помощью Photoshop и Gimp. Существуют ли какие-либо другие библиотеки, которые предоставляют средства сглаживания, не зависящие от поддержки со стороны хост-ОС?

3 ответа

Решение

Antigrain Geometry предоставляет сглаженную графику в программном обеспечении.

Как указал Саймон, термин сглаживание используется не по назначению / злоупотребляет довольно регулярно, поэтому всегда полезно точно знать, что вы пытаетесь сделать.

Поскольку вы упоминаете GDI, я предполагаю, что вы говорите о поддержании хороших четких краев при изменении их размера - поэтому что-то вроде символа в шрифте выглядит чистым и не пикселированным, когда вы изменяете его в 2 или 3 раза по сравнению с его оригинальным размером. Для такого рода вещей в прошлом я использовал технику, называемую увеличением с альфа-тестированием - вы можете прочитать технический документ здесь:

http://www.valvesoftware.com/publications/2007/SIGGRAPH2007_AlphaTestedMagnification.pdf

Когда я реализовал это, я использовал более одной плоскости, чтобы получить более качественные края для всех типов объектов, но это кратко освещает это к концу. Из всех подходов (которые я использовал) для поддержания качества при масштабировании векторных изображений это было самое простое и высочайшее качество. Это также имеет то преимущество, что его легко реализовать на аппаратном уровне. С точки зрения API, лучше всего использовать OpenGL или Direct3D - при этом для достижения цели требуется только билинейная фильтрация и сопоставление текстур, чтобы вы могли свернуть свои собственные (как в прошлом). Если вы всегда имеете дело с прямоугольниками и вам нужно только масштабировать, это довольно тривиально, и добавление поворота не добавляет такой сложности. Если вы делаете свой собственный, убедитесь, что уделяете особое внимание позиционированию субпикселей (как вы разрешаете позиции пикселей, которые не попадают на полный пиксель, так как это критично для качества и иногда упускается из виду.

Надеюсь, это поможет!

Есть (часто ошибочно названный, кстати, но это мертвая лошадь) много подходов сглаживания, которые можно использовать. В зависимости от того, что вы знаете об исходном сигнале и какова цель использования, разные вещи, скорее всего, дадут вам желаемый результат.

"Поддержка со стороны хост-системы", вероятно, наиболее целесообразна, если вывод осуществляется с помощью средств отображения ОС, поскольку они имеют наибольшую информацию о том, что делается с образом.

Я полагаю, это долгий способ спросить, что вы на самом деле пытаетесь сделать? Многие графические библиотеки предоставляют сглаживание в той или иной форме, в зависимости от того, будут ли они подходящими, во многом зависит от того, чего вы пытаетесь достичь.

Другие вопросы по тегам