Я пытаюсь найти 2-D affine tranform даны две точки, используя решение, данное Kloss, and Kloss in “N-Dimensional Linear Vector Field Regression with NumPy.” (2010, The Python Papers Source Codes 2).Минимальное количество точек в поиске аффинного преобразования?
Они дают подход к нахождению аффинного преобразования, соединяющие два множества точек у и х, где преобразования представлена матрицей и вектор б (т.е. матрицы уравнения у = Ax + b).
В двух измерениях у вас есть 6 неизвестных, четыре определяющих 2х2 матрицы и 2, образующая б.
Однако в примере сценария и в описании, описывающем его, у них есть неизвестные t = n^2 + n, где n - количество точек, что означает, что вам нужно шесть очков, что для 2D-случая на самом деле известно 12 значения (т. е. значения х и у каждой точки на изображении).
они проверить это с помощью:
def solve(point_list):
"""
This function solves the linear equation system involved in the n
dimensional linear extrapolation of a vector field to an arbitrary point.
f(x) = x * A + b
with:
A - The "slope" of the affine function in an n x n matrix.
b - The "offset" value for the n dimensional zero vector.
The function takes a list of n+1 point-value tuples (x, f(x)) and returns
the matrix A and the vector b. In case anything goes wrong, the function
returns the tuple (None, None).
These can then be used to compute directly any value in the linear
vector field.
"""dimensions = len(point_list[0][0])
unknowns = dimensions ** 2 + dimensions
number_points = len(point_list[0])
# Bail out if we do not have enough data.
if number_points < unknowns:
print ’For a %d dimensional problem I need at least %d data points.’ \ % (dimensions, unknowns)
print ’Only %d data points were given.’ % number_points return None, None.
...
Вопрос:
Почему они говорят, что нужно 6 очков, чтобы получить 2D аффинное преобразование?
opencv getAffineTransform требуется только 3 точки данных, чтобы найти точку в 2D, которая является интуитивным числом, поскольку 3 точки определяют плоскость. И когда я беру вышеупомянутый условный тест из кода Kloss и Kloss, он работает на 3 балла в 2D.
Спасибо, что посмотрели на мой вопрос. Вы отвечаете, соглашаясь с моим пониманием. Хотя, я нашел m> n^2 + n в трех местах, в упомянутом коде и документе, а также в аналитической статье: Späth, H. (2004), аффинных и ортогональных преобразованиях между двумя множествами пунктов, Математическая связь, 9 (1), 27-34. Такая же ошибка в трех местах вызывает тревогу, но я не нашел другого объяснения. Я попытаюсь связаться с авторами и посмотреть, есть ли более тонкое объяснение. http://hrcak.srce.hr/index.php?show=clanak&id_clanak_jezik=1425&lang=en –
Я проверил статью, и настройка и номенклатура названий настолько схожи, что я не удивлюсь, если Kloss & Kloss просто скопирует над структурой Спата. Я бы не стал обвинять их в этом, поскольку они ясно заявляют, что используют алгоритм Спата. Пожалуйста, напишите здесь, в порядке, на что они отвечают вам, мне сейчас интересно. – gg349
@ E.Douglas, любые новости? – gg349