source: proiecte/pmake3d/make3d_original/Make3dSingleImageStanford_version0.1/LearningCode/Inference/test_Ash_L1_Minimizer_min.m @ 37

Last change on this file since 37 was 37, checked in by (none), 14 years ago

Added original make3d

File size: 7.0 KB
Line 
1% *  This code was used in the following articles:
2% *  [1] Learning 3-D Scene Structure from a Single Still Image,
3% *      Ashutosh Saxena, Min Sun, Andrew Y. Ng,
4% *      In ICCV workshop on 3D Representation for Recognition (3dRR-07), 2007.
5% *      (best paper)
6% *  [2] 3-D Reconstruction from Sparse Views using Monocular Vision,
7% *      Ashutosh Saxena, Min Sun, Andrew Y. Ng,
8% *      In ICCV workshop on Virtual Representations and Modeling
9% *      of Large-scale environments (VRML), 2007.
10% *  [3] 3-D Depth Reconstruction from a Single Still Image,
11% *      Ashutosh Saxena, Sung H. Chung, Andrew Y. Ng.
12% *      International Journal of Computer Vision (IJCV), Aug 2007.
13% *  [6] Learning Depth from Single Monocular Images,
14% *      Ashutosh Saxena, Sung H. Chung, Andrew Y. Ng.
15% *      In Neural Information Processing Systems (NIPS) 18, 2005.
16% *
17% *  These articles are available at:
18% *  http://make3d.stanford.edu/publications
19% *
20% *  We request that you cite the papers [1], [3] and [6] in any of
21% *  your reports that uses this code.
22% *  Further, if you use the code in image3dstiching/ (multiple image version),
23% *  then please cite [2].
24% * 
25% *  If you use the code in third_party/, then PLEASE CITE and follow the
26% *  LICENSE OF THE CORRESPONDING THIRD PARTY CODE.
27% *
28% *  Finally, this code is for non-commercial use only.  For further
29% *  information and to obtain a copy of the license, see
30% *
31% *  http://make3d.stanford.edu/publications/code
32% *
33% *  Also, the software distributed under the License is distributed on an
34% * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
35% *  express or implied.   See the License for the specific language governing
36% *  permissions and limitations under the License.
37% *
38% */
39function [t]=test_Ash_L1_Minimizer_min(filename)
40
41global A b S inq
42
43RealProblemFlag = 1;
44
45if ~RealProblemFlag
46   A = rand(800,500);
47   b = rand(800,1);
48   save temp.mat A b
49   %load temp.mat
50else
51   %filename = 'img-combined1-p-220t0_';
52   if nargin <1
53   filename = 'Catsh1stOpt_GatePackard000_';
54   end
55%    ScratchFolder = '/afs/cs/group/reconstruction3d/scratch/IMStorage/';
56%    OutPutFolder = '/afs/cs.stanford.edu/group/reconstruction3d/scratch/3DmodelMultipleImage/';
57   ScratchFolder = 'C:\Documents and Settings\Ash\My Documents\Reconstruction3d\DataTemp\';
58   OutPutFolder = 'C:\Documents and Settings\Ash\My Documents\Reconstruction3d\DataTemp\';
59   load([ScratchFolder filename '.mat']);
60   A = [ NewPosiM.*repmat(WeightsSelfTerm,1,size(NewPosiM,2));...
61         NewCoPM.*repmat(NewCoPEstDepth,1,size(NewCoPM,2))*Center;...
62         NewHoriStickM.*repmat( NewEstDepHoriStick.*NewWeightHoriNeighborStitch,1,size( NewHoriStickM,2));...
63         NewVertStickM.*repmat( NewEstDepVertStick.*NewWeightVertNeighborStitch,1,size( NewVertStickM,2))];
64A1=  NewPosiM.*repmat(WeightsSelfTerm,1,size(NewPosiM,2));
65A2=  NewCoPM.*repmat(NewCoPEstDepth,1,size(NewCoPM,2))*Center;
66A3=  NewHoriStickM.*repmat( NewEstDepHoriStick.*NewWeightHoriNeighborStitch,1,size( NewHoriStickM,2));
67A4=  NewVertStickM.*repmat( NewEstDepVertStick.*NewWeightVertNeighborStitch,1,size( NewVertStickM,2));
68   b = [ ones(size(NewPosiM,1),1);...
69         NewCoPMBound.*NewCoPEstDepth*Center;...
70         NewHoriStickMBound.*NewEstDepHoriStick.*NewWeightHoriNeighborStitch;...
71         NewVertStickMBound.*NewEstDepVertStick.*NewWeightVertNeighborStitch];
72   % inequalities
73%   NuSubSupSize = size(A,2) / 3;
74   temp = zeros(1, NuSubSupSize*3);
75   temp(3*(1:NuSubSupSize)-1) = YPointer(Sup2Para(SubSup));
76   temp = sparse(1:length(temp), 1:length(temp), temp);
77   temp( sum(temp,2) ==0,:) = [];
78   S = [temp;...
79        NewRayAllM;...
80        -NewRayAllM];
81   q = [ sparse(size(temp,1), 1);...
82         - 1/ClosestDist*ones(size(NewRayAllM,1),1);...
83         1/FarestDist*ones(size(NewRayAllM,1),1)];
84   
85end
86Para.A1endPt = size(A1,1);
87Para.A2endPt = Para.A1endPt+size(A2,1);
88Para.A3endPt = Para.A2endPt+size(A3,1);
89Para.A4endPt = Para.A3endPt+size(A4,1);
90Para.ClosestDist = ClosestDist;
91Para.FarestDist = FarestDist;
92clear A1 A2 A3 A4;
93% test on ashu's code
94
95%S = S(floor(end/2):floor(3*end/5),:);
96%q = q(floor(end/2):floor(3*end/5));
97%disp('Reducing inequalities by 1/3');
98
99%ashIteratorTime = tic;
100%[x_ashIterator, fail, info] = Ash_L1_Minimizer_min(A1, A2, A3, A4, b, 1e-12, 1);
101% log_barrier (Para, A, b, S, q, '', [], [], [], 1, 1);
102inq = q;
103tic;
104[x_ashIterator, status, history, T_nt_hist] = SigmoidLogBarrierSolver( Para, [], [], [], '', [], [], 0);
105
106toc
107t(1,1) = toc;
108if any(S*x_ashIterator+q > 0 )
109        disp('Inequality not satisfied');
110    max( S*x_ashIterator+q)
111end
112
113%toc(ashIteratorTime)
114
115%return;
116% generate VRml
117%    PlanePara = reshape(x_ashIterator,3,[]);
118%    FitDepthPPCP = FarestDist*ones(1,55*305);
119%    FitDepthPPCP(~maskSkyEroded) = (1./sum(PlanePara(:,Sup2Para(SupEpand(~maskSkyEroded ))).*Ray(:,~maskSkyEroded ),1))';
120%    FitDepthPPCP = reshape(FitDepthPPCP,55,[]);
121%    [Position3DFitedPPCP] = im_cr2w_cr(FitDepthPPCP,permute(Ray,[2 3 1]));
122%    Position3DFitedPPCP(3,:) = -Position3DFitedPPCP(3,:);
123%          Position3DFitedPPCP = permute(Position3DFitedPPCP,[2 3 1]);
124%          RR =permute(Ray,[2 3 1]);
125%          temp = RR(:,:,1:2)./repmat(RR(:,:,3),[1 1 2]);
126%          WrlFacestHroiReduce(Position3DFitedPPCP,PositionTex,SupOri, [ filename],[ filename 'AshuMinimizer'], ...
127%                              [ OutPutFolder '/'], 0, 0);
128%    [OutPutFolder '/' filename 'AshuMinimizer']
129
130%x_ashIterator = Ash_L1_Minimizer(A,b);
131
132% solve here for x using another method, and compare outputs
133% solve by sedumi
134
135% A = [An1; An2; An3; An4];
136% clear An1 An2 An3 An4;
137
138% =============================
139
140% sedumiTime = tic;
141tic
142xsedumi = sdpvar( size(A,2), 1);
143opt = sdpsettings('solver','sedumi','cachesolvers',1, 'verbose', 0);
144obj = norm(A*xsedumi-b, 1);
145F = set(S*xsedumi+q<=0);
146%[model,recoverymodel] = export(F,obj,opt);
147
148sol = solvesdp(F, norm(A*xsedumi-b, 1),opt);
149%[x,y] = sedumi(model.A,model.b,model.C,model.K);
150%assign(recover(recoverymodel.used_variables),y);
151xsedumi = double(xsedumi);
152toc
153t(2,1) = toc;
154% toc(sedumiTime)
155
156% generate VRml
157%    PlanePara = reshape(xsedumi,3,[]);
158%    FitDepthPPCP = FarestDist*ones(1,55*305);
159%    FitDepthPPCP(~maskSkyEroded) = (1./sum(PlanePara(:,Sup2Para(SupEpand(~maskSkyEroded ))).*Ray(:,~maskSkyEroded ),1))';
160%    FitDepthPPCP = reshape(FitDepthPPCP,55,[]);
161%    [Position3DFitedPPCP] = im_cr2w_cr(FitDepthPPCP,permute(Ray,[2 3 1]));
162%    Position3DFitedPPCP(3,:) = -Position3DFitedPPCP(3,:);
163%          Position3DFitedPPCP = permute(Position3DFitedPPCP,[2 3 1]);
164%          RR =permute(Ray,[2 3 1]);
165%          temp = RR(:,:,1:2)./repmat(RR(:,:,3),[1 1 2]);
166%          WrlFacestHroiReduce(Position3DFitedPPCP,PositionTex,SupOri, [ filename],[ filename 'sedumi'], ...
167%                              [ OutPutFolder '/'], 0, 0);
168%    [OutPutFolder '/' filename 'sedumi']
169   
170norm(A*x_ashIterator-b,1)
171norm(A*xsedumi-b,1)
172plot(x_ashIterator,'r');
173hold on;
174plot(xsedumi,'g');
175
176norm(x_ashIterator-xsedumi,1) / norm(xsedumi,1)
177norm(A*x_ashIterator-b,1)
178norm(A*(x_ashIterator-xsedumi),1) / norm(A*x_ashIterator-b,1)
Note: See TracBrowser for help on using the repository browser.