Отслеживание сгустков в Aforge - PullRequest
0 голосов
/ 23 августа 2010

Я посмотрел и посмотрел.Кто-нибудь знает, как отследить капли от Aforge?Я знаю, что они не реализовали его, но мне действительно нужно было бы использовать Aforge из-за остального кода, который я использую.Я видел ссылку на фильтрацию Калмана, но мне нужна реализация, а не теории.

tnx, v.

1 Ответ

2 голосов
/ 23 августа 2010

AForge.NET BlobCounter обеспечит поиск BLOB-объектов, хотя это довольно просто и не поддерживает «сломанные» BLOB-объекты.Если вы хотите реализовать простое отслеживание BLOB-объектов, вы можете рассмотреть несколько вещей:

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

  2. Для фактического отслеживанияУ вас есть несколько подходов.Фильтрация Калмана может дать вам очень хорошую точность (субпиксель), поскольку она объединяет информацию из нескольких кадров.Если вам не нужен такой уровень точности, вы можете рассмотреть очень простой алгоритм, такой как всегда выбор достаточно большого большого двоичного объекта, который был ближе всего к последнему местоположению.Это работает, если объект движется не очень быстро, и рядом с отслеживаемым объектом не появляются другие капли.Если вам нужна более высокая производительность анализа, вы также можете оценить скорость по последним двум кадрам и использовать ее для ограничения области, которую вы должны учитывать при поиске большого двоичного объекта.

  3. Если вам нужно отследить высокоскоростной объект, это становится немного сложнее.Вот случай, когда вы можете попытаться объединить поиск BLOB-объектов с сопоставлением с шаблоном.Вы можете создать шаблон на основе поиска BLOB-объектов и сопоставить его с последующими BLOB-объектами, чтобы оценить их на основе их шаблона, а не только их размера / местоположения.Это требует, чтобы капля выглядела достаточно согласованной во времени, что означает, что физическая форма модели и условия освещения должны оставаться неизменными.


ОБНОВЛЕНИЕ в ответ на ваш вопрос:

У вас есть только несколько минут этим утром, поэтому никакого реального кода нет, но основная идея такова:

  1. Рассматривайте только двоичные объекты, размер которых больше настраиваемого (вам, вероятно, придется определитьэто опытным путем.)

  2. Сохраните информацию о последних двух найденных местоположениях BLOB-объектов и времени, в которое они были выбраны.Назовем эти векторы в R2, p1 и p0, в моменты времени t1 и t0.

  3. Если предположить, что скорость изменяется медленно, то предварительная оценка в момент t2 нового местоположения p2= p1 + (t2-t1) * (p1-p0) / (t1-t0).Это может или не может быть хорошим предположением, поэтому вы можете проверить это, захватив ваш объект под требуемым диапазоном движений.

  4. Вы можете по желанию использовать эту оценку, чтобы ограничить вашобласть поиска BLOB-объектов для подизображения с центром в предполагаемом местоположении.После того, как вы выполните поиск блоба, возьмите блоб, ближайший к предполагаемому местоположению, в качестве нового измерения местоположения.

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

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

...