我有两个图像包含相同的对象与4个角。
我有一个对应的这4点之间的图像。
让我们把这些点称为A,B,C,D。
我在图像1和图像2中有A的(x,y)坐标。
类似地,对于点B,C,D。
我的目的是证明,如果存在一个仿射变换,满足这四个点的坐标变化。
我该怎么做?
如果在python或c中有一个代码,这样我就可以快速地验证许多图像,这将是有益的。
我的理解是,一般仿射变换可以用
x'=ax+by+c
y'=dx+ey+f
所以有六个未知数。
感谢您的阅读。
发布于 2019-06-25 08:13:19
假设你的观点是图像1中的A=(x1,y1);B=(x2,y2);C=(x3;y3);D=(x4,y4);A'=(x1',y1');B'=(x2',y2');C'=(x3';y3');D'=(x4',y4')在图像2中。
你已经知道了找到仿射变换需要你找到这六个未知数。要找到它们,只需写下线性方程组并求解:
x1' = a x1 + b y1 + c
y1' = d x1 + e y1 + f
x2' = a x2 + b y2 + c
y2' = d x2 + e y2 + f
x3' = a x3 + b y3 + c
y3' = d x3 + e y3 + f
x4' = a x4 + b y4 + c
y4' = d x4 + e y4 + f实际上,你可以把它分成两个线性方程组:
x1' = a x1 + b y1 + c
x2' = a x2 + b y2 + c
x3' = a x3 + b y3 + c
x4' = a x4 + b y4 + c和
y1' = d x1 + e y1 + f
y2' = d x2 + e y2 + f
y3' = d x3 + e y3 + f
y4' = d x4 + e y4 + f由于您只关心是否存在仿射变换(而不是a,b,c,d,e,f本身的值),您只需确定这两个线性方程组是否有解。
鲁切-卡佩利定理告诉我们线性方程组有一个解当且仅当系数矩阵的排名等于增广矩阵的秩。
在这种情况下,这两个线性方程组的系数矩阵是
| x1 y1 1 |
| x2 y2 1 |
| x3 y3 1 |
| x4 y4 1 |第一线性方程组的增广矩阵是
| x1 y1 1 x1' |
| x2 y2 1 x2' |
| x3 y3 1 x3' |
| x4 y4 1 x4' |对于第二个线性方程组,它是
| x1 y1 1 y1' |
| x2 y2 1 y2' |
| x3 y3 1 y3' |
| x4 y4 1 y4' |现在计算这三个矩阵的秩(例如用排名),如果它们都相等,就存在仿射变换。
https://stackoverflow.com/questions/56729948
复制相似问题