Как предназначенный для вырезания фильтр фотошопа реализован?

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

Чтобы обеспечить запуск каждого потока, поток по умолчанию отбросит GIL через 5 мс (Python 3), если он не сделал этого раньше из-за ожидания ввода-вывода .

Вы можете изменить этот интервал с помощью sys.setswitchinterval().

Threading - это простой метод параллелизма. Более эффективный метод параллелизма можно найти в asyncio , который предлагает однопоточный параллелизм с использованием сопрограмм.

8
задан Martin Beckett 26 October 2008 в 04:57
поделиться

8 ответов

Граничным обнаружением обычно является Sobel или фильтр Canny затем, края объединены с цепочечным кодом.
Посмотрите на что-то как библиотека OpenCV для деталей

6
ответ дан 5 December 2019 в 14:07
поделиться

Вы видели это сообщение. Это объясняет, как получить то же использование результата ImageMagic, и IM является открытым исходным кодом.

3
ответ дан 5 December 2019 в 14:07
поделиться

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

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

3
ответ дан 5 December 2019 в 14:07
поделиться

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

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

Это могло бы помочь

0
ответ дан 5 December 2019 в 14:07
поделиться

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

0
ответ дан 5 December 2019 в 14:07
поделиться

Получил простое решение, которое теоретически произведет что-то подобное тому фильтру. Так или иначе подобный, к какой Ismael C предложенный.

Граничная Простота управляет размером окна. Окно Maybe должно быть взвешено.

Но в отличие от него происходит для обычных оконных фильтров, этот взял бы только часть фиксированного размера случайных пикселей из этого окна. Размером части управляют с параметром Точности.

Выберите пиксельный цвет к медиане образца.

Учитывая у нас есть некоторый алгоритм постеризации, он применяется впоследствии.

Здесь мы идем!

Сообщите о результатах при реализации его.

PS. Я действительно сомневаюсь, что сегментация используется вообще.

0
ответ дан 5 December 2019 в 14:07
поделиться

Я предполагаю, что это - вероятно, некоторая пороговая обработка, граничное обнаружение (Sobel/Canny/Roberts/whatever) и постеризация.

0
ответ дан 5 December 2019 в 14:07
поделиться

Поработав с ним, я обнаружил, что:

  • он детерминирован
  • он не выполняет никакой постеризации на основе пикселей для достижения окончательного эффекта
  • он, вероятно, не использовать любой вид обнаружения краев на основе пикселей, он работает скорее с областями, чем с краями.
  • он вычисляет формы замкнутых многоугольников для рисования (некоторые края многоугольника могут перекрываться краями изображения).
  • когда края полигонов многоугольники известны, тогда цвет каждой области, заключенной в края (не обязательно принадлежащей одному многоугольнику), окрашен в средний цвет пикселей исходного изображения, которое покрывает область.
  • край многоугольника может пересекаться сам с собой. Особенно заметен из-за высокой простоты краев.
  • по мере того, как «простота линии» уменьшается, количество краев полигона увеличивается, но также увеличивается количество полигонов.
  • точность краев влияет на количество краев линейного полигона, но не влияет на количество полигонов
  • высокая четкость краев (= 3) приводит к тому, что один многоугольник имеет очень длинные и очень короткие края одновременно, низкая точность (= 1) приводит к тому, что у одного многоугольника все края примерно одинаковой длины
  • высокая простота краев и низкая точность воспроизведения краев, кажется, предпочитает многоугольники, закрепленные по краям изображения, даже ценой здравомыслия.

В целом это похоже на упрощенную версию алгоритма Live Trace от Adobe Illustrator, который использует многоугольники вместо кривых.

... или, может быть, нет.

0
ответ дан 5 December 2019 в 14:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: