Как выполнить сегментацию водосбора и анализ блоба на одном изображении?

Я планирую написать программу, использующую Open-CV, для подсчета количества объектов на изображении, подобном приведенному ниже.

Пример изображения

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

Что мне не ясно, так это то, как применить эти две техники к изображению, которое может иметь или не иметь перекрывающиеся гранулы. При условии, что на изображении есть хотя бы один случай соприкосновения шариков друг с другом, должен ли я выполнять оба метода? Если да, то в каком порядке? Или я должен выполнять Watershed только потому, что где-то будет перекрытие, а выполнение обнаружения BLOB-объектов приведет к ошибочному выводу из-за объединенных BLOB-объектов? Заранее спасибо.


person Tru    schedule 07.05.2012    source источник
comment
Вы пробовали более простую технику? Проверьте как обнаруживать круги, ответы на этот вопрос, ограничение демонстрационная техника коробки и обнаружение точечной цели.   -  person karlphillip    schedule 07.05.2012
comment
Спасибо. Эти техники выглядят очень интересно. Посмотрю.   -  person Tru    schedule 12.05.2012
comment
Просто любопытно; Будет ли работать какой-либо метод, использующий HoughCircles, в случае, когда гранулы становятся менее круглыми или совершенно бесформенными?   -  person Tru    schedule 29.05.2012


Ответы (1)


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

Если алгоритм Watershed обрабатывает изображения с перекрывающимися гранулами, обнаружение Blob, вероятно, не даст никаких преимуществ (поскольку оно будет объединять перекрывающиеся объекты).

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

Вот пример использования Matlab, который выполняет сегментацию ячеек с использованием Watershed:

http://blogs.mathworks.com/steve/2006/06/02/cell-segmentation/

Если вам нужно избежать подсчета объектов, которые видны только частично, вы можете использовать диаграмму Вороного и удалить объекты, которые соединяются с ребрами:

http://pythonvision.org/basic-tutorial

person gavinb    schedule 11.05.2012
comment
Большое спасибо. Извините за ошибку, я имел в виду как минимум один случай касания граней друг друга... - person Tru; 12.05.2012