Skip to content

Commit f1d5025

Browse files
author
Fabien Servant
committed
Update isPoseAndIntrinsicDefined
1 parent 303ff47 commit f1d5025

File tree

11 files changed

+58
-17
lines changed

11 files changed

+58
-17
lines changed

src/aliceVision/mvsUtils/MultiViewParams.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ MultiViewParams::MultiViewParams(const sfmData::SfMData& sfmData,
5858
{
5959
const sfmData::View& view = *(viewPair.second.get());
6060

61-
if (!sfmData.isPoseAndIntrinsicDefined(&view))
61+
if (!sfmData.isPoseAndIntrinsicDefined(view))
6262
continue;
6363

6464
std::string path = view.getImage().getImagePath();

src/aliceVision/sfm/bundle/BundleAdjustmentCeres.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -422,7 +422,7 @@ void BundleAdjustmentCeres::addIntrinsicsToProblem(const sfmData::SfMData& sfmDa
422422
if (intrinsicsUsage.find(view.getIntrinsicId()) == intrinsicsUsage.end())
423423
intrinsicsUsage[view.getIntrinsicId()] = 0;
424424

425-
if (sfmData.isPoseAndIntrinsicDefined(&view))
425+
if (sfmData.isPoseAndIntrinsicDefined(view))
426426
++intrinsicsUsage.at(view.getIntrinsicId());
427427
}
428428

src/aliceVision/sfm/pipeline/relativePoses.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
#include <aliceVision/numeric/numeric.hpp>
99
#include <aliceVision/dataio/json.hpp>
1010
#include <aliceVision/geometry/lie.hpp>
11+
#include <aliceVision/geometry/Pose3.hpp>
1112

1213
namespace aliceVision {
1314
namespace sfm {

src/aliceVision/sfm/utils/alignment.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -762,7 +762,7 @@ void computeNewCoordinateSystemFromCamerasXAxis(const sfmData::SfMData& sfmData,
762762
{
763763
const sfmData::View& view = *viewIt.second.get();
764764

765-
if (sfmData.isPoseAndIntrinsicDefined(&view))
765+
if (sfmData.isPoseAndIntrinsicDefined(view))
766766
{
767767
const sfmData::EEXIFOrientation orientation = view.getImage().getMetadataOrientation();
768768
const sfmData::CameraPose camPose = sfmData.getPose(view);
@@ -804,7 +804,7 @@ void computeNewCoordinateSystemFromCamerasXAxis(const sfmData::SfMData& sfmData,
804804
{
805805
const sfmData::View& view = *viewIt.second.get();
806806

807-
if (sfmData.isPoseAndIntrinsicDefined(&view))
807+
if (sfmData.isPoseAndIntrinsicDefined(view))
808808
{
809809
const sfmData::EEXIFOrientation orientation = view.getImage().getMetadataOrientation();
810810
const sfmData::CameraPose camPose = sfmData.getPose(view);
@@ -1010,7 +1010,7 @@ IndexT getCenterCameraView(const sfmData::SfMData& sfmData)
10101010
for (auto& viewIt : sfmData.getViews())
10111011
{
10121012
const sfmData::View& v = *viewIt.second;
1013-
if (!sfmData.isPoseAndIntrinsicDefined(&v))
1013+
if (!sfmData.isPoseAndIntrinsicDefined(v))
10141014
continue;
10151015
const auto& pose = sfmData.getPose(v);
10161016
const double dist = (pose.getTransform().center() - camerasCenter).norm();

src/aliceVision/sfmData/SfMData.hpp

Lines changed: 43 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -280,6 +280,45 @@ class SfMData
280280
return isIntrinsicDefined(*_views.at(viewId));
281281
}
282282

283+
/**
284+
* @brief Check if the given view have defined intrinsi
285+
* @param[in] view The given view
286+
* @return true if intrinsic and pose defined
287+
*/
288+
bool isPoseAndIntrinsicDefined(const View & view) const
289+
{
290+
IndexT poseId = view.getPoseId();
291+
if (poseId == UndefinedIndexT)
292+
{
293+
return false;
294+
}
295+
296+
IndexT intrinsicId = view.getIntrinsicId();
297+
if (intrinsicId == UndefinedIndexT)
298+
{
299+
return false;
300+
}
301+
302+
if (_intrinsics.find(view.getIntrinsicId()) == _intrinsics.end())
303+
{
304+
return false;
305+
}
306+
307+
auto it = _poses.find(view.getPoseId());
308+
if (it == _poses.end())
309+
{
310+
return false;
311+
}
312+
313+
bool rigValid = ((!view.isPartOfRig() || view.isPoseIndependant() || getRigSubPose(view).status != ERigSubPoseStatus::UNINITIALIZED));
314+
if (!rigValid)
315+
{
316+
return false;
317+
}
318+
319+
return true;
320+
}
321+
283322
/**
284323
* @brief Check if the given view have defined intrinsi
285324
* @param[in] view The given view
@@ -288,10 +327,11 @@ class SfMData
288327
bool isPoseAndIntrinsicDefined(const View* view) const
289328
{
290329
if (view == nullptr)
330+
{
291331
return false;
292-
return (view->getIntrinsicId() != UndefinedIndexT && view->getPoseId() != UndefinedIndexT &&
293-
(!view->isPartOfRig() || view->isPoseIndependant() || getRigSubPose(*view).status != ERigSubPoseStatus::UNINITIALIZED) &&
294-
_intrinsics.find(view->getIntrinsicId()) != _intrinsics.end() && _poses.find(view->getPoseId()) != _poses.end());
332+
}
333+
334+
return isPoseAndIntrinsicDefined(*view);
295335
}
296336

297337
/**

src/software/export/main_exportAnimatedCamera.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ int aliceVision_main(int argc, char** argv)
205205
sfmDataExport.getViews().emplace(view.getViewId(), viewPair.second);
206206

207207
// Export intrinsics with at least one view with a valid pose
208-
if (sfmData.isPoseAndIntrinsicDefined(&view))
208+
if (sfmData.isPoseAndIntrinsicDefined(view))
209209
{
210210
// std::map::emplace does nothing if the key already exist
211211
sfmDataExport.getIntrinsics().emplace(view.getIntrinsicId(), sfmData.getIntrinsics().at(view.getIntrinsicId()));
@@ -363,7 +363,7 @@ int aliceVision_main(int argc, char** argv)
363363

364364
// Pose and intrinsic defined
365365
// Note: we use "sfmData" and not "sfmDataExport" to have access to poses
366-
if (!sfmData.isPoseAndIntrinsicDefined(&view))
366+
if (!sfmData.isPoseAndIntrinsicDefined(view))
367367
continue;
368368

369369
std::string cameraName = view.getImage().getMetadataMake() + "_" + view.getImage().getMetadataModel();

src/software/export/main_exportMatlab.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ bool exportToMatlab(const SfMData& sfm_data, const std::string& outDirectory)
8484
for (const auto& v : sfm_data.getViews())
8585
{
8686
const View& view = *v.second.get();
87-
if (!sfm_data.isPoseAndIntrinsicDefined(&view))
87+
if (!sfm_data.isPoseAndIntrinsicDefined(view))
8888
continue;
8989

9090
const Pose3 pose = sfm_data.getPose(view).getTransform();
@@ -111,7 +111,7 @@ bool exportToMatlab(const SfMData& sfm_data, const std::string& outDirectory)
111111
for (const auto& v : sfm_data.getViews())
112112
{
113113
const View& view = *v.second.get();
114-
if (!sfm_data.isPoseAndIntrinsicDefined(&view))
114+
if (!sfm_data.isPoseAndIntrinsicDefined(view))
115115
continue;
116116
const IntrinsicBase& intrinsics = *sfm_data.getIntrinsics().at(view.getIntrinsicId()).get();
117117
cameraIntrinsicsFile << view.getViewId() << " " << camera::EINTRINSIC_enumToString(intrinsics.getType());

src/software/pipeline/main_incrementalSfM.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,7 @@ int aliceVision_main(int argc, char** argv)
235235
{
236236
// lock all reconstructed views intrinsics
237237
const sfmData::View& view = *(viewPair.second);
238-
if (sfmData.isPoseAndIntrinsicDefined(&view))
238+
if (sfmData.isPoseAndIntrinsicDefined(view))
239239
sfmData.getIntrinsics().at(view.getIntrinsicId())->lock();
240240
}
241241
}

src/software/pipeline/main_panoramaWarping.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ bool computeOptimalPanoramaSize(std::pair<int, int>& optimalSize, const sfmData:
4646
{
4747
// Ignore non positionned views
4848
const sfmData::View& view = *viewIt.second.get();
49-
if (!sfmData.isPoseAndIntrinsicDefined(&view))
49+
if (!sfmData.isPoseAndIntrinsicDefined(view))
5050
{
5151
continue;
5252
}
@@ -250,7 +250,7 @@ int aliceVision_main(int argc, char** argv)
250250

251251
// Retrieve view
252252
const sfmData::View& view = *viewIt;
253-
if (!sfmData.isPoseAndIntrinsicDefined(&view))
253+
if (!sfmData.isPoseAndIntrinsicDefined(view))
254254
{
255255
continue;
256256
}

src/software/pipeline/main_sfmExpanding.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ int aliceVision_main(int argc, char** argv)
137137
// lock all reconstructed views intrinsics
138138
const sfmData::View& view = *(viewPair.second);
139139

140-
if (sfmData.isPoseAndIntrinsicDefined(&view))
140+
if (sfmData.isPoseAndIntrinsicDefined(view))
141141
{
142142
sfmData.getIntrinsics().at(view.getIntrinsicId())->lock();
143143
}

0 commit comments

Comments
 (0)