Страница 1 из 1

Аффинные преобразования - математика

Добавлено: 29 дек 2008, 00:24
updates-bot
Обсуждение статьи "Аффинные преобразования - математика"

http://gis-lab.info/qa/affine-math.html

Re: Аффинные преобразования - математика

Добавлено: 16 ноя 2009, 21:29
Shasoft
А нет ли формулы для получения обратных коофицентов по известным прямым коофицентам?
А то хранить лишних 6 коофицентов в БД не хочется.

Re: Аффинные преобразования - математика

Добавлено: 20 ноя 2009, 02:15
AndreyL
А в чем проблема? Сложно решить систему двух линейных уравнений? Ну ладно.

Если прямое преобразование

Код: Выделить всё

X = a0 + a1 x + a2 y
Y = b0 + b1 x + b2 y
то обратное

Код: Выделить всё

x = -((a2*b0 - a0*b2 + b2*X - a2*Y)/(a2*b1 - a1*b2))
y = -((-(a1*b0) + a0*b1 - b1*X + a1*Y)/(a2*b1 - a1*b2))
или

Код: Выделить всё

x = -((a2*b0 - a0*b2)/(a2*b1 - a1*b2)) - X*b2/(a2*b1 - a1*b2) + Y*a2/(a2*b1 - a1*b2)
y = -((-(a1*b0) + a0*b1)/(a2*b1 - a1*b2)) + X*b1/(a2*b1 - a1*b2) - Y*a1/(a2*b1 - a1*b2)
Коэффициенты, надеюсь, очевидны.

Re: Аффинные преобразования - математика

Добавлено: 08 июл 2012, 11:15
Донецков
Может кто выложит ссылку на готовую реализацию вычисления параметров аффинного преобразования в Excel?

Re: Аффинные преобразования - математика

Добавлено: 08 июл 2012, 11:36
Александр Мурый
Донецков писал(а):Может кто выложит ссылку на готовую реализацию вычисления параметров аффинного преобразования в Excel?
Насколько я понял, вот и ещё вот.

Re: Аффинные преобразования - математика

Добавлено: 08 июл 2012, 12:02
Донецков
Спасибо...
Может кому будет интересно:
PC-AffineTrans

Re: Аффинные преобразования - математика

Добавлено: 20 дек 2012, 05:01
asgs
Небольшое дополнение - для растров лучше использовать обратное трансформирование, т.е. для каждого пиксела результирующего изображения вычислять положение пиксела на исходном изображении и копировать цвет. Тогда гарантированно не будет пробелов и прочих наложений.

Re: Аффинные преобразования - математика

Добавлено: 06 апр 2018, 11:44
liri138
картинки с формулами на сайте отвалились :cry:

Re: Аффинные преобразования - математика

Добавлено: 19 дек 2022, 12:55
Worldmaster
Здравствуйте. А есть у кого нибудь реализация или хотя бы описание варианта для количества точек больше 3?
Очень нужно.

Re: Аффинные преобразования - математика

Добавлено: 19 дек 2022, 18:00
gamm
реализация есть в любой стат.системе, хоть в R, хоть в Python. А описание в любом учебнике по статистике, ищем метод наименьших квадратов решения переопределенных систем линейные уравнений, например тыц.

Re: Аффинные преобразования - математика

Добавлено: 20 дек 2022, 10:14
Worldmaster
Спасибо. А может есть какой нибудь примерчик рабочий??

Re: Аффинные преобразования - математика

Добавлено: 20 дек 2022, 14:59
gamm

Код: Выделить всё

> x.old = runif(20,1000,2000)
> y.old = runif(20,3000,7000)
> a10= 330; a11= 1.3; a12=-0.5; 
> a20=-567; a21=-0.7; a22= 0.3; 
> 
> mtr = rbind(c(a10,a20),
+             c(a11,a21),
+             c(a12,a22) )
> print(mtr)
      [,1]   [,2]
[1,] 330.0 -567.0
[2,]   1.3   -0.7
[3,]  -0.5    0.3
> 
> coord.old = cbind(rep(1,length(x.old)),x.old,y.old)
> coord.new = coord.old %*% mtr
> 
> x.new = coord.new[,1]
> y.new = coord.new[,2]
> 
> coef.x.forw = coef(lm(x.new~1+x.old+y.old))
> coef.y.forw = coef(lm(y.new~1+x.old+y.old))
> print(rbind(coef.x.forw,coef.y.forw))
            (Intercept) x.old y.old
coef.x.forw         330   1.3  -0.5
coef.y.forw        -567  -0.7   0.3
> 
> coef.x.back = coef(lm(x.old~1+x.new+y.new))
> coef.y.back = coef(lm(y.old~1+x.new+y.new))
> print(rbind(coef.x.back,coef.y.back))
            (Intercept) x.new y.new
coef.x.back      4612.5   7.5  12.5
coef.y.back     12652.5  17.5  32.5
> 
> mtr.back = cbind(coef.x.back,coef.y.back)
> coord.tst = cbind(rep(1,length(x.old)),coord.new) %*% mtr.back
> 
> summary(coord.tst - cbind(x.old,y.old))
  coef.x.back          coef.y.back        
 Min.   :-2.728e-12   Min.   :-3.638e-12  
 1st Qu.:-1.364e-12   1st Qu.:-3.638e-12  
 Median :-9.095e-13   Median :-2.728e-12  
 Mean   :-9.095e-13   Mean   :-2.592e-12  
 3rd Qu.:-4.547e-13   3rd Qu.:-1.819e-12  
 Max.   : 0.000e+00   Max.   : 0.000e+00