Я пытаюсь создать сопоставление для позиций плитки/пикселя в одном наборе данных черепичного изображения для позиции плитки/пикселя в другом наборе данных (который примерно покрывает одну и ту же область изображения). Из-за поворотов отображаемой области, оси панорамирования, сдвигов и изменений масштаба в этом сопоставлении есть много неизвестных. Эта ситуация показана ниже, где прямоугольники представляют изображаемой области для каждой плитки, а также расположение плиток определяется соотношением между осью панорамирования (черные линии) и оси камеры:images tile registration
Задача сводится к следующей линейной системе, которая учитывает, что ось сканирования вращается относительно оси камеры по-разному в двух наборах данных, плюс вращение, масштаб и переводы между отображаемыми областями в двух наборах данных. К сожалению, я не знаю, как идти о решении для неизвестных:
|tx ty|X|a b|+|px py|X|e f|+|i j|=|tx* ty*|X|k l|+|px* py*|
|c d| |g h| |m n|
Неизвестными в этой системе (а, б, в, г, д, е, ж, з, I, J, K , l, m, n) и в основном описывают отображение из позиций плитки и пикселя в наборе данных1 (tx, ty, px, py) в позиции плитки и пикселя в наборе данных2 (tx *, ty *, px *, py *). Приходится с 14 (или более) такими соответствиями, для меня это не слишком большая сделка, так как у меня есть регистрация лог-полярного изображения, которая очень хорошо работает для аффинного сопоставления плитки из набора данных1 в плитку в наборе данных2, если они содержат достаточное изображение перекрытия. Проблема в том, что я предпочел бы получить вышеприведенное сопоставление, а не делать эту регистрацию между каждой отдельной таблицей в наборе данных1 и 2, которая будет навсегда!
Любая помощь очень ценится! -Craig
Edit:
Я просто понял, что я могу изменить эту проблему, как это (я думаю?):
|tx ty px py 1|X|a b|=|tx* ty* px* py* 1|X|k l|
|c d| |m n|
|e f| |1 0|
|g h| |0 1|
|i j| |1 1|
Это приглядевшись к тому, что мне нужно, но мне еще нужно помогите выяснить, как преобразовать ответ, я вернусь к форме, которую я мог бы использовать (самое главное, я думаю, мне нужно было бы явно знать (k, l, m, n) преобразовать преобразованную координату обратно в плитка и положение пикселя в цели .... нет?
Редактировать2: Изменено обозначение, которое должно быть правильным для умножения матрицы. Edit3: Добавлены иллюстрационные изображения, так как теперь я могу!