лучший алгоритм, чтобы найти серию капель Aike - PullRequest
0 голосов
/ 12 мая 2011

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

Я использую c # и opencv.

Ответы [ 2 ]

5 голосов
/ 12 мая 2011

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

Когда минимизирует этой ошибки, то у вас есть строка.

Чтобы вычислить ошибку, вы также можете сначала отфильтровать координаты BLOB-объектов по размеру BLOB-объектов (только примерно одинакового размера)

1 голос
/ 12 мая 2011

Как вы упомянули, если только один и тот же размер и расположение на одной линии (приблизительно) являются критериями, то вот еще один способ сделать это.

  1. Найти подключенные компоненты (думаю, вымог бы свободно вызывать это обнаружение BLOB-объектов, не уверен) с помощью функции OpenCV cvFindContours (). Эта ссылка предоставляет рабочий код для этого.

  2. Вычисляет Граничный прямоугольник каждого контура, когда вы шагаете по списку всех существующих контуров.на рисунке.

  3. Ограничивающий прямоугольник - это, по сути, CvRect структура, содержащая x-позицию, y-позицию, ширину и высоту наименьшего прямоугольника, который окружаетвыбранный контур / особенность.typedef struct CvRect { int x; int y; int width; int height; } CvRect;

  4. Естественно, для вашего изображения я бы сравнил y-контуры, выбрав те, которые близки.

  5. Дополнительно ширинаи поля высоты в структуре скажут вам о сходстве по размеру.

Примечание: одна и та же область не всегда может указывать на один и тот же размер.например.a * b = ab, также (a / 4) * (4b) = ab, но вряд ли того же размера.Примеры кода на C, но я думаю, что понять это на C # не будет слишком сложно.Надеюсь, что это работает для вас!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...