matlab 相机焦距,matlab – 给定焦距和摄像机位置/旋转的正确透视图像

我有一个使用标准相机拍摄的图像,如下面的设置所示.我很幸运地假设我知道焦距(以毫米为单位),裁剪因子和传感器尺寸,并且可以假设投影中心是图像的中心 – 所以我知道它的位置以像素为单位和传感器.

我也知道相机的角度,参考蓝色平??面及其在平面上方的高度.相机仅在x轴上旋转,我们假设它与世界x轴平行.

cBbWI.png

现在我需要对图像进行度量校正,以便我可以以毫米为单位测量蓝色平面上的对象(2D).

我一直在尝试使用Matlab中的各种东西来实现这一点,但到目前为止,我的结果令人失望.显然这是一个平面平面单应性问题,我认为根据我知道传感器大小和其中像素数的事实,可以解决比例问题.

我已经尝试计算内在矩阵和外在矩阵,然后得到单应性:

f = 4.9; % Focal length is given as 4.9mm

sensor_size = [6.17 4.55]; % Again in mm

cc = sensor_size ./ 2;

% Calculate intrinsic matrix

KK = [f 0 cc(1);0 f cc(2); 0 0 1];

theta = 21.8; % Angle of camera above plane, degrees

Rc = xrotate(theta) % xrotate fcn given below

Tc = [0 0 60]'; % Camera is 60mm above plane along camera z-axis

H = KK * [R(:,1) R(:,2) Tc];

figure;imshow(imtransform(I,maketform('projective',H), 'Size', image_size))

function R = xrotate( theta )

R = [ 1 0 0;

0 cosd(theta) sind(theta);

0 -sind(theta) cosd(theta) ];

end

不幸的是,这给了我垃圾 – 给出了这张图片的全尺寸原件:

M49Zb.jpg

我从上面的代码中得到了这个结果:

J8uQg.png

鉴于它只有一个x轴旋转,我认为我们应该得到一个由于单应性的梯形形状,但我似乎没有.任何人都可以指出我在这里犯过的任何明显错误吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值