Извлечение особенностей изображения - PullRequest
3 голосов
/ 21 февраля 2012

У меня есть визуальный маркер типа this one и алгоритм обнаружения BLOB-объектов в Java. Как извлечь области изображения, чтобы можно было запускать алгоритм обнаружения BLOB-объектов для каждого из них в отдельности, чтобы он может обнаружить 1, 1, 3 капли соответственно.

Заранее большое спасибо!

Ответы [ 2 ]

2 голосов
/ 22 февраля 2012

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

Поскольку ваша цель - обнаружить действительные снимки d-touch, вы можете организовать анализ по-другому. Например, с Mathematica:

enter image description here

Определение, охватывает ли черная область хотя бы 3 белые области, заполняя отверстия на изображении и подсчитывая количество подключенных компонентов:

Max@MorphologicalComponents[
        FillingTransform[DeleteBorderComponents@img]] >= 3

enter image description here

Определение того, содержит ли половина этих белых областей одну или несколько черных областей, может быть выполнено путем подсчета отверстий внутри каждой белой области:

comp = ComponentMeasurements[DeleteBorderComponents@img, "Holes"]; 
2*Count[comp, _ -> n_ /; n > 0] >= Length@comp

enter image description here

Определение наличия дополнительных уровней вложенности может быть достигнуто путем запроса количества вложенных компонентов:

Count[
  ComponentMeasurements[DeleteBorderComponents@img, "EnclosingComponentCount"],
  _ -> n_ /; n > 0] == 0

enter image description here

Некоторые из вышеперечисленных операций могут быть сложными для реализации в Java. Я передам это - сделано с забавной частью!

0 голосов
/ 21 февраля 2012

Не уверен, что именно вам нужно сделать. Сам анализ BLOB-объектов должен выделить «регионы». Классификация контрастных темных объектов или «сгустков» в целевом изображении должна дать вам любые целевые области, которые вам нужны. Например, объекты могут быть классифицированы на основе некоторой комбинации размера, формы, цвета, положения, эксцентриситета, большой / вспомогательной оси, дочерних отношений с родительским BLOB-объектом и т. Д., А затем выбираться в зависимости от того, какие функции вас интересуют.

Возможно, вам нужен более существенный алгоритм анализа больших двоичных объектов, который возвращает более сложные данные больших двоичных объектов.

...