1.问题描述:
深度图提取
2.部分程序:
%
 % Geometric Blind Deconvolution script
 %
 % Copyright 2006 Paolo Favaro (p.favaro@hw.ac.uk)
 % 
 % 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);
return
3.仿真结论:

C5










