source: proiecte/pmake3d/make3d_original/Make3dSingleImageStanford_version0.1/image3dstiching/Occlu/ClosetOcclusion.m @ 37

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

Added original make3d

File size: 3.4 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 [Pocclu] = ClosetOcclusion(defaultPara, ScaleImg, Pair, ModelInfoTarget, TargetPointPix, INDTarget, ModelInfoField, FieldPointPix, INDField)
40% function return the closest occlusion point on specific ray TargetPointPix
41
42% ==========================================
43
44% PlaneParaMeter Scaling and Transform to Target viewpoint
45PlaneParaField = ModelInfoField.Model.PlaneParaInfo.PlanePara;
46PlaneParaField = PlaneParaField( :,ModelInfoField.Model.PlaneParaInfo.Sup2Para(ModelInfoField.Model.PlaneParaInfo.SupEpand(INDField)));
47PlaneParaField2Target = PlaneParaField'*Pair.R./repmat(1-PlaneParaField'*Pair.T,1,3); % (n by 3
48
49
50% Find intersection with ray and the PlaneParaMeter
51OccluDepthTarget = 1./(PlaneParaField2Target*ModelInfoTarget.Model.Ray(:,INDTarget))'; % (3 by n)
52InterSectP = repmat(ModelInfoTarget.Model.Ray(:,INDTarget),1,length( OccluDepthTarget)).*repmat(OccluDepthTarget,3,1);
53
54% Reproj the intersect point to Field viewpoint, check if in the superpixel that planes belong to
55NumINDField = length( INDField);
56ReProjField = defaultPara.InrinsicK1*(Pair.R*InterSectP + repmat( Pair.T, 1,NumINDField));
57ReProjField = ReProjField(1:2,:)./repmat( ReProjField(3,:),2,1);
58ScaleDepth = size(ModelInfoTarget.Model.Depth.FitDepth);
59[ ReProjFieldIND] = ProjPosi2Mask( ScaleImg, ScaleDepth, ReProjField);
60OccluMark = ModelInfoField.Model.Sup(ReProjFieldIND) == ModelInfoField.Model.Sup(INDField);
61
62
63% find the closest occlued point
64OccluDepthTarget = OccluDepthTarget(OccluMark);
65[V I ]= min(OccluDepthTarget);
66Pocclu=ReProjField(:,OccluMark);
67Pocclu = Pocclu(:,I);
68
69if V > ModelInfoTarget.Model.PlaneParaInfo.FitDepth(INDTarget)
70    Pocclu = [];
71end
72
73return;
74
75
Note: See TracBrowser for help on using the repository browser.