Подтвердить что ты не робот

Алгоритм создания полутоновых изображений?

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

4b9b3361

Ответ 1

  • Отфильтруйте до разрешения, которое вы хотите, чтобы "точки" были разделены.
  • Получите среднюю интенсивность пиксельной группы в этой области.
  • Нарисуйте точку так, чтобы поверхность площадь точки равна процентов от белого до черного средняя интенсивность.

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

Если вы делаете это, потому что вам нравится эффект, это круто. Но если вы просто хотите сбежать до черно-белого изображения, подумайте об использовании "Floyd-Steinberg". Он обеспечивает высокое качество результатов и распространяет ошибку на изображении. http://en.wikipedia.org/wiki/Floyd-Steinberg_dithering

Ответ 2

Полутонация очень эффективна.

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

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

Интересной частью является построение экранов (пороговых массивов). Существует множество вариаций - кластерная точка (AM), стохастическая (FM), множество вариаций и гибридов, включая синий шум и зеленый шум (AM/FM). И обычно вам нужен другой экран для каждого цветного канала. Традиционные кластерные точечные экраны помещают свои точки в прямоугольные сетки, которые могут быть описаны по их частоте (низкая частота = большие точки) и углу (обычно 15 ° для голубого, 75 ° для Magenta, 90 ° для желтого и 45 ° для черных).

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

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

Ответ 3

Существует много вариантов реализации алгоритмов с открытым исходным кодом для создания полутоновых изображений. Вы можете посмотреть исходные коды. Ниже представлены несколько реализаций, разработанных на Java, с использованием Marvin Image Processing Framework.

входное изображение:
введите описание изображения здесь

Диффузия ошибок (источник):
введите описание изображения здесь

Rylanders (источник):
введите описание изображения здесь

Сглаживание (источник):
введите описание изображения здесь

Круги (источник):
введите описание изображения здесь

Ответ 4

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

Это может дать вам двухлинейный алгоритм сглаживания. Это не будет выглядеть так же хорошо, как Флойд-Штейнберг (потому что тот отслеживает ошибки) или столь же артистичен, как "плитка", а затем кладет диски в каждую плитку, чтобы фракция черного = средняя темнота в исходной плитки ", но на практике он работает довольно хорошо.