2016-09-08 8 views
0

У меня есть много изображений с оттенками серого, которые содержат несколько прямоугольников. Некоторые из них перекрываются, а некоторые проходят через границу изображения. Пример изображения может выглядеть следующим образом:Python: уменьшите прямоугольники на изображениях до их границы

enter image description here

Теперь я должен уменьшить прямоугольники на их границе. Моя идея состояла в том, чтобы сделать все не белые пиксели, которые меньше N (например, 3) пикселя от границы или белый пиксель (с использованием расстояния Manhatten) белый. Вывод должен выглядеть следующим образом (извините за разновеликих границ):

enter image description here

Это не очень сложно реализовать это. К сожалению, реализация должна быть быстрой, потому что вход может содержать чрезвычайно много изображений (например, 100 000), и пользователь должен ждать, пока этот шаг не будет завершен.

Я думал об использовании fromimage и делал тогда все с numpy, но я не нашел подходящего решения.

Возможно, у кого-то есть идея или намек на то, как эта проблема может быть решена очень эффективно?

+0

Как быстро ваша текущая реализация? :) –

+0

Я не реализовал его, потому что я бы сделал это с помощью циклов (аналогично https://stackoverflow.com/questions/39159345/python-adding-noise-to-images-is-very-slow). Но это невероятно медленно. Наверное, еще хуже с вложенными петлями. В опубликованной ссылке мне потребовалось несколько секунд для ~ 1 000 изображений. Именно по этой причине я надеюсь, что для этого есть хороший трюк/алгоритм. –

ответ