2013-11-13 3 views
6

Скажем, у меня есть изображение, которое выглядит следующим образом:Как отрезать дополнительный фон в изображении?

enter image description here

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

enter image description here

Как вы можете видеть белый фон вырезан и теперь составляет около 2 пикселей от фактической обуви.

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

EDIT: фон не обязательно белый.

+0

Полезных слова, которые я искал бы - заливку, маска, ограничивающий параллелепипед, растениеводство – YXD

+0

я не знаю, если Minimagick будет это делать, но если вы можете перебрать пиксели, вы можете искать в первом ряду с небелые пиксели, резервное копирование в 2 строки и обрезка. Повторите для нижнего, левого и правого. – acfrancis

+0

acfrancis. А что, если фон не белый? Я думал о том, чтобы получить 4 самых больших пикселя и посмотреть, являются ли они одного цвета. –

ответ

3

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

  1. Найти цвет фона изображения. Один простой способ сделать это - просто взять цвет пикселя, например, в верхнем левом углу. Есть более привлекательные способы, которые вы могли бы использовать, но это будет работать для вашего примера изображения.

  2. Найти крайний левый и правый столбцы, содержащие пиксель какого-либо цвета, отличный от фона. Эти столбцы будут левыми и самыми правыми столбцами вашего обрезанного изображения.

  3. Найдите самые верхние и нижние строки, содержащие пиксель какого-либо цвета, кроме фона. Эти строки будут самыми верхними и нижними строками вашего обрезанного изображения.

  4. Обрезать изображение до размеров, указанных выше. Если вы хотите, вы можете отрегулировать размеры, чтобы оставить рамку любого размера вокруг изображения.

+0

Звучит здорово. Вы знаете, как я могу это сделать с помощью MiniMagick? –

+0

Я никогда не использовал MiniMagick, но, по-видимому, это интерфейс для инструмента ImageMagick [mogrify] (http://www.imagemagick.org/script/mogrify.php). Если это так, параметр [-trim] (http://www.imagemagick.org/script/command-line-options.php#trim) (т. Е. 'Image.trim' в MiniMagick) должен делать в основном то, что я описал выше. –

+0

О, дорогой. Ты просто так мне помог. Я не видел эту функцию обрезки. –

1

Использование s-т минимальные разрезы графа алгоритм из библиотеки обработки изображений стандартной

Смежные вопросы