Как отобразить точку на деформированную сетку

Это могло бы быть хорошей справкой. Это синтаксический анализатор используется в Источник вдохновения TwoDesk .

11
задан endolith 4 October 2012 в 21:14
поделиться

4 ответа

Хорошо, это звучит как искажение изображения. Вот что вам следует сделать:

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

  2. Теперь, чтобы найти соответствующую точку A на деформированном image:

    1. Найдите треугольник A и используйте преобразование между треугольником в неискаженной сетке и деформированной сеткой, чтобы определить новое положение.

Это подробно объяснено ] здесь .

5
ответ дан 3 December 2019 в 10:26
поделиться

Я понял, что у вас есть взаимно однозначное соответствие между развернутыми и развернутыми точками сетки. И я предполагаю, что деформация не настолько велика, чтобы у вас могли быть пересекающиеся линии сетки (как на изображении, которое вы показываете).

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

Предварительный процесс

  1. Сгенерируйте триангуляцию Делоне точек Обернутую сетку назовем WT .
  2. Для каждого треугольника в WT добавьте треугольник между соответствующими вершинами развернутой сетки. Это дает триангуляцию UWT развернутых точек.

Отображение точки p в свернутую сетку

  1. Найдите треугольник T (p1, p2, p3) в UWT , который содержит p .
  2. Вычислите барицентрические координаты (b1, b2, b3) p в T (p1, p2, p3)
  3. Пусть Tw (q1, q2, q3) будет треугольником в WT , соответствующим T (p1, p2, p3) . Новая позиция:
    b1 * q1 + b2 * q2 + b3 * q3 .

Замечания b3) из p в T (p1, p2, p3)

  • Пусть Tw (q1, q2, q3) будет треугольником в WT , соответствующий T (p1, p2, p3) . Новая позиция:
    b1 * q1 + b2 * q2 + b3 * q3 .
  • Замечания b3) из p в T (p1, p2, p3)

  • Пусть Tw (q1, q2, q3) будет треугольником в WT , соответствующий T (p1, p2, p3) . Новая позиция:
    b1 * q1 + b2 * q2 + b3 * q3 .
  • Замечания Это дает функцию деформации в виде линейного сплайна . Для более плавного поведения можно использовать ту же триангуляцию, но сделать приближение более высокого порядка, что приведет к немного более сложным вычислениям вместо барицентрических координат.

    2
    ответ дан 3 December 2019 в 10:26
    поделиться

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

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

    0
    ответ дан 3 December 2019 в 10:26
    поделиться

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

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

    2
    ответ дан 3 December 2019 в 10:26
    поделиться
    Другие вопросы по тегам:

    Похожие вопросы: