Поток не всегда имеет ввод / вывод. Можно было бы, чтобы один поток занимался обработкой чисел, другой обрабатывал ввод-вывод. Поток сокращения числа с вашим предложением никогда не будет отбрасывать GIL, чтобы другой поток мог обрабатывать ввод / вывод.
Чтобы обеспечить запуск каждого потока, поток по умолчанию отбросит GIL через 5 мс (Python 3), если он не сделал этого раньше из-за ожидания ввода-вывода .
Вы можете изменить этот интервал с помощью sys.setswitchinterval()
.
Threading - это простой метод параллелизма. Более эффективный метод параллелизма можно найти в asyncio
, который предлагает однопоточный параллелизм с использованием сопрограмм.
Граничным обнаружением обычно является Sobel или фильтр Canny затем, края объединены с цепочечным кодом.
Посмотрите на что-то как библиотека OpenCV для деталей
Вы видели это сообщение. Это объясняет, как получить то же использование результата ImageMagic, и IM является открытым исходным кодом.
Я не уверен, что это могла быть некоторая заливка ячейки, но это также похоже на средний фильтр с очень большим размером ядра или который несколько раз применялся.
Граничная простота/точность могла бы быть опциями, какую справку решают, взять ли в учетной записи смежный пиксель (или тот, который падает в ядре) на основе различия цвета с текущим пикселем.
Количество уровней, кажется, напоминает, как заливка ячейки сделана, и это - то, как я реализовал бы ту часть в этом случае: Вы просто берете эту гистограмму изображения и делите его на "Нет. из уровней" сумма разделов затем вычисляет среднее число для каждого раздела. Каждый раскрашивает гистограмму, будет затем использовать то среднее число в земельном участке их исходного цвета.
Другие два параметра требуют, чтобы еще некоторые взгляды, но 'Граничная простота', казалось, взорвали количество сегментов, формы являются наращиванием прочь. Или скорее: количество улучшений относилось к некоторым сырым Алгоритмам Сегментации Изображения. Ползунок точности, кажется, делает что-то подобное; это, вероятно, управляет некоторым порогом для того, когда улучшения должны произойти.
Возможно, не точно, что Вы ищете, но если Вам нравится знать, как фильтры работают, Вы могли проверить исходный код GIMP. Я не могу сказать, имеет ли GIMP эквивалент очертания, фильтруют Вас упомянутый, но это стоит смотреть, если Вы действительно интересуетесь этим полем.
Получил простое решение, которое теоретически произведет что-то подобное тому фильтру. Так или иначе подобный, к какой Ismael C предложенный.
Граничная Простота управляет размером окна. Окно Maybe должно быть взвешено.
Но в отличие от него происходит для обычных оконных фильтров, этот взял бы только часть фиксированного размера случайных пикселей из этого окна. Размером части управляют с параметром Точности.
Выберите пиксельный цвет к медиане образца.
Учитывая у нас есть некоторый алгоритм постеризации, он применяется впоследствии.
Здесь мы идем!
Сообщите о результатах при реализации его.
PS. Я действительно сомневаюсь, что сегментация используется вообще.
Я предполагаю, что это - вероятно, некоторая пороговая обработка, граничное обнаружение (Sobel/Canny/Roberts/whatever) и постеризация.
Поработав с ним, я обнаружил, что:
В целом это похоже на упрощенную версию алгоритма Live Trace от Adobe Illustrator, который использует многоугольники вместо кривых.
... или, может быть, нет.