天天看點

深度圖提取

1.問題描述:

 深度圖提取

2.部分程式:

%

% Geometric Blind Deconvolution script

%

% Copyright 2006 Paolo Favaro ([email protected])

% School of Engineering and Physical Sciences

% Heriot-Watt University, Edinburgh, UK

% Last revision: May 2006

%

% This program can be used only for research purposes.

% This program is distributed WITHOUT ANY WARRANTY; 

% without even the implied warranty of MERCHANTABILITY 

% or FITNESS FOR A PARTICULAR PURPOSE.

clear all

close all

% set to 1 to see plots, 0 otherwise

plotfigures = 1;

Yes = 1;

No = 0;

fprintf('Shape from Defocus (Least Squares)\n');

notValid = Yes;

while notValid

    method = input(['Which method do you want to test?'...

        '\nChoose generate, learn, overlap: '],'s'); 

    notValid = ~strcmp(method,'generate')&...

        ~strcmp(method,'learn')&...

        ~strcmp(method,'overlap');

end

%%%%%%%%%%%%%%%%%%%%%

% compute operators %

%%%%%%%%%%%%%%%%%%%%%

% ni is the square patch size 

% the larger ni the slower the algorithm

notValid = Yes;

while notValid

    ni = input(['Choose the patch size '...

        '\n3(fast&noisy),5,7,9(slow&smooth): '],'s');

    notValid = ~(ni=='3')&...

        ~(ni=='5')&...

        ~(ni=='7')&...

        ~(ni=='9');

end

ni = str2num(ni);

% fix rank of operators 

ranks = ni*ni; % operator ranks

if strcmp(method,'generate')

    % compute operators when PSF is known

    Hp = generate_operators(ni,ranks);

elseif strcmp(method,'learn')

    % compute operators when PSF is unknown 

    % learning approach; non overlapping patches

    Hp = learn_operators(ni,ranks);

else

    % compute operators when PSF is unknown

    % learning approach; overlapping patches

    Hp = learn_operators_overlap(ni,ranks);

end

%%%%%%%%%%%%%%%

% load images %

%%%%%%%%%%%%%%%

load DataSet

%%%%%%%%%%%%%%%%%%

% Estimate Depth %

%%%%%%%%%%%%%%%%%%

Depth = estimate_depth(I1,I2,Hp,plotfigures);

% optional smoothing

FilteredDepth = mediansmoothing(Depth,plotfigures);

3.仿真結論: