v1
This commit is contained in:
111
src/FullSystem/ImmaturePoint.h
Normal file
111
src/FullSystem/ImmaturePoint.h
Normal file
@@ -0,0 +1,111 @@
|
||||
/**
|
||||
* This file is part of DSO.
|
||||
*
|
||||
* Copyright 2016 Technical University of Munich and Intel.
|
||||
* Developed by Jakob Engel <engelj at in dot tum dot de>,
|
||||
* for more information see <http://vision.in.tum.de/dso>.
|
||||
* If you use this code, please cite the respective publications as
|
||||
* listed on the above website.
|
||||
*
|
||||
* DSO is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* DSO is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with DSO. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
|
||||
#pragma once
|
||||
|
||||
|
||||
#include "util/NumType.h"
|
||||
|
||||
#include "FullSystem/HessianBlocks.h"
|
||||
namespace dso
|
||||
{
|
||||
|
||||
|
||||
struct ImmaturePointTemporaryResidual
|
||||
{
|
||||
public:
|
||||
ResState state_state;
|
||||
double state_energy;
|
||||
ResState state_NewState;
|
||||
double state_NewEnergy;
|
||||
FrameHessian* target;
|
||||
};
|
||||
|
||||
|
||||
enum ImmaturePointStatus {
|
||||
IPS_GOOD=0, // traced well and good
|
||||
IPS_OOB, // OOB: end tracking & marginalize!
|
||||
IPS_OUTLIER, // energy too high: if happens again: outlier!
|
||||
IPS_SKIPPED, // traced well and good (but not actually traced).
|
||||
IPS_BADCONDITION, // not traced because of bad condition.
|
||||
IPS_UNINITIALIZED}; // not even traced once.
|
||||
|
||||
|
||||
class ImmaturePoint
|
||||
{
|
||||
public:
|
||||
EIGEN_MAKE_ALIGNED_OPERATOR_NEW;
|
||||
// static values
|
||||
float color[MAX_RES_PER_POINT];
|
||||
float weights[MAX_RES_PER_POINT];
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Mat22f gradH;
|
||||
Vec2f gradH_ev;
|
||||
Mat22f gradH_eig;
|
||||
float energyTH;
|
||||
float u,v;
|
||||
FrameHessian* host;
|
||||
int idxInImmaturePoints;
|
||||
|
||||
float quality;
|
||||
|
||||
float my_type;
|
||||
|
||||
float idepth_min;
|
||||
float idepth_max;
|
||||
ImmaturePoint(int u_, int v_, FrameHessian* host_, float type, CalibHessian* HCalib);
|
||||
~ImmaturePoint();
|
||||
|
||||
ImmaturePointStatus traceOn(FrameHessian* frame, const Mat33f &hostToFrame_KRKi, const Vec3f &hostToFrame_Kt, const Vec2f &hostToFrame_affine, CalibHessian* HCalib, bool debugPrint=false);
|
||||
|
||||
ImmaturePointStatus lastTraceStatus;
|
||||
Vec2f lastTraceUV;
|
||||
float lastTracePixelInterval;
|
||||
|
||||
float idepth_GT;
|
||||
|
||||
double linearizeResidual(
|
||||
CalibHessian * HCalib, const float outlierTHSlack,
|
||||
ImmaturePointTemporaryResidual* tmpRes,
|
||||
float &Hdd, float &bd,
|
||||
float idepth);
|
||||
float getdPixdd(
|
||||
CalibHessian * HCalib,
|
||||
ImmaturePointTemporaryResidual* tmpRes,
|
||||
float idepth);
|
||||
|
||||
float calcResidual(
|
||||
CalibHessian * HCalib, const float outlierTHSlack,
|
||||
ImmaturePointTemporaryResidual* tmpRes,
|
||||
float idepth);
|
||||
|
||||
private:
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user