ToFカメラ(Kinect V2)からのz画像があります。私はピクセルサイズは持っていませんが、奥行き画像の解像度は512x424
です。私は70.6x60
のfovを持っていることも知っています。深度画像内のカメラ平面に対するピクセルの角度を計算する
hereの前にピクセルサイズを取得する方法を尋ねました。 Matlabでは、このコードは次のようになります。
ピクセルが明るいほど、オブジェクトは近くなります。
close all
clear all
%Load image
depth = imread('depth_0_30_0_0.5.png');
frame_width = 512;
frame_height = 424;
horizontal_scaling = tan((70.6/2) * (pi/180));
vertical_scaling = tan((60/2) * (pi/180));
%pixel size
with_size = horizontal_scaling * 2 .* (double(depth)/frame_width);
height_size = vertical_scaling * 2 .* (double(depth)/frame_height);
画像自体が30度回転する立方体であり、ここで見ることができる:。
ここで私がやりたいことは、カメラ平面に対するピクセルの水平角と、カメラ平面に対する垂直角を計算することです。
私は三角測量でこれをやろうとしましたが、最初に水平方向に、次に垂直方向に、あるピクセルから別のピクセルまでのz距離を計算しました。私はコンボリューションでこれを実行します。この後
%get the horizontal errors
dx = abs(conv2(depth,[1 -1],'same'));
%get the vertical errors
dy = abs(conv2(depth,[1 -1]','same'));
は私がATANを経由して、それを計算し、次のように:
これらのような有望な結果、バック与えhorizontal_angle = rad2deg(atan(with_size ./ dx));
vertical_angle = rad2deg(atan(height_size ./ dy));
horizontal_angle(horizontal_angle == NaN) = 0;
vertical_angle(vertical_angle == NaN) = 0;
:
をしかし、このような少し複雑な画像を使用すると、60°と30°回転します。
互いに両画像を減算した後、私は、次の画像を取得する:
はこのように水平方向と垂直方向の角度に対して同じ角度の画像を、バック与えます - これらの2つの間に違いがあることを示しています。だから、、私は次の質問がある:どのように私は証拠この概念をできますか?数学は正しいのですか?テストケースはちょうどよく選ばれていませんか? 2つの画像の水平角と垂直角との角度差が近すぎますか?計算に誤りがありますか?