我想尝试一下,将矩形转换成四边形的双线性变换 http://www.fmwconcepts.com/imagemagick/bilinearwarp/FourCornerImageWarp2.pdf 在第4页。你知道吗
我有广场
(500,900)(599,900)(599,999)(500,999)
四轮车呢
(454,945)(558,951)(598,999)(499,999)
其中,上述四坐标和方坐标的第i个条目是相应的角点。你知道吗
有了它,我就可以做以下矩阵了
[1 500 900 450000][a0] [454]
[1 599 900 539100][a1]=[558]
[1 599 999 598401][a2] [598]
[1 500 999 499500][a3] [499]
[1 500 900 450000][b0] [945]
[1 599 900 539100][b1]=[951]
[1 599 999 598401][b2] [999]
[1 500 999 499500][b3] [999]
如果我为他们解决我会得到
a0=-709.911845730028
a1=1.50964187327824
a2=0.709621467197225
a3=-0.000510152025303541
b0=148.305785123967
b1=0.611570247933884
b2=0.85154576063667
b3=-0.000612182430364249
但是当我运行这个python脚本(我想手动模拟,将四边形上的点(454945)转换为正方形上的点(500900))时,我得到了一个不同的答案。我得到(442.908226541024.0)。。。你知道吗
X = 454
Y = 945
a0=-709.911845730028
a1=1.50964187327824
a2=0.709621467197225
a3=-0.000510152025303541
b0=148.305785123967
b1=0.611570247933884
b2=0.85154576063667
b3=-0.000612182430364249
A = b2*a3 - b3*a2
C_one = (b0*a1 - b1*a0)
C = C_one + (b1*X - a1*Y)
B_one = (b0*a3 - b3*a0) + (b2*a1 - b1*a2)
B = B_one + (b3*X - a3*Y)
V = (-B + (B*B - 4*A*C)**0.5 ) / (2*A)
U = (X - a0 - a2*V) / (a1 + a3*V)
print U,V
有人知道怎么了吗?你知道吗
如果我正确理解了你的线性代数表示法,那么我不同意你的
a
和b
:计算
我明白了
那不一样。。。不知道是否正确。你知道吗
相关问题 更多 >
编程相关推荐