View Javadoc
1   /*
2    * Copyright (C) 2016 Alberto Irurueta Carro (alberto@irurueta.com)
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *         http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package com.irurueta.ar.sfm;
17  
18  import com.irurueta.algebra.Matrix;
19  import com.irurueta.ar.epipolar.FundamentalMatrix;
20  
21  import java.io.Serializable;
22  import java.util.BitSet;
23  import java.util.List;
24  
25  /**
26   * Contains data of estimated fundamental matrix.
27   */
28  public class EstimatedFundamentalMatrix implements Serializable {
29  
30      /**
31       * Default quality score value.
32       */
33      public static final double DEFAULT_QUALITY_SCORE = 1.0;
34  
35      /**
36       * ID to identify this instance. This is useful in case that this data is
37       * stored in some sort of database and must be set externally.
38       */
39      private String id;
40  
41      /**
42       * Estimated fundamental matrix.
43       */
44      private FundamentalMatrix fundamentalMatrix;
45  
46      /**
47       * Quality score of estimated fundamental matrix. The larger the value,
48       * the better the quality.
49       */
50      private double qualityScore = DEFAULT_QUALITY_SCORE;
51  
52      /**
53       * Covariance of estimated fundamental matrix. This can be computed during
54       * estimation.
55       */
56      private Matrix covariance;
57  
58      /**
59       * ID of first view related by fundamental matrix.
60       */
61      private int viewId1;
62  
63      /**
64       * ID of second view related by fundamental matrix.
65       */
66      private int viewId2;
67  
68      /**
69       * Indicates which samples used for fundamental matrix estimation where
70       * considered inliers.
71       */
72      private BitSet inliers;
73  
74      /**
75       * Left samples used for fundamental matrix estimation.
76       */
77      private List<Sample2D> leftSamples;
78  
79      /**
80       * Right samples used for fundamental matrix estimation.
81       */
82      private List<Sample2D> rightSamples;
83  
84      /**
85       * Gets id to identify this instance. This is useful in case that this data
86       * is stored in some sort of database and must be set externally.
87       *
88       * @return id to identify this instance.
89       */
90      public String getId() {
91          return id;
92      }
93  
94      /**
95       * Sets id to identify this instance. This is useful in case that this data
96       * is stored in some sort of database and must be set externally.
97       *
98       * @param id id to identify this instance.
99       */
100     public void setId(final String id) {
101         this.id = id;
102     }
103 
104     /**
105      * Gets estimated fundamental matrix.
106      *
107      * @return estimated fundamental matrix.
108      */
109     public FundamentalMatrix getFundamentalMatrix() {
110         return fundamentalMatrix;
111     }
112 
113     /**
114      * Sets estimated fundamental matrix.
115      *
116      * @param fundamentalMatrix estimated fundamental matrix.
117      */
118     public void setFundamentalMatrix(final FundamentalMatrix fundamentalMatrix) {
119         this.fundamentalMatrix = fundamentalMatrix;
120     }
121 
122     /**
123      * Gets quality score of estimated fundamental matrix. The larger the value,
124      * the better the quality.
125      *
126      * @return quality score of estimated fundamental matrix.
127      */
128     public double getQualityScore() {
129         return qualityScore;
130     }
131 
132     /**
133      * Sets quality score of estimated fundamental matrix. The larger the value,
134      * the better the quality.
135      *
136      * @param qualityScore quality score of estimated fundamental matrix.
137      */
138     public void setQualityScore(final double qualityScore) {
139         this.qualityScore = qualityScore;
140     }
141 
142     /**
143      * Gets covariance of estimated fundamental matrix. This can be computed
144      * during estimation.
145      *
146      * @return covariance of estimated fundamental matrix.
147      */
148     public Matrix getCovariance() {
149         return covariance;
150     }
151 
152     /**
153      * Sets covariance of estimated fundamental matrix. This can be computed
154      * during estimation.
155      *
156      * @param covariance covariance of estimated fundamental matrix.
157      */
158     public void setCovariance(final Matrix covariance) {
159         this.covariance = covariance;
160     }
161 
162     /**
163      * Gets id of first view related by fundamental matrix.
164      *
165      * @return id of first view related by fundamental matrix.
166      */
167     public int getViewId1() {
168         return viewId1;
169     }
170 
171     /**
172      * Sets id of first view related by fundamental matrix.
173      *
174      * @param viewId1 id of first view related by fundamental matrix.
175      */
176     public void setViewId1(final int viewId1) {
177         this.viewId1 = viewId1;
178     }
179 
180     /**
181      * Gets id of second view related by fundamental matrix.
182      *
183      * @return id of second view related by fundamental matrix.
184      */
185     public int getViewId2() {
186         return viewId2;
187     }
188 
189     /**
190      * Sets id of second view related by fundamental matrix.
191      *
192      * @param viewId2 id of second view related by fundamental matrix.
193      */
194     public void setViewId2(final int viewId2) {
195         this.viewId2 = viewId2;
196     }
197 
198     /**
199      * Indicates which samples used for fundamental matrix estimation where
200      * considered inliers.
201      *
202      * @return which samples used for fundamental matrix estimation where
203      * considered inliers.
204      */
205     public BitSet getInliers() {
206         return inliers;
207     }
208 
209     /**
210      * Specifies which samples used for fundamental matrix estimation where
211      * considered inliers.
212      *
213      * @param inliers which samples used for fundamental matrix estimation where
214      *                considered inliers.
215      */
216     public void setInliers(final BitSet inliers) {
217         this.inliers = inliers;
218     }
219 
220     /**
221      * Gets left samples used for fundamental matrix estimation.
222      *
223      * @return left samples used for fundamental matrix estimation.
224      */
225     public List<Sample2D> getLeftSamples() {
226         return leftSamples;
227     }
228 
229     /**
230      * Sets left samples used for fundamental matrix estimation.
231      *
232      * @param leftSamples left samples used for fundamental matrix estimation.
233      */
234     public void setLeftSamples(final List<Sample2D> leftSamples) {
235         this.leftSamples = leftSamples;
236     }
237 
238     /**
239      * Gets right samples used for fundamental matrix estimation.
240      *
241      * @return right samples used for fundamental matrix estimation.
242      */
243     public List<Sample2D> getRightSamples() {
244         return rightSamples;
245     }
246 
247     /**
248      * Sets right samples used for fundamental matrix estimation.
249      *
250      * @param rightSamples right samples used for fundamental matrix estimation.
251      */
252     public void setRightSamples(final List<Sample2D> rightSamples) {
253         this.rightSamples = rightSamples;
254     }
255 }