1 /*
2 * Copyright (C) 2017 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.geometry.PinholeCamera;
20
21 import java.io.Serializable;
22
23 /**
24 * Contains data of estimated camera.
25 */
26 public class EstimatedCamera implements Serializable {
27
28 /**
29 * Default quality score value.
30 */
31 public static final double DEFAULT_QUALITY_SCORE = 1.0;
32
33 /**
34 * ID to identify this instance. This is useful in case that this data is
35 * stored in some sort of database and must be set externally.
36 */
37 private String id;
38
39 /**
40 * ID of view for which camera has been estimated.
41 */
42 private int viewId;
43
44 /**
45 * Estimated camera.
46 */
47 private PinholeCamera camera;
48
49 /**
50 * Quality score of estimated camera. The larger the value, the better the
51 * quality. This is used for robust estimators such as PROSAC or PROMedS.
52 * This value is typically obtained during camera estimation.
53 */
54 private double qualityScore = DEFAULT_QUALITY_SCORE;
55
56 /**
57 * Covariance of estimated camera. This can be computed during camera
58 * estimation.
59 */
60 private Matrix covariance;
61
62 /**
63 * Gets id to identify this instance. This is useful in case that this data
64 * is stored in some sort of database and must be set externally.
65 *
66 * @return id to identify this instance.
67 */
68 public String getId() {
69 return id;
70 }
71
72 /**
73 * Sets id to identify this instance. This is useful in case that this data
74 * is stored in some sort of database and must be set externally.
75 *
76 * @param id id to identify this instance.
77 */
78 public void setId(final String id) {
79 this.id = id;
80 }
81
82 /**
83 * Gets id of view for which camera has been estimated.
84 *
85 * @return id of view for which camera has been estimated.
86 */
87 public int getViewId() {
88 return viewId;
89 }
90
91 /**
92 * Sets id of view for which camera has been estimated.
93 *
94 * @param viewId id of view for which camera has been estimated.
95 */
96 public void setViewId(final int viewId) {
97 this.viewId = viewId;
98 }
99
100 /**
101 * Gets estimated camera.
102 *
103 * @return estimated camera.
104 */
105 public PinholeCamera getCamera() {
106 return camera;
107 }
108
109 /**
110 * Sets estimated camera.
111 *
112 * @param camera estimated camera.
113 */
114 public void setCamera(final PinholeCamera camera) {
115 this.camera = camera;
116 }
117
118 /**
119 * Gets quality score of estimated camera. The larger the value, the better
120 * the quality. This is used for robust estimators such as PROSAC or
121 * PROMedS.
122 * This value is typically obtained from algorithms determining point
123 * correspondences.
124 *
125 * @return quality score of estimated camera.
126 */
127 public double getQualityScore() {
128 return qualityScore;
129 }
130
131 /**
132 * Sets quality score of estimated camera. The larger the value, the better
133 * the quality. This is used for robust estimators such as PROSAC or
134 * PROMedS.
135 * This value is typically obtained from algorithms determining point
136 * correspondences.
137 *
138 * @param qualityScore quality score of estimated camera.
139 */
140 public void setQualityScore(final double qualityScore) {
141 this.qualityScore = qualityScore;
142 }
143
144 /**
145 * Gets covariance of estimated camera. This can be computed during camera
146 * estimation.
147 *
148 * @return covariance of estimated camera.
149 */
150 public Matrix getCovariance() {
151 return covariance;
152 }
153
154 /**
155 * Sets covariance of estimated camera. This can be computed during camera
156 * estimation.
157 *
158 * @param covariance covariance of estimated camera.
159 */
160 public void setCovariance(final Matrix covariance) {
161 this.covariance = covariance;
162 }
163 }