Комментарии 28
Как понимаю, попробовать вживую это пока нельзя?
+9
Защищено ли оно патентами? Можно ли расчитывать на интеграцию этого алгоритма в open source продукты?
0
глянул начало рекламного ролика.
Чем-то похоже на
Чем-то похоже на
Известное кино
-1
В векторизации технических изображений есть еще одна проблема — идентификация прерывистых линий (разнообразных пунктиров) и выделение их топологии, как сплошных линий, а не отдельных сегментов.
+2
Для логического соединения прерывистых линий вполне можно использовать что-то роде Hough transform, я думаю.
0
И я бы сказал, что это главная проблема. Основное в рисунке — это движение (направление изгиба оси целого или части). Сама ось очень редко рисуется, но всегда подразумевается. Если отдельные линии начинают противоречить движению, это сильно портит рисунок. У хорошего художника движение может передаваться очень многими средствами (в т.ч. перпендикулярными линиями). Потеря его при растеризации сильно огрубляет и примитивизирует рисунок. И чем лучше рисунок, тем больше будет огрубление.
Но как найти ось, если она может быть построена из мнимых линий (например, даже негативным пространством)?
Но как найти ось, если она может быть построена из мнимых линий (например, даже негативным пространством)?
+1
Возникла идея нового формата с растровым фоном и векторным наложением. Вот это бы решило ту проблему.
0
Вы говорите о противоположной задаче — не выделении «скрытой» топологии, а о буквальной передаче штрихов и линий, со всеми их свойствами.
0
Не буквальной, а символичной. Но да, я говорю про восстановление штрихов.
Смотрите. Штрих — набор запачканных областей бумаги, причём чаще всего с разрывами (из-за текстуры бумаги). Нас не интересуют границы запачканных областей. Нас даже не всегда волнует точная форма штриха. Вот что нас волнует — это:
1) Отделение одного штриха от другого (например, в случае с гривой — у нас большая линия шеи, поверх которой лежат штрихи гривы).
2) Определение истинного направления штриха (за вычетом погрешностей рук, грифеля и бумаги).
3) Определение направления проведения штриха (т.к. это важно для штриховки — может быть две группы штрихов, одни в одном направлении, другие в другом, и их лучше не путать).
Собственно, оцифровка (векторизация) линейного рисунка (или штриховки) подразумевает, как мне кажется, как человеку, занимающемуся рисованием, восстановления движений карандаша. Точка начала, точка конца, скорость движения (условно — относительная жирность линии), сила нажима (базовая жирность линии).
Имея на руках эти данные можно восстанавливать рисунок, более того, восстановленный рисунок будет богаче, чем просто вектор. Применение разных кистей позволит подобрать (художнику) наиболее приближенное по стилю/духу к бумажному рисунку.
Смотрите. Штрих — набор запачканных областей бумаги, причём чаще всего с разрывами (из-за текстуры бумаги). Нас не интересуют границы запачканных областей. Нас даже не всегда волнует точная форма штриха. Вот что нас волнует — это:
1) Отделение одного штриха от другого (например, в случае с гривой — у нас большая линия шеи, поверх которой лежат штрихи гривы).
2) Определение истинного направления штриха (за вычетом погрешностей рук, грифеля и бумаги).
3) Определение направления проведения штриха (т.к. это важно для штриховки — может быть две группы штрихов, одни в одном направлении, другие в другом, и их лучше не путать).
Собственно, оцифровка (векторизация) линейного рисунка (или штриховки) подразумевает, как мне кажется, как человеку, занимающемуся рисованием, восстановления движений карандаша. Точка начала, точка конца, скорость движения (условно — относительная жирность линии), сила нажима (базовая жирность линии).
Имея на руках эти данные можно восстанавливать рисунок, более того, восстановленный рисунок будет богаче, чем просто вектор. Применение разных кистей позволит подобрать (художнику) наиболее приближенное по стилю/духу к бумажному рисунку.
0
В таком случае задача существенно шире и сложней. Ведь нужно учитывать и фактуру штриха. Малевать можно и карандашом и кистью и аэрографом и трафаретом…
Наверняка есть и другие нюансы.
Наверняка есть и другие нюансы.
0
Фактура штриха у мастера, безусловно, может играть роль. Но если мы говорим про векторизацию линейного рисунка, то в первом приближении «просто линия» сработает. Чем дальше рисунок от тонального, тем менее важна в нём фактура линии.
Пример хардкорного линейного рисунка:
![](https://habrastorage.org/r/w780q1/getpro/habr/comment_images/5f3/102/1df/5f31021dff6d6ef9ef4f088b3382202c.jpg)
С другой стороны, насколько я понимаю, задача в топике — не векторизация любого линейного рисунка (ага), а специально нарисованного с outlines. Там основное — это линия, а не её фактура. В этом случае критическим является именно соответствие движению в крупных формах.
Пример хардкорного линейного рисунка:
![](https://habrastorage.org/getpro/habr/comment_images/5f3/102/1df/5f31021dff6d6ef9ef4f088b3382202c.jpg)
С другой стороны, насколько я понимаю, задача в топике — не векторизация любого линейного рисунка (ага), а специально нарисованного с outlines. Там основное — это линия, а не её фактура. В этом случае критическим является именно соответствие движению в крупных формах.
0
Лошадь просто отличный пример малых, но существенных ошибок этого алгоритма.
1. Посмотрите на «подмордие». На рисунке — это тень. Там сильнее шртрихи. На векторе — странная штука снизу морды.
2. Шея на рисунке — ровная, с линиями гривы. На векторе — то ли булочка, то ли морщины.
3. Заднее копыто — потеряли овальность и форму. Выглядит как детская ошибка в рисунке.
4. Переднее копыто — потеряли несколько важных штрихов, считай, потеряли форму.
5. Самое левое копыто — криво взята форма, потеряли точную линию, которая показывала примыкание копыта к ноге.
На первой картинке (верхушка шляпы) видно, что вектор потерял правильное движение — вместо S-образной кривой там образовалась C-образная и не туда.
Т.е. в качестве подпорки — да, в качестве нормального инструмента — нет.
1. Посмотрите на «подмордие». На рисунке — это тень. Там сильнее шртрихи. На векторе — странная штука снизу морды.
2. Шея на рисунке — ровная, с линиями гривы. На векторе — то ли булочка, то ли морщины.
3. Заднее копыто — потеряли овальность и форму. Выглядит как детская ошибка в рисунке.
4. Переднее копыто — потеряли несколько важных штрихов, считай, потеряли форму.
5. Самое левое копыто — криво взята форма, потеряли точную линию, которая показывала примыкание копыта к ноге.
На первой картинке (верхушка шляпы) видно, что вектор потерял правильное движение — вместо S-образной кривой там образовалась C-образная и не туда.
Т.е. в качестве подпорки — да, в качестве нормального инструмента — нет.
0
Постоянно требуется перегонять растровые картинки в вектор. Юзаю Vector Magic, очень нравится. Встроенный трассировщик корела и рядом не стоял.
0
НЛО прилетело и опубликовало эту надпись здесь
Поясните, пожалуйста, что Вы имеете под «распознаванием градиентов».
0
НЛО прилетело и опубликовало эту надпись здесь
Никогда не сталкивался с задачей векторизации, просто не нужно было, поэтому прошу объяснить, что такое «распознавание градиента». С моего дивана, градиент или есть, или его нет. Если есть, то используем какой-то из способов его обнаружения (gradient vector flow, анизотропную диффузию, змейки...) или вообще адаптивную бинаризацию, если нет, то используем скелетонизацию. Линия разбита — опять же змейки, главное, коэффициент подобрать. Не нравится скелет — спрямляем-сглаживаем его, методы тоже есть.
0
Алгоритмы векторизации вплотную подходят к границам возможностей математического/геометрического подхода. Читая комментарии выше, замечаю, что с точки зрения компьютера рисунок векторизуется вполне точно, но с точки зрения художника всё не совсем хорошо. Был в моей практике другой случай, когда нужно было оцифровать простой растительный рисунок, но, вот беда, низкого разрешения, для программы банально слишком мало информации, приходилось угадывать и от себя дорисовывать, что там было на самом деле. Очевидно, чтобы достичь лучшего результата не обойтись без интеллекта — натурального или искусственного.
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Михаил Бессмельцев с коллегой разработал новые алгоритмы для векторизации графики