Предположим, что я хочу найти трехмерную позицию чашки с ее вращением, с вводом изображения, подобным этому (эту чашку можно вращать, чтобы указывать в любом направлении):
Учитывая, что у меня есть набор двухмерных точек, задающих верхний и нижний кружок, как показано на следующем рисунке. (Предположим, что эти точки даны человеком, который рисует линии вокруг чашки, поэтому он не будет очень точным. Для восстановления хорошего приближения может потребоваться подгонка по эллипсу или SolvePnP. И нижний круг не является полным кругом, это просто часть круга. Иногда верхняя часть также закрывается, поэтому мы не можем полагать, что будет полный круг)
Я также знаю физический радиус верхний и нижний круг, а также расстояние между ними с помощью линейки, чтобы измерить их заранее.
Я хочу найти полные 2 круга, как показано на следующем рисунке (думаю, мне нужно найти положение чашки и направление ее вверх, прежде чем я смогу проецировать полные круги):
Допустим, моя конечная цель - найти ближайшую двухмерную верхнюю точку и ближайшую двухмерную нижнюю точку, учитывая двухмерную точку сбоку чашки, как показано ниже. изображение:
Точка также может быть внутри чашки, например:
Давайте определим distance(a, b)
как функцию, которая находит евклидово расстояние от точки a
и точки b
в пиксельных единицах.
Исходя из этого, я смогу вычислить distance(side point, bottom point) / distance(top point, bottom point)
, который будет шкалой число от 0 до 1, если я умножу это число на физическую высоту чашки, измеренную линейкой, то я буду знать, насколько высока точка от дна чашки в метрических единицах c.
Какой метод я могу использовать, чтобы найти соответствующие верхнюю и нижнюю точки заданной точки сбоку, чтобы я наконец смог определить высоту точки от дна чашки?
Я думаю об использовании PnP для решения этой проблемы, но мои точки не имеют правильных идентификаторов связан с ними. И я не хочу знать точное вращение чашки, я хочу знать только направление вверх чашки. Я также думаю, что подгонка эллипса может несколько помочь, но, возможно, это не самое лучшее, потому что круг не завершен. Если у вас есть какие-либо предложения, скажите, пожалуйста, как получить высоту точки от нижней части чашки .