2014-02-14 4 views
3

Проблема в том, что мне нужна упрощенная версия алгоритма, который может вычислять центроид нескольких белых контуров в двоичном изображении. Например, если существует только один белый контур, координаты Xc и Yc от центра контура вычисляются с использованием формулы:Обработка изображений -Алгоритм вычисления центроидов пробела в двоичном изображении

Formula

, где М представляет собой сумму интенсивного M_i, m_i представляет собой пиксель интенсивное значение, x_i и y_i - местоположение пикселя на изображении, n - общее количество пикселей.

Может ли кто-нибудь предложить что-то подобное работе с несколькими контурами или как игнорировать других при вычислении одного из них с использованием той же формулы?

+2

Будьте осторожны, ваша нормализация должна быть над суммой (m_i), а не над M. – Geoff

+1

Я нашел эту формулу в книге обработки изображений. Я не заметил, пока вы не сказали, что это неправильно. :)) – user3029227

+0

Не могли бы вы рассказать нам немного больше о своей проблеме? В зависимости от вашей среды могут быть некоторые библиотеки/упрощения, которые могут быть применимы. Может быть, шоу и образ, и какой у вас код? – Geoff

ответ

2

Сначала используйте некоторый алгоритм connected component labeling, чтобы отделить различные капли. Это присвоит уникальный идентификатор каждому региону. Затем вы можете вычислить центроид за капли.

+1

Не было бы правильно, если я это сделаю - после разделения разных капель я установил интенсивность до нуля капли, которые я не использую в данный момент? Например, есть blobls со значениями: 1 2 3 4. Теперь мне нужно вычислить центроид первого blob, поэтому другие blobs 2 3 4, получает 0, поэтому я могу использовать формулу выше. – user3029227

+1

@user да, но вы получаете субоптимальное время выполнения таким образом. Вы можете обрабатывать подключенный компонент в O (размер, если CC), а не O (размер изображения). –

+0

@sansuiso. Есть случай, когда какой-то контур может иметь шум между ними, а подключенный компонент не сможет обнаружить его целиком. –

1

Вы можете использовать алгоритм k means с переменными значениями k, которые имеют минимальную квадратичную ошибку. Поиск подключенных компонентов может помочь вам получить максимальные капли в изображении, но восприимчив к шуму, но это верхняя граница для всех присутствующих контуров. После вычисления кластеров с использованием k означает, что тривиально вычислять центроиды контуров.

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