Computer Vision: создание трехмерной модели капли на поверхности - PullRequest
0 голосов
/ 11 марта 2019

Рассмотрим каплю жидкости на плоской горизонтальной поверхности. Мне нужно сгенерировать 3D-модель капли, снимая изображения под разными углами.

Предположения:

  1. Капля симметрична относительно вертикальной оси.

  2. Поверхность идеально ровная и гладкая.

Запросы:

  1. Сколько таких изображений мне нужно для обработки 3D-модели?

  2. Какую ориентацию камеры выбрать?

  3. Как я могу это реализовать?

Редактировать: это изображение, полученное с помощью плагина DropSnake, который используется для измерения угла контакта капель. Тем не менее, мне сказали, что на калибровку уходит много времени и усилий, иначе могут появиться ошибки. Большая часть времени уходит на достижение идеального выравнивания, а ошибки связаны с интерференцией теней и изгибанием света каплей.

enter image description here

Мой подход: мы можем расположить несколько камер для съемки множества фотографий капель под любым углом без необходимости калибровки. Затем извлеките информацию об угле контакта, создав, при необходимости, трехмерную модель.

Точность, обеспечиваемая DropSnake, составляет 0,001 градуса, поэтому даже 0,01 - это нормально.

1 Ответ

1 голос
/ 14 марта 2019

Боюсь, что у краев капли нет функций, которые можно было бы зафиксировать, поэтому о стереоскопии не может быть и речи.Это означает, что вы должны использовать только одно изображение, когда камера направлена ​​перпендикулярно к капле, как это:

image 3D">

Вы также должны поставить маркеры на пол или поставитькамера на известном расстоянии от капли, чтобы облегчить это.Так что теперь, что делать:

  1. извлекать 2D-пиксели края капли

    точно так же, как на вашем изображении красные или синие точки.Так что просто извлеките все граничные точки и в идеале отсортируйте их по углу, чтобы они образовывали контур ломаной линии ... Если изображение с камеры перпендикулярно нашей капле, то контур будет параллелен фокальной плоскости камеры, поэтому все его точки находятся на одном и том же перпендикулярном расстоянии.... Это важно для преобразования в 3D только из одного изображения ...

  2. преобразовать контур в 3D относительно камеры

    , то естьпростая математика, так что если вы посмотрите на изображение выше слева, это обзор сверху, а справа - захваченное изображение.Давайте рассмотрим эту двумерную пурпурную точку (x,y) на захваченном изображении.Предположим, что 3D-система координат, где точка (0,0,0) - середина фокальной плоскости (центр изображения), Z - расстояние от фокальной точки, а направления x,y соответствуют изображению.

    Итак, 2D (x,y) мыможно преобразовать в 3D, используя сходство треугольников:

    (x - xs/2) / focal_length = X/distance
    (y - ys/2) / focal_length = Y/distance
    

    , поэтому положение 3D будет:

    X = (x - xs/2) * distance / focal_length
    Y = (y - ys/2) * distance / focal_length
    Z =              distance
    
  3. создать сетку

    Поскольку капля симметрична, используйте только половину контура и просто вращайте трехмерный контур вокруг центральной оси капли и переупорядочивайте полученные точки в некоторой топологии сетки, образуя трехмерную поверхность капли.Или просто вычислите перпендикулярное расстояние каждой точки контура до оси и используйте его в качестве радиуса для параметрического уравнения окружности и вычислите сетку как набор окружностей по одному для каждого y среза

Точность равнаопределяется камерой FOV, разрешением и расстоянием до капли.Поэтому, если этого недостаточно, вы можете:

  • поместить камеру ближе к капле
  • использовать большее разрешение камеры (или интерполировать его)
  • использовать субпиксельточность при извлечении контура
...