图像的二维射影变换快速算法
有一幅原始图像,有行列号X =[0,Width],Y=[0,Height].
有一幅目标图像,有行列号X' =[0,Width'],Y'=[0,Height'].
有二维射影变换关系(8参数,h11 h12 h13 h21 h22 h23 h31 h32, h33==1):
X = (h11*X' + h12*Y' + h13)/ (h31*X' + h32*Y' + h33);
Y = (h21*X' + h22*Y' + h23)/ (h31*X' + h32*Y' + h33);
对于每一个X' Y'可以计算一个X Y,然后再原始图像上重采样灰度值,填到目标图像上。
我想到一种快速算法,就是:
Xt = h11*X' + h12*Y' + h13;
Yt = h21*X' + h22*Y' + h23;
Wt = h31*X' + h32*Y' + h33;
X = Xt / Wt; Y = Yt / Wt;
如果已知了X' Y'对应的Xt Yt Wt,如果递推X'+1,Y'对应的Xt Yt Wt,只需要加上一个常数。
Xt += h11;
Yt += h21;
Wt += h31;
如果递推X',Y'+1对应的Xt Yt Wt,只需要加上一个常数。
Xt += h12;
Yt += h22;
Wt += h32;
只需要计算0 0点的Xt Yt Wt值,就可以递推了。每个像素只需要3个加法和2个除法。
有没有更好的方法?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
学习了,不错的教程