Basic Image AlgorithmS Library
2.8.0
|
A class for representing epipolar lines with useful functions like ScanLine(). More...
#include <Geometry/EpipolarLine.hh>
Public Types | |
typedef HOMGLINE2D_TYPE | value_type |
Public Member Functions | |
void | AddDebugLevel (const long int lv) |
void | AddDebugLevel (const std::string &name) |
bool | DebugLevelIsSet (const long int lv) const |
bool | DebugLevelIsSet (const std::string &name) const |
HOMGLINE2D_TYPE | Distance (const HomgPoint2D &point) |
calculates distance of a point from line More... | |
HOMGLINE2D_TYPE | DistanceSquared (const HomgPoint2D &point) |
calculates squared distance of a point from line More... | |
template<class PixelType > | |
void | Draw (Image< PixelType > &im) |
draws (*this) into image (only from Pinf to epipole More... | |
template<class PixelType > | |
void | DrawWhole (Image< PixelType > &im) |
draws infinite line in image, not stopping at epipole More... | |
EpipolarLine () | |
EpipolarLine (const EpipolarLine &line) | |
EpipolarLine (const Vector3< HOMGLINE2D_TYPE > &vec) | |
double | GetAngle () const |
angle to abszissa (-pi, pi] More... | |
virtual enum TEdge | GetCloseEdge () const |
virtual HomgPoint2D & | GetCloseIntersectionWithImageBorder () |
virtual HomgPoint2D | GetCopyOfCloseIntersectionWithImageBorder () const |
virtual HomgPoint2D | GetCopyOfEpipole () const |
virtual HomgPoint2D | GetCopyOfFarIntersectionWithImageBorder () const |
int | GetDebugLevel () const |
std::ostream & | GetDebugStream () const |
void | GetDebugStream (std::ostream &os) const |
virtual double | GetDeltaR () const |
double | GetDx () const |
double | GetDy () const |
virtual HomgPoint2D & | GetEpipole () |
virtual enum HomgPoint2D::EPosition | GetEpipolePosition () const |
virtual enum TEdge | GetFarEdge () const |
virtual HomgPoint2D & | GetFarIntersectionWithImageBorder () |
void | GetImageBoundaries (double &minx, double &miny, double &maxx, double &maxy) const |
virtual unsigned int | GetImageHeight () const |
virtual unsigned int | GetImageWidth () const |
bool | GetIntersectionsWithImage (unsigned int width, unsigned int height, unsigned int coo[4]) |
! assumes line is given in pixel coo ! returns true if line intersects with image of given size returns intersections with image ( x1 = coo[0], y1 = coo[1], x2 = coo[2], y2 = coo[3] ) for usage with DrawLine More... | |
enum TLineType | GetLineType () const |
return type, E_NE if 0 < slope < 45 degree NE_N if 45 < slop < 90 ... More... | |
virtual void | GetNextLine (bool clockwise, EpipolarLine &next, double dist=1.0) |
returns next line with maximal possible distance without pixel loss More... | |
void | GetPerpendicularLine (HomgPoint2D &point, HomgLine2D &perpline) |
return perpendicular line throug point More... | |
virtual double | GetRMax () const |
distance epipole - far intersection with image border More... | |
virtual double | GetRMin () const |
distance epipole - close intersection with image border More... | |
double | GetROffset () const |
HomgPoint2D & | GetTransformedEnd () |
HomgPoint2D | GetTransformedEnd () const |
HomgPoint2D & | GetTransformedStart () |
HomgPoint2D | GetTransformedStart () const |
HOMGLINE2D_TYPE | GetW () |
returns length of hypothenuse in gradient triangle More... | |
void | Homogenize () |
aequivalent to homogenize for points the gradient triangle is normed to hypothenuse length of 1 More... | |
virtual void | Init (const double &minx, const double &miny, const double &maxx, const double &maxy, HomgPoint2D &epipole, HomgPoint2D &otherpoint, enum HomgPoint2D::EPosition epos) |
virtual void | Init (unsigned int width, unsigned int height, HomgPoint2D &epipole, HomgPoint2D &otherpoint, enum HomgPoint2D::EPosition epos) |
virtual void | Init (unsigned int width, unsigned int height, HomgPoint2D &epipole, HomgPoint2D &otherpoint) |
initialize epipolar line with the two endpoints More... | |
void | Intersection (const HomgLine2D &line, HomgPoint2D &intersect) const |
calculates homogenized intersection of two lines More... | |
HomgPoint2D | Intersection (const HomgLine2D &line) const |
calls the above More... | |
long int | Name2DebugLevel (const std::string &name) const |
looks up a debuglevel in the internal map, returns 0 if not found More... | |
long int | NewDebugLevel (const std::string &name) |
creates a new debuglevel More... | |
virtual EpipolarLine & | operator= (const EpipolarLine &line) |
void | PrintDebugLevel (std::ostream &os=std::cout) const |
int | Recalc (unsigned int width, unsigned int height, HomgPoint2D &epipole, enum HomgPoint2D::EPosition epos) |
assumes that data_ is already set More... | |
int | Recalc (const double &minx, const double &miny, const double &maxx, const double &maxy, HomgPoint2D &epipole, enum HomgPoint2D::EPosition epos) |
assumes that data_ is already set More... | |
int | Recalc () |
assumes Width, Height_, data_ and Epipole_ are set correct before More... | |
void | RemoveDebugLevel (const long int lv) |
void | RemoveDebugLevel (const std::string &name) |
virtual double | ScanLine (Image< unsigned char > &source, HomgPoint2D &epipole, enum HomgPoint2D::EPosition epos, double RMin, double RMax, bool forward, unsigned int &length, unsigned char *Destination) |
scans epipolar line using bresenham, midpint alg. More... | |
void | Set (const HomgPoint2D &p1, const HomgPoint2D &p2) |
constructing a line through two points More... | |
void | SetDebugLevel (const long int lv) |
void | SetDebugLevel (const std::string &name) |
void | SetDebugStream (const std::ostream &os) |
void | SetEpipole (HomgPoint2D &ep) |
void | ShowDebugLevel (std::ostream &os=std::cout) const |
prints all internally known debuglevels More... | |
virtual | ~EpipolarLine () |
Set Functions | |
void | Set (const HOMGLINE2D_TYPE *pv) |
copy the array of vectorsize beginning at *T to this->data_ More... | |
void | Set (const HOMGLINE2D_TYPE &scalar) |
set all elements to a scalar value More... | |
void | Set (const HOMGLINE2D_TYPE &x, const HOMGLINE2D_TYPE &y, const HOMGLINE2D_TYPE &z) |
set elementwise with given scalar values More... | |
void | Set (const Vector< HOMGLINE2D_TYPE > &vec) |
Sets this form elements of Vector<T>. More... | |
void | SetZero () |
set all values to 0 More... | |
void | clear () |
stl conform interface More... | |
Iterator Functions | |
HOMGLINE2D_TYPEconst * | begin () const |
Iterator to first component of vector. More... | |
HOMGLINE2D_TYPE * | begin () |
HOMGLINE2D_TYPEconst * | end () const |
Iterator pointing to one element after the last vector element. More... | |
HOMGLINE2D_TYPE * | end () |
Get Functions | |
const unsigned int | Size () const |
const unsigned int | size () const |
const unsigned int | GetNumElements () const |
bool | IsZero () const |
double | Length () const |
returns the Euclidean Length of the Vector More... | |
const HOMGLINE2D_TYPE * | GetData () const |
get the data pointer the member function itself is const (before {..}) because it doesn't change the this object. More... | |
HOMGLINE2D_TYPE * | GetData () |
HOMGLINE2D_TYPE | NormL1 () const |
Return the L1 norm: |a| + |b| + |c|. More... | |
double | NormL2 () const |
the L2 norm sqrt(a^2 + b^2 + c^2) More... | |
double | Dist (const Vector3< HOMGLINE2D_TYPE > &vec) const |
Return the euclidean distance of 2 vectors. More... | |
double | DistLinf (const Vector3< HOMGLINE2D_TYPE > &vec) const |
Return the L inf distance of 2 vectors. More... | |
Normalization | |
Vector3< HOMGLINE2D_TYPE > & | Normalize () |
normalize this vector to length 1 More... | |
Vector3< HOMGLINE2D_TYPE > & | Normalize (Matrix3x3< HOMGLINE2D_TYPE > &cov) |
normalizes the vector to 1 and transfroms the associated covariance matrix More... | |
BIAS::Vector3< HOMGLINE2D_TYPE > | GetNormalized () const |
return a normalized vector of this More... | |
Arithmetic | |
void | CrossProduct (const Vector3< HOMGLINE2D_TYPE > &argvec, Vector3< HOMGLINE2D_TYPE > &destvec) const |
cross product of two vectors destvec = this x argvec More... | |
Vector3< HOMGLINE2D_TYPE > | CrossProduct (const Vector3< HOMGLINE2D_TYPE > &argvec) const |
void | ScalarProduct (const Vector3< HOMGLINE2D_TYPE > &argvec, HOMGLINE2D_TYPE &result) const |
scalar product (=inner product) of two vectors, storing the result in result More... | |
HOMGLINE2D_TYPE | ScalarProduct (const Vector3< HOMGLINE2D_TYPE > &argvec) const |
scalar product (=inner product) of two vectors returns a scalar More... | |
void | ElementwiseProduct (const Vector3< HOMGLINE2D_TYPE > &argvec, Vector3< HOMGLINE2D_TYPE > &destvec) const |
multiply two vectors elementwise and store the result vector to destvec More... | |
Vector3< HOMGLINE2D_TYPE > | ElementwiseProduct (const Vector3< HOMGLINE2D_TYPE > &argvec) const |
multiply two vectors elementwise and return the result vector More... | |
void | ElementwiseDivision (const Vector3< HOMGLINE2D_TYPE > &argvec, Vector3< HOMGLINE2D_TYPE > &destvec) const |
Vector3< HOMGLINE2D_TYPE > | ElementwiseDivision (const Vector3< HOMGLINE2D_TYPE > &argvec) const |
divide elementwise More... | |
void | AddIP (const HOMGLINE2D_TYPE &scalar) |
Addition (in place) of an scalar. More... | |
void | AddIP (const Vector3< HOMGLINE2D_TYPE > &argvec) |
in place adding More... | |
void | Add (const HOMGLINE2D_TYPE &scalar, Vector3< HOMGLINE2D_TYPE > &dest) const |
Addition with a scalar, storing results in destionation vector. More... | |
void | Add (const Vector3< HOMGLINE2D_TYPE > &argvec, Vector3< HOMGLINE2D_TYPE > &destvec) const |
adding of two vectors, storing the result in destvec More... | |
void | SubIP (const HOMGLINE2D_TYPE &scalar) |
Substraction (in place) of an scalar. More... | |
void | SubIP (const Vector3< HOMGLINE2D_TYPE > &argvec) |
in place substraction More... | |
void | Sub (const HOMGLINE2D_TYPE &scalar, Vector3< HOMGLINE2D_TYPE > &dest) const |
Substraction with a scalar, storing results in destination vector. More... | |
void | Sub (const Vector3< HOMGLINE2D_TYPE > &argvec, Vector3< HOMGLINE2D_TYPE > &destvec) const |
subtracting of two Vectors, storing the result in destvec More... | |
void | MultiplyIP (const HOMGLINE2D_TYPE &scalar) |
Multiplication (in place) of an scalar. More... | |
void | MultIP (const HOMGLINE2D_TYPE &scalar) |
void | Multiply (const HOMGLINE2D_TYPE &scalar, Vector3< HOMGLINE2D_TYPE > &dest) const |
Multiplication with a scalar, storing results in destination vector. More... | |
void | Mult (const HOMGLINE2D_TYPE &scalar, Vector3< HOMGLINE2D_TYPE > &dest) const |
void | DivideIP (const HOMGLINE2D_TYPE &scalar) |
Division (in place) of an scalar. More... | |
void | DivIP (const HOMGLINE2D_TYPE &scalar) |
void | Divide (const HOMGLINE2D_TYPE &scalar, Vector3< HOMGLINE2D_TYPE > &dest) const |
Division with a scalar, storing results in destination vector. More... | |
void | Div (const HOMGLINE2D_TYPE &scalar, Vector3< HOMGLINE2D_TYPE > &dest) const |
Misc | |
void | OuterProduct (const Vector3< HOMGLINE2D_TYPE > &v, Matrix3x3< HOMGLINE2D_TYPE > &res) const |
outer product, constructs a matrix. More... | |
Matrix3x3< HOMGLINE2D_TYPE > | OuterProduct (const Vector3< HOMGLINE2D_TYPE > &v) const |
Matrix< HOMGLINE2D_TYPE > | GetSkewSymmetricMatrix () const |
constructs a skew symmetric 3x3 matrix from (*this), which can be used instead of the cross product More... | |
BIAS::Vector3< HOMGLINE2D_TYPE > | CoordSphereToEuclidean () const |
coordinate transfrom. More... | |
BIAS::Vector3< HOMGLINE2D_TYPE > | PolarToCartesian () const |
BIAS::Vector3< HOMGLINE2D_TYPE > | CoordSphereToEuclidian () const |
BIAS::Vector3< HOMGLINE2D_TYPE > | CoordEuclideanToSphere () const |
coordinate transform. More... | |
BIAS::Vector3< HOMGLINE2D_TYPE > | CartesianToPolar () const |
BIAS::Vector3< HOMGLINE2D_TYPE > | CoordEuclidianToSphere () const |
HOMGLINE2D_TYPE & | Radius () |
r for polar/sphere content JW More... | |
HOMGLINE2D_TYPE | Radius () const |
HOMGLINE2D_TYPE & | Phi () |
HOMGLINE2D_TYPE | Phi () const |
HOMGLINE2D_TYPE & | Theta () |
HOMGLINE2D_TYPE | Theta () const |
int | LoadBogTC (const std::string &filename) |
reads the TC part of a BOG file which is used by Daimler Chrysler for storing Camera center position. More... | |
bool | Load (const std::string &filename) |
method to load directly from a given filename. More... | |
bool | Save (const std::string &filename) const |
method to save directly to a given filename. More... | |
Operators | |
const HOMGLINE2D_TYPE & | operator[] (const int i) const |
access an element of the vector with 0-based indizes. More... | |
HOMGLINE2D_TYPE & | operator[] (const int i) |
access an element of the vector with 0-based indizes. More... | |
bool | operator== (const Vector3< HOMGLINE2D_TYPE > &arg) const |
Comparison operator 'equal'. More... | |
bool | operator!= (const Vector3< HOMGLINE2D_TYPE > &arg) const |
Comparison operator 'not equal'. More... | |
Static Public Member Functions | |
template<class PixelType > | |
static void | DrawDistortedLine (const Vector3< double > &epipoleRayOrigImage, const Vector3< double > &infRayOrigImage, Image< PixelType > &image, ProjectionParametersBase *paramsOrig, PixelType *Color=NULL, int lineWidth=1) |
project the plane given by two local rays and the camera center into the image (ANY projection) using cubemapping More... | |
static long int | GetGlobalDebugLevel () |
template<class PixelType > | |
static void | ProjectEpipolarPlane (const Projection &thisP, Image< PixelType > &thisIm, const Vector3< double > &otherCamCenter, const Vector3< double > &RayDir, PixelType *Color=NULL, int lineWidth=1) |
visualize the epipolar plane/line as a curve in the image for any Projection More... | |
static void | SetGlobalDebugLevel (long int lev) |
Protected Member Functions | |
virtual void | CalcTransformed_ () |
long | ConsumeNextFreeDebuglevel_ () |
returns the next available debuglevel More... | |
bool | DetermineIntersectionsAndEpipoleDistances_ (HomgPoint2D &point) |
virtual void | Interpolate_ (enum TLineType &type, unsigned char **ida, int &x, int &y, double &g, unsigned char &result) |
virtual double | ScanLine_ (Image< unsigned char > &source, unsigned int ROffset, unsigned int &length, unsigned char *Destination, bool forward) |
Static Protected Attributes | |
static std::ostream | _zDebugStream |
static long int | GlobalDebugLevel = 0 |
A class for representing epipolar lines with useful functions like ScanLine().
Coordinate system is image coo system with origin in upper left image corner. Epipole and point at infinty is also stored
Definition at line 69 of file EpipolarLine.hh.
|
inherited |
Definition at line 76 of file Vector3.hh.
EpipolarLine::EpipolarLine | ( | ) |
Definition at line 57 of file EpipolarLine.cpp.
References Angle_, CloseIntersection_, Current_, DeltaR_, dx_, dy_, Epipole_, FarIntersection_, maxx_, maxy_, minx_, miny_, PInfinity_, RMaxLine_, RMinLine_, BIAS::HomgPoint2D::Set(), TransformedCurrent_, TransformedEnd_, and TransformedStart_.
EpipolarLine::EpipolarLine | ( | const EpipolarLine & | line | ) |
Definition at line 70 of file EpipolarLine.cpp.
References Angle_, CloseEdge_, CloseIntersection_, dx_, dy_, Epipole_, EpipolePosition_, FarIntersection_, GetAngle(), GetCloseEdge(), GetCopyOfCloseIntersectionWithImageBorder(), GetCopyOfEpipole(), GetCopyOfFarIntersectionWithImageBorder(), GetDx(), GetDy(), GetEpipolePosition(), GetFarEdge(), GetImageBoundaries(), GetLineType(), GetRMax(), GetRMin(), maxx_, maxy_, minx_, miny_, RMaxLine_, RMinLine_, and Type_.
BIAS::EpipolarLine::EpipolarLine | ( | const Vector3< HOMGLINE2D_TYPE > & | vec | ) |
|
virtual |
Definition at line 118 of file EpipolarLine.cpp.
|
inlineinherited |
Addition with a scalar, storing results in destionation vector.
|
inlineinherited |
adding of two vectors, storing the result in destvec
|
inlineinherited |
Definition at line 355 of file Debug.hh.
Referenced by BIAS::GLProjectionParametersBase::AddDebugLevel(), BIAS::Triangulation::CorrectCorrespondences(), BIAS::FilterBase< InputStorageType, OutputStorageType >::FilterBase(), BIAS::ShowCamWxVideoSourceFactory::OpenDevice(), and BIAS::SceneOpenSceneGraph::SceneOpenSceneGraph().
|
inlineinherited |
|
inlineinherited |
Addition (in place) of an scalar.
Definition at line 310 of file Vector3.hh.
|
inlineinherited |
in place adding
Definition at line 349 of file Vector3.hh.
|
inlineinherited |
Iterator to first component of vector.
Definition at line 134 of file Vector3.hh.
|
inlineinherited |
Definition at line 137 of file Vector3.hh.
|
protectedvirtual |
Definition at line 437 of file EpipolarLine.cpp.
References CloseIntersection_, Current_, BIAS::Vector3< HOMGLINE2D_TYPE >::data_, dx_, dy_, End_, FarIntersection_, BIAS::EightWaySymmetryHomg::InverseTransform(), RMaxLine_, RMinLine_, Start_, Sym_, BIAS::EightWaySymmetryHomg::Transform(), TransformedCurrent_, TransformedEnd_, TransformedStart_, and Type_.
Referenced by ScanLine(), and ScanLine_().
|
inlineinherited |
Definition at line 422 of file Vector3.hh.
|
inlineinherited |
stl conform interface
|
inlineprotectedinherited |
|
inherited |
coordinate transform.
compute the sphere coordinates(r, phi, theta) for (this) given euclidean point p=(x,y,z) with radius : distance to center, theta : radian angle between positive z-axis and p=(x,y,z). (0-pi) phi : radian angle between positive x-axis and projection of p=(x,y,z) into XY plane. (0-2pi) assume (x,y,z) is in orthogonal right-hand-system.
|
inlineinherited |
Definition at line 426 of file Vector3.hh.
|
inherited |
coordinate transfrom.
compute the euclidean coord p=(x,y,z) for (this) given sphere coord sph=(radius, phi, theta) with radius : distance to center, theta : radian angle between positive z-axis and p=(x,y,z). (0-pi) phi : radian angle between positive x-axis and projection of p=(x,y,z) into XY plane. (0-2pi) assume (x,y,z) is in orthogonal right-hand-system.
|
inlineinherited |
Definition at line 407 of file Vector3.hh.
|
inlineinherited |
cross product of two vectors destvec = this x argvec
Referenced by BIAS::HomgLine2D::Intersection().
|
inlineinherited |
Definition at line 267 of file Vector3.hh.
|
inlineinherited |
Definition at line 341 of file Debug.hh.
Referenced by BIAS::GenSynthMatches::_AddUniformDistributedOutliers(), BIAS::GenSynthMatches::_CreateCamMovement(), BIAS::GenSynthMatches::_CreateStatic2DPoints(), BIAS::UnscentedTransform::ComputeSigmaPoints_(), BIAS::Triangulation::CorrectCorrespondences(), BIAS::GenSynthMatches::GetGTNormalizedF(), BIAS::MonteCarloTransform::GetSamples_(), and BIAS::MonteCarloTransform::Transform().
|
inlineinherited |
|
protected |
the lines describing the image borders
compute the intersection of the image borders with the epipolar lines
Definition at line 487 of file EpipolarLine.cpp.
References CloseEdge_, CloseIntersection_, BIAS::TIntersect::Edge, Epipole_, BIAS::TIntersect::EpipoleDistance, FarIntersection_, GetCloseIntersectionWithImageBorder(), GetFarIntersectionWithImageBorder(), BIAS::HomgLine2D::Intersection(), BIAS::TIntersect::IntersectsInImage, maxx_, maxy_, minx_, miny_, BIAS::Point, BIAS::TIntersect::Point, RMaxLine_, RMinLine_, and BIAS::HomgPoint2D::Set().
Referenced by Init(), Recalc(), and ScanLine().
|
inlineinherited |
Return the euclidean distance of 2 vectors.
|
inlineinherited |
calculates distance of a point from line
Definition at line 78 of file HomgLine2D.hh.
|
inlineinherited |
calculates squared distance of a point from line
Definition at line 160 of file HomgLine2D.hh.
References BIAS::Vector3< HOMGLINE2D_TYPE >::data_.
|
inlineinherited |
Return the L inf distance of 2 vectors.
|
inlineinherited |
Definition at line 343 of file Vector3.hh.
|
inlineinherited |
Division with a scalar, storing results in destination vector.
|
inlineinherited |
Division (in place) of an scalar.
|
inlineinherited |
Definition at line 338 of file Vector3.hh.
void EpipolarLine::Draw | ( | Image< PixelType > & | im | ) |
draws (*this) into image (only from Pinf to epipole
Definition at line 648 of file EpipolarLine.cpp.
References BIAS::HomgPoint2D::Center, BIAS::Vector3< HOMGLINE2D_TYPE >::end(), Epipole_, EpipolePosition_, GetCloseIntersectionWithImageBorder(), GetFarIntersectionWithImageBorder(), BIAS::ImageDraw< StorageType >::Line(), PInfinity_, PInfinityPosition_, and BIAS::ImageDraw< StorageType >::RectangleCenter().
|
static |
project the plane given by two local rays and the camera center into the image (ANY projection) using cubemapping
Constructs a cubemap with 90 degrees fov for each cube face and computes the projection of the plane onto the cubefaces (bresenham on the lines). Forward mapping is used to determine the pixels in the original image which are marked as being on the line
Definition at line 712 of file EpipolarLine.cpp.
References BIAS::Vector3< T >::CrossProduct(), BIAS::HomgPoint2D::DeterminePosition(), BIAS::ProjectionParametersBase::DoesPointProjectIntoImage(), BIAS::Vector3< HOMGLINE2D_TYPE >::end(), BIAS::ProjectionParametersBase::GetC(), BIAS::ImageBase::GetChannelCount(), BIAS::ProjectionParametersSpherical::GetFakeKMatrix(), BIAS::ProjectionParametersBase::GetImageSize(), BIAS::ProjectionParametersPerspective::GetK(), BIAS::Bresenham::GetNext(), BIAS::ProjectionParametersBase::GetR(), BIAS::HomgPoint2D::Homogenize(), BIAS::ProjectionParametersPerspective::IsDistorted(), BIAS::ImageBase::IsPositionInImage(), BIAS::ImageDraw< StorageType >::Line(), BIAS::MatrixIdentity, BIAS::Vector3< T >::NormL2(), BIAS::ProjectionParametersPerspective::ProjectLocal(), BIAS::Vector3< T >::ScalarProduct(), BIAS::ProjectionParametersBase::SetC(), BIAS::ProjectionParametersBase::SetImageSize(), BIAS::ProjectionParametersPerspective::SetK(), BIAS::ProjectionParametersPerspective::SetMinZLocal(), BIAS::Image< StorageType >::SetPixel(), BIAS::ProjectionParametersBase::SetR(), BIAS::Matrix3x3< T >::Transpose(), and BIAS::ProjectionParametersBase::UnProjectToRay().
Referenced by ProjectEpipolarPlane().
void EpipolarLine::DrawWhole | ( | Image< PixelType > & | im | ) |
draws infinite line in image, not stopping at epipole
Definition at line 686 of file EpipolarLine.cpp.
References CloseIntersection_, BIAS::Vector3< HOMGLINE2D_TYPE >::end(), FarIntersection_, BIAS::HomgPoint2D::Homogenize(), BIAS::ImageBase::IsPositionInImage(), and BIAS::ImageDraw< StorageType >::Line().
|
inlineinherited |
|
inlineinherited |
divide elementwise
Definition at line 300 of file Vector3.hh.
|
inlineinherited |
multiply two vectors elementwise and store the result vector to destvec
|
inlineinherited |
multiply two vectors elementwise and return the result vector
Definition at line 288 of file Vector3.hh.
|
inlineinherited |
Iterator pointing to one element after the last vector element.
Definition at line 143 of file Vector3.hh.
Referenced by Draw(), DrawDistortedLine(), and DrawWhole().
|
inlineinherited |
Definition at line 146 of file Vector3.hh.
|
inline |
angle to abszissa (-pi, pi]
Definition at line 100 of file EpipolarLine.hh.
Referenced by EpipolarLine(), GetNextLine(), and operator=().
|
inlinevirtual |
Definition at line 156 of file EpipolarLine.hh.
Referenced by EpipolarLine(), and operator=().
|
inlinevirtual |
Definition at line 142 of file EpipolarLine.hh.
Referenced by DetermineIntersectionsAndEpipoleDistances_(), and Draw().
|
inlinevirtual |
Definition at line 150 of file EpipolarLine.hh.
Referenced by EpipolarLine(), and operator=().
|
inlinevirtual |
Definition at line 90 of file EpipolarLine.hh.
Referenced by EpipolarLine(), and operator=().
|
inlinevirtual |
Definition at line 146 of file EpipolarLine.hh.
Referenced by EpipolarLine(), and operator=().
|
inlineinherited |
get the data pointer the member function itself is const (before {..}) because it doesn't change the this object.
Definition at line 202 of file Vector3.hh.
|
inlineinherited |
Definition at line 203 of file Vector3.hh.
|
inlineinherited |
Definition at line 332 of file Debug.hh.
Referenced by BIAS::listenthread(), BIAS::Image< StorageType >::operator=(), and BIAS::ImageBase::operator=().
|
inlineinherited |
|
inlineinherited |
|
inlinevirtual |
Definition at line 126 of file EpipolarLine.hh.
|
inline |
Definition at line 107 of file EpipolarLine.hh.
Referenced by EpipolarLine(), and operator=().
|
inline |
Definition at line 110 of file EpipolarLine.hh.
Referenced by EpipolarLine(), and operator=().
|
inlinevirtual |
Definition at line 87 of file EpipolarLine.hh.
Referenced by GetNextLine().
|
inlinevirtual |
Definition at line 174 of file EpipolarLine.hh.
Referenced by EpipolarLine(), GetNextLine(), and operator=().
|
inlinevirtual |
Definition at line 153 of file EpipolarLine.hh.
Referenced by EpipolarLine(), and operator=().
|
inlinevirtual |
Definition at line 138 of file EpipolarLine.hh.
Referenced by DetermineIntersectionsAndEpipoleDistances_(), Draw(), and GetNextLine().
|
inlinestaticinherited |
|
inline |
Definition at line 165 of file EpipolarLine.hh.
Referenced by EpipolarLine(), and operator=().
|
inlinevirtual |
Definition at line 162 of file EpipolarLine.hh.
|
inlinevirtual |
Definition at line 159 of file EpipolarLine.hh.
|
inherited |
! assumes line is given in pixel coo ! returns true if line intersects with image of given size returns intersections with image ( x1 = coo[0], y1 = coo[1], x2 = coo[2], y2 = coo[3] ) for usage with DrawLine
Definition at line 28 of file HomgLine2D.cpp.
References BIAS::HomgPoint2D::Homogenize().
Referenced by BIAS::GenGroundTruth::DrawMatches().
|
inline |
return type, E_NE if 0 < slope < 45 degree NE_N if 45 < slop < 90 ...
Definition at line 96 of file EpipolarLine.hh.
Referenced by EpipolarLine(), and operator=().
|
virtual |
returns next line with maximal possible distance without pixel loss
Definition at line 122 of file EpipolarLine.cpp.
References BIAS::Vector3< HOMGLINE2D_TYPE >::data_, GetAngle(), GetEpipole(), GetEpipolePosition(), GetFarIntersectionWithImageBorder(), BIAS::HomgLine2D::Homogenize(), Init(), maxx_, maxy_, minx_, and miny_.
|
inherited |
return a normalized vector of this
norm. to length 1
|
inlineinherited |
Definition at line 187 of file Vector3.hh.
|
inlineinherited |
return perpendicular line throug point
Definition at line 187 of file HomgLine2D.hh.
References BIAS::Vector3< HOMGLINE2D_TYPE >::data_, and BIAS::HomgPoint2D::Homogenize().
Referenced by BIAS::TrifocalTensor::TransferView3().
|
inlinevirtual |
distance epipole - far intersection with image border
Definition at line 134 of file EpipolarLine.hh.
Referenced by EpipolarLine(), and operator=().
|
inlinevirtual |
distance epipole - close intersection with image border
Definition at line 130 of file EpipolarLine.hh.
Referenced by EpipolarLine(), and operator=().
|
inline |
Definition at line 104 of file EpipolarLine.hh.
|
inherited |
constructs a skew symmetric 3x3 matrix from (*this), which can be used instead of the cross product
|
inline |
Definition at line 116 of file EpipolarLine.hh.
|
inline |
Definition at line 122 of file EpipolarLine.hh.
|
inline |
Definition at line 113 of file EpipolarLine.hh.
|
inline |
Definition at line 119 of file EpipolarLine.hh.
|
inlineinherited |
returns length of hypothenuse in gradient triangle
Definition at line 144 of file HomgLine2D.hh.
References BIAS::Vector3< HOMGLINE2D_TYPE >::data_.
Referenced by BIAS::HomgLine2D::Homogenize().
|
inlineinherited |
aequivalent to homogenize for points the gradient triangle is normed to hypothenuse length of 1
Definition at line 149 of file HomgLine2D.hh.
References BIAS::Vector3< HOMGLINE2D_TYPE >::data_, and BIAS::HomgLine2D::GetW().
Referenced by BIAS::FMatrixBase::GetCosAngleErrorHomogenized(), GetNextLine(), Init(), Recalc(), ScanLine(), and BIAS::HomgLine2D::Set().
|
virtual |
Definition at line 223 of file EpipolarLine.cpp.
References Angle_, BIAS::Vector3< T >::CrossProduct(), BIAS::Vector3< HOMGLINE2D_TYPE >::data_, DeltaR_, DetermineIntersectionsAndEpipoleDistances_(), BIAS::EightWaySymmetryHomg::DetermineLineType(), BIAS::HomgPoint2D::DeterminePosition(), Epipole_, EpipolePosition_, FarIntersection_, BIAS::HomgLine2D::Homogenize(), maxx_, maxy_, minx_, miny_, PInfinity_, PInfinityPosition_, Sym_, and Type_.
Referenced by GetNextLine(), and Init().
|
virtual |
Definition at line 211 of file EpipolarLine.cpp.
References Init().
|
virtual |
initialize epipolar line with the two endpoints
Definition at line 254 of file EpipolarLine.cpp.
References BIAS::HomgPoint2D::DeterminePosition(), and Init().
|
protectedvirtual |
Definition at line 361 of file EpipolarLine.cpp.
References BIAS::E_NE, BIAS::LT_Invalid, BIAS::N_NW, BIAS::NE_N, BIAS::NW_W, BIAS::S_SE, BIAS::SE_E, BIAS::SW_S, and BIAS::W_SW.
|
inlineinherited |
calculates homogenized intersection of two lines
Definition at line 180 of file HomgLine2D.hh.
References BIAS::Vector3< HOMGLINE2D_TYPE >::CrossProduct().
Referenced by DetermineIntersectionsAndEpipoleDistances_(), and BIAS::HomgLine2D::Intersection().
|
inlineinherited |
calls the above
Definition at line 172 of file HomgLine2D.hh.
References BIAS::HomgLine2D::Intersection().
|
inlineinherited |
|
inlineinherited |
returns the Euclidean Length of the Vector
Definition at line 193 of file Vector3.hh.
|
inherited |
method to load directly from a given filename.
internally using stream operator
|
inherited |
reads the TC part of a BOG file which is used by Daimler Chrysler for storing Camera center position.
|
inlineinherited |
Definition at line 332 of file Vector3.hh.
|
inlineinherited |
Definition at line 327 of file Vector3.hh.
|
inlineinherited |
Multiplication with a scalar, storing results in destination vector.
|
inlineinherited |
Multiplication (in place) of an scalar.
Definition at line 326 of file Vector3.hh.
|
inlineinherited |
|
inlineinherited |
creates a new debuglevel
Definition at line 474 of file Debug.hh.
Referenced by BIAS::COSAC< SolutionType >::COSAC(), BIAS::ProjectionParametersPerspectiveDepth::Init(), BIAS::MonteCarloTransform::MonteCarloTransform(), BIAS::PMatrixEstimation::PMatrixEstimation(), BIAS::PreemptiveRANSAC< SolutionType >::PreemptiveRANSAC(), BIAS::RANSACPreKnowledge< SolutionType >::RANSACPreKnowledge(), BIAS::ROI::ROI(), BIAS::RotationAveraging::RotationAveraging(), BIAS::SceneOpenSceneGraph::SceneOpenSceneGraph(), BIAS::ThreeDOutOpenSceneGraph::ThreeDOutOpenSceneGraph(), BIAS::Triangulation::Triangulation(), and BIAS::UnscentedTransform::UnscentedTransform().
|
inlineinherited |
normalize this vector to length 1
|
inherited |
normalizes the vector to 1 and transfroms the associated covariance matrix
|
inlineinherited |
Return the L1 norm: |a| + |b| + |c|.
|
inlineinherited |
the L2 norm sqrt(a^2 + b^2 + c^2)
Referenced by ProjectEpipolarPlane().
|
inlineinherited |
Comparison operator 'not equal'.
Definition at line 505 of file Vector3.hh.
|
virtual |
Definition at line 93 of file EpipolarLine.cpp.
References Angle_, CloseEdge_, CloseIntersection_, dx_, dy_, Epipole_, EpipolePosition_, FarIntersection_, GetAngle(), GetCloseEdge(), GetCopyOfCloseIntersectionWithImageBorder(), GetCopyOfEpipole(), GetCopyOfFarIntersectionWithImageBorder(), GetDx(), GetDy(), GetEpipolePosition(), GetFarEdge(), GetImageBoundaries(), GetLineType(), GetRMax(), GetRMin(), maxx_, maxy_, minx_, miny_, RMaxLine_, RMinLine_, and Type_.
|
inlineinherited |
Comparison operator 'equal'.
Definition at line 500 of file Vector3.hh.
|
inlineinherited |
access an element of the vector with 0-based indizes.
read only (no write) member function const because it doesn't change this object
|
inlineinherited |
access an element of the vector with 0-based indizes.
write allowed
|
inherited |
outer product, constructs a matrix.
Often written as (*this) * v^T for col vectors made it fast
|
inlineinherited |
Definition at line 379 of file Vector3.hh.
|
inlineinherited |
Definition at line 436 of file Vector3.hh.
|
inlineinherited |
Definition at line 438 of file Vector3.hh.
|
inlineinherited |
Definition at line 403 of file Vector3.hh.
|
inlineinherited |
|
static |
visualize the epipolar plane/line as a curve in the image for any Projection
The epipolar plane is defined by the centers of two cameras (baseline) and some viewing ray in one of the cameras. This function determines the plane and uses cube-mapping to project it into some image with given arbitrary projection. Forward mapping is used, therefore the line may not be absolutely exact. Calls DrawDistortedLine() after determining paramerters
Definition at line 907 of file EpipolarLine.cpp.
References BIAS::ImageDraw< StorageType >::CircleCenter(), BIAS::Vector3< T >::CrossProduct(), BIAS::Projection::DoesPointProjectIntoImage(), DrawDistortedLine(), BIAS::Projection::GetC(), BIAS::ProjectionParametersBase::GetExternals(), BIAS::Projection::GetParameters(), BIAS::HomgPoint3D, BIAS::HomgPoint2D::Homogenize(), BIAS::Vector3< T >::Normalize(), BIAS::Vector3< T >::NormL2(), BIAS::Vector3< HOMGLINE2D_TYPE >::NormL2(), and BIAS::ImageDraw< StorageType >::RectangleCenter().
|
inlineinherited |
r for polar/sphere content JW
Definition at line 431 of file Vector3.hh.
|
inlineinherited |
Definition at line 433 of file Vector3.hh.
int EpipolarLine::Recalc | ( | unsigned int | width, |
unsigned int | height, | ||
HomgPoint2D & | epipole, | ||
enum HomgPoint2D::EPosition | epos | ||
) |
assumes that data_ is already set
Definition at line 169 of file EpipolarLine.cpp.
References Recalc().
int EpipolarLine::Recalc | ( | const double & | minx, |
const double & | miny, | ||
const double & | maxx, | ||
const double & | maxy, | ||
HomgPoint2D & | epipole, | ||
enum HomgPoint2D::EPosition | epos | ||
) |
assumes that data_ is already set
Definition at line 175 of file EpipolarLine.cpp.
References Epipole_, EpipolePosition_, maxx_, maxy_, minx_, miny_, and Recalc().
int EpipolarLine::Recalc | ( | ) |
assumes Width, Height_, data_ and Epipole_ are set correct before
Definition at line 192 of file EpipolarLine.cpp.
References Angle_, BIAS::Vector3< HOMGLINE2D_TYPE >::data_, DeltaR_, DetermineIntersectionsAndEpipoleDistances_(), BIAS::EightWaySymmetryHomg::DetermineLineType(), Epipole_, FarIntersection_, BIAS::HomgLine2D::Homogenize(), minx_, miny_, Sym_, and Type_.
Referenced by Recalc().
|
inlineinherited |
|
inlineinherited |
|
inherited |
method to save directly to a given filename.
internally using stream operator
|
inlineinherited |
scalar product (=inner product) of two vectors, storing the result in result
|
inlineinherited |
scalar product (=inner product) of two vectors returns a scalar
|
virtual |
scans epipolar line using bresenham, midpint alg.
and 8-way symmetry using minimal necessairy pixel step fills resulting linear interpolated pixels values in Destination allocates Destination if NULL to necessairy size sets length to length of Destination Destination is filled from ROffset on, only if Destination != NULL assumes that HomgLine2D::Vector3<double>::data_ is set
Definition at line 267 of file EpipolarLine.cpp.
References Angle_, CalcTransformed_(), BIAS::Vector3< HOMGLINE2D_TYPE >::data_, DeltaR_, DetermineIntersectionsAndEpipoleDistances_(), BIAS::EightWaySymmetryHomg::DetermineLineType(), Epipole_, EpipolePosition_, FarIntersection_, BIAS::ImageBase::GetHeight(), BIAS::ImageBase::GetWidth(), BIAS::HomgLine2D::Homogenize(), maxx_, maxy_, minx_, miny_, RMaxLine_, RMinLine_, ROffset_, ScanLine_(), Sym_, TransformedEnd_, TransformedStart_, and Type_.
|
protectedvirtual |
Definition at line 315 of file EpipolarLine.cpp.
References BIAS::Image< StorageType >::BilinearInterpolationGrey(), CalcTransformed_(), Current_, dx_, dy_, BIAS::ImageBase::GetHeight(), BIAS::ImageBase::GetWidth(), BIAS::EightWaySymmetryHomg::InverseTransform(), Length_, RMinLine_, ROffset_, Sym_, TransformedCurrent_, TransformedEnd_, and Type_.
Referenced by ScanLine().
|
inlineinherited |
constructing a line through two points
Definition at line 131 of file HomgLine2D.hh.
References BIAS::Vector3< T >::CrossProduct(), BIAS::Vector3< HOMGLINE2D_TYPE >::data_, and BIAS::HomgLine2D::Homogenize().
Referenced by BIAS::GenGroundTruth::DrawMatches(), BIAS::FMatrixBase::GetCosAngleErrorHomogenized(), and BIAS::HomgLine2D::HomgLine2D().
|
inlineinherited |
copy the array of vectorsize beginning at *T to this->data_
|
inlineinherited |
set all elements to a scalar value
Definition at line 160 of file Vector3.hh.
|
inlineinherited |
set elementwise with given scalar values
|
inlineinherited |
Sets this form elements of Vector<T>.
|
inlineinherited |
Definition at line 318 of file Debug.hh.
Referenced by BIAS::ShowCamWxVideoSourceFactory::CreateBumbleBee(), BIAS::ShowCamWxVideoSourceFactory::CreateDCAM(), BIAS::VideoSource_MDcam::ScanBus(), BIAS::GLProjectionParametersBase::SetDebugLevel(), BIAS::VideoSource_Disk::VideoSource_Disk(), BIAS::VideoSource_DV2::VideoSource_DV2(), BIAS::VideoSource_DV::VideoSource_DV_Internal_Init_(), and BIAS::VideoSource_V4L::VideoSource_V4L().
|
inlineinherited |
|
inlineinherited |
|
inline |
Definition at line 84 of file EpipolarLine.hh.
|
inlinestaticinherited |
|
inlineinherited |
set all values to 0
|
inlineinherited |
|
inlineinherited |
Definition at line 183 of file Vector3.hh.
|
inlineinherited |
Definition at line 185 of file Vector3.hh.
|
inlineinherited |
Substraction with a scalar, storing results in destination vector.
|
inlineinherited |
subtracting of two Vectors, storing the result in destvec
|
inlineinherited |
Substraction (in place) of an scalar.
Definition at line 318 of file Vector3.hh.
|
inlineinherited |
in place substraction
Definition at line 359 of file Vector3.hh.
|
inlineinherited |
Definition at line 441 of file Vector3.hh.
|
inlineinherited |
Definition at line 443 of file Vector3.hh.
|
protectedinherited |
Definition at line 510 of file Debug.hh.
Referenced by BIAS::Debug::operator=(), and BIAS::ImageBase::operator=().
|
protectedinherited |
new concept, debuglevel are managed here in the debug class
Definition at line 516 of file Debug.hh.
Referenced by BIAS::Debug::operator=().
|
protectedinherited |
Definition at line 517 of file Debug.hh.
Referenced by BIAS::Debug::operator=().
|
staticprotectedinherited |
Definition at line 511 of file Debug.hh.
Referenced by BIAS::Debug::operator=().
|
protected |
Definition at line 288 of file EpipolarLine.hh.
Referenced by EpipolarLine(), Init(), operator=(), Recalc(), and ScanLine().
|
protected |
Definition at line 292 of file EpipolarLine.hh.
Referenced by DetermineIntersectionsAndEpipoleDistances_(), EpipolarLine(), and operator=().
|
protected |
Definition at line 291 of file EpipolarLine.hh.
Referenced by CalcTransformed_(), DetermineIntersectionsAndEpipoleDistances_(), DrawWhole(), EpipolarLine(), and operator=().
|
protected |
Definition at line 305 of file EpipolarLine.hh.
Referenced by CalcTransformed_(), EpipolarLine(), and ScanLine_().
|
protectedinherited |
Definition at line 514 of file Vector3.hh.
Referenced by CalcTransformed_(), BIAS::HomgLine2D::DistanceSquared(), GetNextLine(), BIAS::HomgLine2D::GetPerpendicularLine(), BIAS::HomgLine2D::GetW(), BIAS::HomgLine2D::HomgLine2D(), BIAS::HomgLine2D::Homogenize(), Init(), Recalc(), ScanLine(), and BIAS::HomgLine2D::Set().
|
protected |
Definition at line 289 of file EpipolarLine.hh.
Referenced by EpipolarLine(), Init(), Recalc(), and ScanLine().
|
protected |
Definition at line 299 of file EpipolarLine.hh.
Referenced by CalcTransformed_(), EpipolarLine(), operator=(), and ScanLine_().
|
protected |
Definition at line 299 of file EpipolarLine.hh.
Referenced by CalcTransformed_(), EpipolarLine(), operator=(), and ScanLine_().
|
protected |
Definition at line 308 of file EpipolarLine.hh.
Referenced by CalcTransformed_().
|
protected |
Definition at line 276 of file EpipolarLine.hh.
Referenced by DetermineIntersectionsAndEpipoleDistances_(), Draw(), EpipolarLine(), Init(), operator=(), Recalc(), and ScanLine().
|
protected |
Definition at line 277 of file EpipolarLine.hh.
Referenced by Draw(), EpipolarLine(), Init(), operator=(), Recalc(), and ScanLine().
|
protected |
Definition at line 290 of file EpipolarLine.hh.
Referenced by CalcTransformed_(), DetermineIntersectionsAndEpipoleDistances_(), DrawWhole(), EpipolarLine(), Init(), operator=(), Recalc(), and ScanLine().
|
staticprotectedinherited |
|
protected |
Definition at line 296 of file EpipolarLine.hh.
Referenced by ScanLine_().
|
protected |
Definition at line 285 of file EpipolarLine.hh.
Referenced by DetermineIntersectionsAndEpipoleDistances_(), EpipolarLine(), GetNextLine(), Init(), operator=(), Recalc(), and ScanLine().
|
protected |
Definition at line 287 of file EpipolarLine.hh.
Referenced by DetermineIntersectionsAndEpipoleDistances_(), EpipolarLine(), GetNextLine(), Init(), operator=(), Recalc(), and ScanLine().
|
protected |
int Width_; // width of image int Height_; // height of image image borders in xdir, typically 0, width-1
Definition at line 285 of file EpipolarLine.hh.
Referenced by DetermineIntersectionsAndEpipoleDistances_(), EpipolarLine(), GetNextLine(), Init(), operator=(), Recalc(), and ScanLine().
|
protected |
image borders in xdir, typically 0, height-1
Definition at line 287 of file EpipolarLine.hh.
Referenced by DetermineIntersectionsAndEpipoleDistances_(), EpipolarLine(), GetNextLine(), Init(), operator=(), Recalc(), and ScanLine().
|
protected |
Definition at line 278 of file EpipolarLine.hh.
Referenced by Draw(), EpipolarLine(), and Init().
|
protected |
Definition at line 279 of file EpipolarLine.hh.
|
protected |
Definition at line 293 of file EpipolarLine.hh.
Referenced by CalcTransformed_(), DetermineIntersectionsAndEpipoleDistances_(), EpipolarLine(), operator=(), and ScanLine().
|
protected |
Definition at line 293 of file EpipolarLine.hh.
Referenced by CalcTransformed_(), DetermineIntersectionsAndEpipoleDistances_(), EpipolarLine(), operator=(), ScanLine(), and ScanLine_().
|
protected |
Definition at line 295 of file EpipolarLine.hh.
Referenced by ScanLine(), and ScanLine_().
|
protected |
Definition at line 302 of file EpipolarLine.hh.
|
protected |
Definition at line 308 of file EpipolarLine.hh.
Referenced by CalcTransformed_().
|
protected |
Definition at line 300 of file EpipolarLine.hh.
Referenced by CalcTransformed_(), Init(), Recalc(), ScanLine(), and ScanLine_().
|
protected |
Definition at line 307 of file EpipolarLine.hh.
Referenced by CalcTransformed_(), EpipolarLine(), and ScanLine_().
|
protected |
Definition at line 306 of file EpipolarLine.hh.
Referenced by CalcTransformed_(), EpipolarLine(), ScanLine(), and ScanLine_().
|
protected |
Definition at line 306 of file EpipolarLine.hh.
Referenced by CalcTransformed_(), EpipolarLine(), and ScanLine().
|
protected |
Definition at line 281 of file EpipolarLine.hh.
Referenced by CalcTransformed_(), EpipolarLine(), Init(), operator=(), Recalc(), ScanLine(), and ScanLine_().