单应性及透视变换

原文作者版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/dataningwei/article/details/59108376
1 单应性(Homography)

为了实现逆透视变换,首先要先理解单应性。
平面上某点P
,在世界坐标系下和图像坐标系下的坐标分别表示为M和m

,则:
sm˜=A[R,t]M˜

其中,s为尺度因子,A为内参矩阵,R,t统称为外参矩阵,将其展开如下:
s⎡⎣⎢⎢uv1⎤⎦⎥⎥=A[r1r2r3t]⎡⎣⎢⎢⎢⎢XYZ1⎤⎦⎥⎥⎥⎥
由于在同一平面下,另z=0,—》
s⎡⎣⎢⎢uv1⎤⎦⎥⎥=A[r1r2r3t]⎡⎣⎢⎢⎢⎢XY01⎤⎦⎥⎥⎥⎥=A[r1r2t]⎡⎣⎢⎢XY1⎤⎦⎥⎥

另H=A[r1r2t],则H为单应性矩阵,sm˜=HM˜。
求解推导如下:
这里写图片描述

最少根据四个点,建立8个方程,求解出h′

。具体的求解方法为利用SVD分解。
具体求解方法可参看张正友文章:
Homography Estimation
2 逆透视

透视变换是利用小孔成像原理,将世界坐标下的物体变换到图像坐标系下,而逆透视变换是其反变换,是已知图像将其变换到世界坐标下。
为了满足单应性使用条件,我们限定变换的所有目标点在世界坐标系下共平面。
基本流程如下:

1 建立图像坐标系和世界坐标系
2. 获取至少4个点对坐标,本示例使用标定板的四个顶点坐标。
3. 根据4个点对计算H单应性矩阵.
4. 生成世界坐标系下的坐标网络
5. 映射至图像坐标系下,获取对应像素值,填充世界坐标系下坐标网络。
世界所坐标系建立如下:
这里写图片描述

先上逆透视结果:
这里写图片描述

nx=330;
ny=360;
% 棋盘格四个在图像上的四个顶点像素坐标
m=[ 434.655350296612 500.590117151691 133.931698403274 168.688463982752;
196.481734108317 386.841185548903 377.658238152848 179.933135570341;
1 1 1 1 ];
% 棋盘格在世界坐标系下的坐标(无量纲,不考虑单位)
M=[ 1 nx nx 1;
ny ny 1 1;
1 1 1 1];
% 根据4个点对,计算单应性矩阵
[Homo,Hnorm,inv_Hnorm] = compute_homography(m,M);

x_l=[-300:nx+100];
y_l=[-300:ny+100];

SX=length(x_l);
SY=length(y_l);

% 生成世界坐标系下坐标(无量纲,不考虑单位)
x_l=x_l’*ones(1,SY);
y_l=ones(SX,1)y_l;
pts=[x_l(? y_l(? ones(SX
SY,1)]’;

% 计算所有点对下的映射
XX = Homo*pts;
XX = XX(1:2,:) ./ (ones(2,1)*XX(3,:));
XX=fix(XX+0.5);

%% 像素重映射
out_img=zeros(SXSY,1);
for i=1:SX
SY
if XX(1,i)>640 || XX(2,i)>480 || XX(1,i)<1 || XX(2,i) <1
;
else
out_img(i)=input_img(XX(2,i),XX(1,i));
end

end

参考:
《A Flexible New Technique for Camera Calibration》
————————————————
版权声明:本文为CSDN博主「飞奔的蜗牛」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/dataningwei/article/details/59108376

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值