Преобразовать рисование линий из растра в вектор ** ЛИНИИ **


16

Вот уже такие вопросы, как:

... и другие.

У меня есть черно-белое изображение PNG, содержит рисунок, похожий на лабиринт, например, он содержит только линии , а не области.

Нужно конвертировать его в (любой) векторный формат, но как ЛИНИИ . Каждая программа, которую я пробовал, например VectorMagic, potrace и т. Д., Преобразует линии в области с закрытыми путями.

Небольшая часть исходного изображения PNG - увеличено: введите описание изображения здесь

Результат трассировки: введите описание изображения здесь

Как вы можете видеть, «линия» прослеживается с обеих сторон, как любая другая форма, подобная области.

Ищите способ, как отследить линии в реальные линии (PATHS) , лучше всего с соответствующей шириной линии. (но было бы достаточно любой линии с).

Причина позади: нужно работать с прослеживаемыми линиями и узлами, например, преобразовать некоторые узлы в более дешевые и т.п. Не возможно (легко) с формами.

Любая идея:

  • как получить векторизованные линии из любой программы трассировки.
  • какой инструмент может это сделать? (любая ОС - может использовать Windows, OS X, Linux ..)

Ответы:


15

Трассировка осевой линии

Существует бесплатный инструмент с открытым исходным кодом AutoTrace, который способен выполнять осевую трассировку штриховой графики.

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

Запустите AutoTrace по крайней мере со следующими параметрами:

autotrace -centerline -color-count 2 -output-file output.svg -output-format SVG input.png 

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

Затем мы можем точно настроить ходы и добавить желаемую силу удара.

Мы также можем установить графический интерфейс Frontline для AutoTrace, если мы не знакомы с командной строкой.

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

Существует много дополнительных параметров для AutoTrace, которые можно найти на странице справки приложения или вызвав ее autotrace -help.

Чтобы получить прямые линии, а не сплайны, мы можем, например, использовать следующие параметры:

  • -line-threshold [real]:
    Если сплайн не отклоняется от прямой линии, определенной его конечными точками, более чем на указанное количество пикселей, то следует рассматривать его как прямую линию (по умолчанию: 1).

  • - line-reversion-threshold [real]:
    Если сплайн находится ближе к прямой линии, взвешенной по квадрату длины кривой, оставьте его прямой, даже если это список с кривыми; по умолчанию 0,01.


1
+1 Знаете ли вы, если есть возможность, чтобы трассировщик делал только прямые сегменты с автотрассировкой?
Джуджаа

@joojaa: см. изменения для вариантов.
Таккат

Я хотел бы получить автотрассу для сборки ... Я хотел бы использовать это
slashdottir

1
@slashdottir: какую систему вы используете? Сайт проекта переехал на Github для недавнего развития и для отчетов об ошибках. Я отредактировал ответ, чтобы включить ссылку.
Таккат

О, великолепно! Я использую OSX. Большое спасибо за ссылку!
slashdottir

10

Честно говоря ... возьмите инструмент Перо и вручную проследить пути. Это приведет к лучшим результатам.

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


изображение действительно сложное с множеством строк. Также есть больше изображений - просто слишком много работы - в поисках альтернативы ...;)
jm666

также я надеюсь, что «инструмент» проведет некоторую оптимизацию, например, создаст всегда самые длинные пути и так далее ... ручная работа не всегда самая лучшая;)
jm666

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

2
@ Scott, хотя я в целом согласен с вашим мнением в этом конкретном случае, это может сработать.
Джуджаа

5

Попробуйте использовать Interpolate Paths после вашей трассировки, как показано здесь:

Средний ход от заливки


ВАУ. Это выглядит ОЧЕНЬ многообещающе. Спасибо! +1.
jm666

@ jm666 Конечно, этот метод не очень хорошо автоматизирует, если вы не имеете дело с непрерывными путями.
Джуджаа

5

Illustrator может выполнять трассировку центральной линии так же, как и автоматическую трассировку . Это не супер полезно для большинства вещей, но в этом случае изображение очень синтетическое, и это может работать.

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

Сделай это:

  1. В настройках трассировки отключите заливки и разрешите мазки.

  2. Объект → Развернуть

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

Изображение 1 : Объект после трассировки и расширения.

  1. Для дальнейшего улучшения результатов от любых ошибок трассировки: Object → Path → Simplify , проверьте прямые края.

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

Изображение 2 : после упрощения

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

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

Изображение 3 : Что квантование может сделать с результатом.

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

PPS: Ваши углы перекрываются, это вызывает некоторую скорбь по автоматическим трассировщикам. Вы можете обнаружить и исправить их с помощью нескольких операторов морфологии, скажем, ImageMagick, которые должны сделать трассировщики НАМНОГО счастливее.


Тоже приятно. Теперь используется автоматическое отслеживание из-за простого использования командной строки - для многих изображений. Растровое изображение выше - это небольшая часть большего изображения (увеличение 1300%) :), поэтому оно выглядит ухудшенным. +1, спасибо.
jm666

@ jm666 конечно, вы можете также использовать Illustrator из cmd, если хотите, но для этого нужно немного поработать.
Джуджаа

Я попытался с помощью трассировки изображений Illustrator и образца использовать только штрихи. Я не смог получить никаких полезных результатов. По общему признанию я не тратил много времени на это, и образец не идеален для отслеживания. Но я нахожу, что в общем случае настройка трассировки AI только на штрихи означает, что вы получаете только 30-60% от фактически прорисованного рисунка, если оригинал не является достаточно твердым и резким до трассировки.
Скотт

@ Скотт Я сжал изображение обратно к исходному (ish) размеру и отрегулировал параметр ширины линии, чтобы он просто работал. Когда вы отслеживаете штрихи различной ширины, вам может потребоваться сделать это за 2 или 3 отдельных прохода.
Джуджаа


2

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

Этот метод называется «векторизация в одно касание» и работает хорошо.

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.