2016-01-20 31 views
4

我有一張使用標準相機拍攝的圖像,如下面的設置所示。我很幸運地假設我知道焦距(以毫米爲單位),作物因素和傳感器尺寸,並且可以假設投影的中心是圖像的中心 - 所以我知道它的像素位置以及傳感器。給定焦距和相機位置/旋轉的正確透視圖像

我也知道相對於藍色平面及其在該平面上方的高度的相機角度。攝像機僅在其x軸上旋轉,我們假定它與世界x軸平行。

Setup of camera over plane

現在我需要獲得圖像的度量整治,這樣我可以衡量毫米藍色平面上的物體(二維)。

我一直在嘗試Matlab中的各種東西來得到這個工作,但迄今爲止我的結果令人失望。顯然,這是一個平面單應矩陣問題,我認爲基於事實我知道傳感器的大小和像素的數量是可以解決的。

我的搜索使我這個類似的問題,但答案的方法是不是爲我工作(下面進一步說明):How to do perspective correction in Matlab from known Intrinsic and Extrinsic parameters?

我試着計算內在和外在的矩陣,然後得到一個單應:

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 

這不幸的是爲我提供了垃圾 - 這給圖像的全尺寸原文:

Downscaled input image

我從上面的代碼這樣的結果:

Result of homography calculated using above

鑑於其唯一的x軸旋轉,我覺得我們應該得到一個梯形形狀的單應的結果,但我不似乎。任何人都可以指出我在這裏所犯的任何明顯的錯誤嗎?

回答

0

您正在混合像素和毫米。以像素單位表示矩陣KK,使用已知的圖像寬度和高度作爲比例因子。

+0

謝謝,我擔心可能是這種情況。不幸的是,將這些交換爲像素值(使用傳感器尺寸與圖像尺寸計算的比例)似乎不能大大改善結果。 – n00dle