#opencv #image-processing #computer-vision #image-segmentation
#opencv #обработка изображений #компьютерное зрение #изображение-сегментация
Вопрос:
У меня есть два изображения, сделанные с немного разных позиций. После выполнения сегментации изображений на них я хотел бы сопоставить маски сегментации двух изображений, чтобы я мог идентифицировать одни и те же объекты в обоих. В большинстве случаев размеры или ориентации объектов меняются:
Иногда объекты, которые отображаются на одном изображении, не отображаются на другом, например:
Я пробовал наивно сопоставлять отдельные объекты, используя их положения и размеры центроида, но это очень подвержено ошибкам. Каков наилучший способ сделать это, используя, например, OpenCV?
Комментарии:
1. основная проблема заключается в отслеживании объектов с помощью видео. есть простые решения с ограниченным успехом, и есть продвинутые решения. поскольку кажется, что вы комментируете, на самом деле ваша задача — определить идентификатор объекта. посмотрите в CVAT для аннотаций к видео: github.com/openvinotoolkit/cvat
Ответ №1:
Вы могли бы попробовать подход, подобный RANSAC. Преобразование не сильно искажено, поэтому вы можете просто попробовать преобразование подобия (перевод поворот масштабирование). Для этого требуется только две соответствующие пары точек. Из двух совпадающих пар вы вычисляете преобразование, преобразуете другие точки и смотрите, насколько хорошо они совпадают.
Поскольку количество ваших точек невелико, исчерпывающий поиск со всеми возможными парами (N (N-1) / 2 из них) не является чрезмерным. (И кажется, что вы можете сортировать точки слева направо, не вводя инверсий, что уменьшит количество возможностей.)
Комментарии:
1. Использование двух сопоставленных пар для вычисления преобразования — хорошая идея, но мне нужно было бы каким-то образом найти две пары объектов, сопоставленных с высокой достоверностью, не глядя на изображения, поскольку я надеюсь сделать это полностью автоматически.
2. @rferdinand: Я не уверен, что вы поняли мой ответ. Этот метод решает эту проблему.
3. О, теперь я понимаю, что вы имеете в виду. Мне пришлось бы попробовать все комбинации пар точек и посмотреть, какая из них обеспечивает наилучшее преобразование для всех остальных точек. Для более сложных изображений требуется немного времени, но, безусловно, стоит попробовать. Спасибо!
4. @rferdinand: вы можете найти некоторые хитрости, чтобы избежать исчерпывающего сравнения. (Я упомянул один.)
5. Это немного сложно, так как иногда инверсии действительно происходят из-за параллакса, но я могу пропустить пары, где расхождение в размерах слишком велико.