www.gusucode.com > IPCV_Eval_Kit_R2019a_0ce6858工具箱matlab程序源码 > IPCV_Eval_Kit_R2019a_0ce6858/code/demo_files/I4_09_1_measuringPlanerObjects.m

    %% 僉儍儕僽儗乕僔儑儞嵪傒扨娽僇儊儔偵傛傞,
%        僇儊儔帺屓埵抲p惃悇掕丄懳徾暔懱偺3師尦埵抲悇掕
%   - 儚乕儖僪嵗昗偲夋憸嵗昗偑婛抦偺暋悢偺揰傪巊梡
%   - 懳徾暔懱偼丄儚乕儖僪嵗昗宯偺Z=0忋偵昁梫
clc;clear;close all;imtool close all;

%% 偁傜偐偠傔丄巊梡偺僇儊儔偱僇儊儔僉儍儕僽儗乕僔儑儞偟偨寢壥傪撉崬傒
load('I4_09_1_cameraParams.mat');

%% 應掕懳徾偺暔懱偺夋憸傪撉崬傒\帵
imOrig = imread([matlabroot '\toolbox\vision\visiondata\calibration\slr\image9.jpg']);
figure; imshow(imOrig);

%% 僇儊儔僷儔儊乕僞傪梡偄丄儗儞僘榗傪彍嫀 => 媮傔偨偄傕偺偼夋憸嵗昗(2455, 1060)
[im, newOrigin] = undistortImage(imOrig, cameraParams);      % 僨僼僅儖僩愝掕偱偼newOrigin=[0 0], i.e., 拞怱偼晄曄
imtool(im);
imagePoints1 = [2455, 1060]        % 庤慜偺僐僀儞偺拞怱嵗昗

%% 奜晹僷儔儊乕僞傪悇掕
% 夋憸撪偺僠僃僢僇乕儃乕僪偺岎揰傪専弌
[imagePoints, boardSize] = detectCheckerboardPoints(im);
% 儚乕儖僪嵗昗宯偱偺丄僠僃僢僇乕僷僞乕儞偺岎揰偺棟憐嵗昗傪寁嶼
squareSize = 29;      % 29mm
worldPoints = generateCheckerboardPoints(boardSize, squareSize);
% 奜晹僷儔儊乕僞偺悇掕乮儗儞僘榗偺柍偄夋憸忋偺揰嵗昗傪巊梡乯
[R, t] = extrinsics(imagePoints, worldPoints, cameraParams)

%% 僇儊儔偺岝妛拞怱偺丄儚乕儖僪嵗昗偱偺埵抲p惃傪寁嶼
Location    = -t * R'        % [1x3]
Orientation = R'             % [3x3]

%% 僐僀儞偺拞怱揰偺丄儚乕儖僪嵗昗傪悇掕乮儚乕儖僪嵗昗宯Z=0暯柺忋偺XY嵗昗乯
worldPoints1 = pointsToWorld(cameraParams, R, t, imagePoints1)

%% 僇儊儔偐傜僐僀儞拞怱揰傑偱偺嫍棧偺寁嶼
distanceToCamera = norm([worldPoints1 0] + t*R');

%% 廔椆















%% [嶲峫] I4_09_1_cameraParams.mat偺惗惉
%% 僇儊儔僉儍儕僽儗乕僔儑儞梡偺夋憸偺弨旛
numImages = 9;
files = cell(1, numImages);
for i = 1:numImages
    files{i} = fullfile(matlabroot, 'toolbox', 'vision', 'visiondata', ...
        'calibration', 'slr', sprintf('image%d.jpg', i));
end

%% 僇儊儔僉儍儕僽儗乕僔儑儞
% 僠僃僢僇乕儃乕僪偺夋憸偐傜丄僠僃僢僇乕偺岎揰傪専弌
[imagePoints, boardSize] = detectCheckerboardPoints(files);

% 僠僃僢僇乕僷僞乕儞偺儚乕儖僪嵗昗傪惗惉
squareSize = 29; % 29mm
worldPoints = generateCheckerboardPoints(boardSize, squareSize);

% 僇儊儔僉儍儕僽儗乕僔儑儞偺幚峴
cameraParams = estimateCameraParameters(imagePoints, worldPoints);
save('I4_09_1_cameraParams.mat', 'cameraParams');
  
  
%%   Copyright 2013-2014 The MathWorks, Inc.