Границы изображения из спрайт-листа - PullRequest
0 голосов
/ 08 июня 2018

У меня есть спрайт-лист, содержащий набор значков, как показано здесь:

image of symbols

Я хотел бы получить bounding box (с точностью до пиксела) всех значков внутри него, в некоторых случаях, таких как список, сетка, следует рассматривать только как одни значки.Любые идеи приветствуются.

Ответы [ 2 ]

0 голосов
/ 12 июня 2018

В общем, это невозможно: только у людей достаточно контекста, чтобы определить, какие из непересекающихся частей принадлежат друг другу.Вы можете приблизить его, используя различные способы, но это безнадежное дело - и ИМХО совершенно ненужно.Представьте себе, что вы пишете тест для этой функции - это невозможно, для этого нужен человек в цикле, поскольку результаты для любого конкретного листа значков не обобщаются.Знание того, что алгоритм работает для некоторого листа, ничего не говорит вам о том, будет ли он работать для другого листа, о котором вы априори ничего не знаете.

Было бы проще вручную раскрасить каждый спрайт, чтобы получить другой цветчем у соседей.Тогда жадный алгоритм мог бы легко найти ограничивающие рамки, не прибегая к чему-либо.

0 голосов
/ 08 июня 2018

Я думаю, что основная проблема в вашей проблеме заключается в том, что некоторые значки содержат непересекающиеся части.Если бы все значки были только в одной части, вы могли бы просто найти «подключенные компоненты» (группы белых пикселей) в вашем изображении и изолировать их.

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

Если вам нужны какие-либо разъяснения, пожалуйста, дайте мне знать!

...