天天看點

基于toolbox_calib工具箱的相機标定matlab仿真

目錄

​​一、理論基礎​​

​​二、核心程式​​

作者ID  :fpga和matlab

擅長技術:
1.無線基帶,無線圖傳,編解碼 
2.機器視覺,圖像處理,三維重建 
3.人工智能,深度學習 
4.智能控制,智能優化
5.其他      

一、理論基礎

        相機标定是三 維 重 構 的前期關鍵技術之 一 ,标 定内容 包 括确 定 相 機 的 内部 參數 和外 部參 數.内部 參 數包 括相 機 的焦 距 和 成 像 的 大 小 ,用 于建 立 相 機 模 型 ;外 部 參 數 包 含 相 對 于 場 景 的 相 機 位 置 和 姿 态.參數 的精度 直接影 響 三維 重構 結 果 的 準确 性 .

        許 多 學 者 對 相 機 參 數 的 獲 取 方 法 進 行 了 研 究 , HARTLEY_2提 出通 過控 制攝像 機繞 光 心作純 旋 轉 運 動标 定攝 像 機 的算 法 ,優 點 是 線 性 求 解 攝 像 機 的 内部 參數 ,處 理速 度較 快 ,缺 點是 标定 過 程 中人 們 無 法 知道 攝 像機 光 心 的 具 體 位置 ,在 實 際 應 用 中很 難 控 制攝 像機 作繞 光 心 的旋 轉 ;w ONG 等 _3提 出物 體 作 圓周 運 動捕 獲 物 體 輪廓 視 角 進 行 标 定 的方 法 ,這 種 方 法必須 手 動調 節視 角提供 近 似 的位 置 和方 向參 數 ,然後通 過 疊代優 化 改進 ,不僅 增加 操 作人 員 的工 作量 ,而且 在 測量 過程 中引入 人 為誤 差 ,标定 的結果 不精 确.

calib_gui:(注意,工具箱在有些電腦中可能會報錯,如果儲存就用matlab2013b)

基于toolbox_calib工具箱的相機标定matlab仿真

然後點第一個standard

基于toolbox_calib工具箱的相機标定matlab仿真

點:

基于toolbox_calib工具箱的相機标定matlab仿真

輸入如下,DSC,j

基于toolbox_calib工具箱的相機标定matlab仿真
基于toolbox_calib工具箱的相機标定matlab仿真

再點:

基于toolbox_calib工具箱的相機标定matlab仿真

然後一直點回車,直到出現如下效果:

基于toolbox_calib工具箱的相機标定matlab仿真

用滑鼠在上面點選四個角

基于toolbox_calib工具箱的相機标定matlab仿真
基于toolbox_calib工具箱的相機标定matlab仿真

然後點:

基于toolbox_calib工具箱的相機标定matlab仿真

然後點

基于toolbox_calib工具箱的相機标定matlab仿真

就出現如下結果:

基于toolbox_calib工具箱的相機标定matlab仿真

點選save儲存标定結果

基于toolbox_calib工具箱的相機标定matlab仿真

二、核心程式

function show_window(cell_list,fig_number,title_figure,x_size,y_size,gap_x,font_name,font_size)


if ~exist('cell_list'),
    error('No description of the functions');
end;

if ~exist('fig_number'),
    fig_number = 1;
end;
if ~exist('title_figure'),
    title_figure = '';
end;
if ~exist('x_size'),
    x_size = 85;
end;
if ~exist('y_size'),
    y_size = 14;
end;
if ~exist('gap_x'),
    gap_x = 0;
end;
if ~exist('font_name'),
    font_name = 'clean';
end;
if ~exist('font_size'),
    font_size = 8;
end;

figure(fig_number); clf;
pos = get(fig_number,'Position');

[n_row,n_col] = size(cell_list);

fig_size_x = x_size*n_col+(n_col+1)*gap_x;
fig_size_y = y_size*n_row+(n_row+1)*gap_x;

set(fig_number,'Units','points', ...
   'BackingStore','off', ...
   'Color',[0.8 0.8 0.8], ...
   'MenuBar','none', ...
   'Resize','off', ...
   'Name',title_figure, ...
'Position',[pos(1) pos(2) fig_size_x fig_size_y], ...
'NumberTitle','off'); %,'WindowButtonMotionFcn',['figure(' num2str(fig_number) ');']);

h_mat = zeros(n_row,n_col);

posx = zeros(n_row,n_col);
posy = zeros(n_row,n_col);

for i=n_row:-1:1,
   for j = n_col:-1:1,
      posx(i,j) = gap_x+(j-1)*(x_size+gap_x);
      posy(i,j) = fig_size_y - i*(gap_x+y_size);
   end;
end;

for i=n_row:-1:1,
    for j = n_col:-1:1,
        if ~isempty(cell_list{i,j}),
            if ~isempty(cell_list{i,j}{1}) & ~isempty(cell_list{i,j}{2}),
                h_mat(i,j) = uicontrol('Parent',fig_number, ...
                    'Units','points', ...
                    'Callback',cell_list{i,j}{2}, ...
                    'ListboxTop',0, ...
                    'Position',[posx(i,j)  posy(i,j)  x_size   y_size], ...
                    'String',cell_list{i,j}{1}, ...
                    'fontsize',font_size,...
                    'fontname',font_name,...
                    'Tag','Pushbutton1');
            end;
        end;
    end;
end;

%------ END PROTECTED REGION ----------------%      

繼續閱讀