HoviTron Video Pipeline
Public Member Functions | Static Public Member Functions
rvs::Parameters Class Reference

#include <Parameters.h>

Public Member Functions

json::Node const & getRoot () const
 
std::string const & getProjectionType () const
 
cv::Vec3f getRotation () const
 
void setRotation (cv::Vec3f)
 
cv::Matx33f getRotationMatrix () const
 
cv::Vec3f getPosition () const
 
void setPosition (cv::Vec3f)
 
cv::Vec2f getDepthRange () const
 
bool hasInvalidDepth () const
 
cv::Size getPaddedSize () const
 
cv::Size getSize () const
 
cv::Rect getCropRegion () const
 
int getColorBitDepth () const
 
int getDepthBitDepth () const
 
ColorFormat getColorFormat () const
 
ColorFormat getDepthColorFormat () const
 
cv::Vec2f getHorRange () const
 
cv::Vec2f getVerRange () const
 
bool isFullHorRange () const
 
cv::Vec2f getFocal () const
 
cv::Vec2f getPrinciplePoint () const
 
void printTo (std::ostream &stream) const
 
void setNewResolution (int w, int h)
 
void setFov (float fovV, float fovH)
 
void setFov (cv::Vec4f &fov)
 

Static Public Member Functions

static Parameters readFrom (json::Node parameters)
 

Detailed Description

Camera and video parameters

Definition at line 74 of file Parameters.h.

Member Function Documentation

◆ getColorBitDepth()

int rvs::Parameters::getColorBitDepth ( ) const

Texture bit depth

Definition at line 148 of file Parameters.cpp.

149 {
150 return m_bitDepthColor;
151 }

◆ getColorFormat()

ColorFormat rvs::Parameters::getColorFormat ( ) const

Color space

Definition at line 158 of file Parameters.cpp.

159 {
160 return m_colorFormat;
161 }

◆ getCropRegion()

cv::Rect rvs::Parameters::getCropRegion ( ) const

Image parameter of crop region:

perspective: principle point relates to uncropped region equirectangular: angular ranges relate to cropped region

Definition at line 143 of file Parameters.cpp.

144 {
145 return m_cropRegion;
146 }

◆ getDepthBitDepth()

int rvs::Parameters::getDepthBitDepth ( ) const

Depth map bit depth

Definition at line 153 of file Parameters.cpp.

154 {
155 return m_bitDepthDepth;
156 }

◆ getDepthColorFormat()

ColorFormat rvs::Parameters::getDepthColorFormat ( ) const

Depth color space

Definition at line 163 of file Parameters.cpp.

164 {
165 return m_depthColorFormat;
166 }

◆ getDepthRange()

cv::Vec2f rvs::Parameters::getDepthRange ( ) const

Depth range

perspective: [znear, zfar] equirectangular: [Rmin, Rmax]

Definition at line 123 of file Parameters.cpp.

124 {
125 return m_depthRange;
126 }

◆ getFocal()

cv::Vec2f rvs::Parameters::getFocal ( ) const

Intrinsic parameter of focal length (perspective)

Definition at line 185 of file Parameters.cpp.

186 {
187 assert(m_projectionType == ProjectionType::perspective);
188 return m_focal;
189 }

◆ getHorRange()

cv::Vec2f rvs::Parameters::getHorRange ( ) const

Horizontal angular range (degrees)

Definition at line 168 of file Parameters.cpp.

169 {
170 assert(m_projectionType == ProjectionType::equirectangular);
171 return m_horRange;
172 }

◆ getPaddedSize()

cv::Size rvs::Parameters::getPaddedSize ( ) const

Padded image size (before cropping)

Definition at line 133 of file Parameters.cpp.

134 {
135 return m_resolution;
136 }

◆ getPosition()

cv::Vec3f rvs::Parameters::getPosition ( ) const

Extrinsic parameter of translation

Definition at line 113 of file Parameters.cpp.

114 {
115 return m_position;
116 }

◆ getPrinciplePoint()

cv::Vec2f rvs::Parameters::getPrinciplePoint ( ) const

Intrinsic parameter of principle point (perspective)

The value returned is already adjusted to refer to the cropped region.

Definition at line 191 of file Parameters.cpp.

192 {
193 assert(m_projectionType == ProjectionType::perspective);
194 return m_principlePoint - cv::Vec2f(cv::Point2f(m_cropRegion.tl()));
195 }

◆ getProjectionType()

std::string const & rvs::Parameters::getProjectionType ( ) const

The projection type

Definition at line 91 of file Parameters.cpp.

92 {
93 return m_projectionType;
94 }

◆ getRoot()

json::Node const & rvs::Parameters::getRoot ( ) const

Direct access to the parameter set for the software platform and proposals

Definition at line 86 of file Parameters.cpp.

87 {
88 return m_root;
89 }

◆ getRotation()

cv::Vec3f rvs::Parameters::getRotation ( ) const

Extrinsic parameter of rotation (Euler angles, degrees)

Definition at line 96 of file Parameters.cpp.

97 {
98 return m_rotation;
99 }

◆ getRotationMatrix()

cv::Matx33f rvs::Parameters::getRotationMatrix ( ) const

Get rotation as a matrix

Definition at line 106 of file Parameters.cpp.

107 {
108 auto const radperdeg = 0.01745329252f;
109 return EulerAnglesToRotationMatrix(radperdeg * m_rotation);
110 }

◆ getSize()

cv::Size rvs::Parameters::getSize ( ) const

Image size after cropping

Definition at line 138 of file Parameters.cpp.

139 {
140 return m_cropRegion.size();
141 }

◆ getVerRange()

cv::Vec2f rvs::Parameters::getVerRange ( ) const

Vertical angular range (degrees)

Definition at line 174 of file Parameters.cpp.

175 {
176 assert(m_projectionType == ProjectionType::equirectangular);
177 return m_verRange;
178 }

◆ hasInvalidDepth()

bool rvs::Parameters::hasInvalidDepth ( ) const

Has invalid depth flag

Definition at line 128 of file Parameters.cpp.

129 {
130 return m_hasInvalidDepth;
131 }

◆ isFullHorRange()

bool rvs::Parameters::isFullHorRange ( ) const

Is full horizontal angular range?

Definition at line 180 of file Parameters.cpp.

181 {
182 return m_isFullHorRange;
183 }

◆ printTo()

void rvs::Parameters::printTo ( std::ostream &  stream) const

Print a description

Definition at line 197 of file Parameters.cpp.

198 {
199 stream << m_resolution << ' ' << m_bitDepthColor << "b " << m_bitDepthDepth << "b " << m_depthRange;
200 if (m_cropRegion != cv::Rect(cv::Point(), m_resolution)) {
201 stream << m_cropRegion;
202 }
203 stream << ' ' << m_projectionType << ' ';
204 if (m_projectionType == ProjectionType::equirectangular) {
205 stream << m_horRange << ' ' << m_verRange;
206 }
207 if (m_projectionType == ProjectionType::perspective) {
208 stream << m_focal << ' ' << m_principlePoint;
209 }
210 stream << ' ' << m_position << ' ' << m_rotation;
211 }

◆ readFrom()

Parameters rvs::Parameters::readFrom ( json::Node  parameters)
static

Camera parameters

Parameters
parametersThe camera and video parameters of this camera

Definition at line 62 of file Parameters.cpp.

63 {
64 Parameters parameters(root);
65
66 parameters.setProjectionFrom(root);
67 parameters.setPositionFrom(root);
68 parameters.setRotationFrom(root);
69 parameters.setDepthRangeFrom(root);
70 parameters.setHasInvalidDepth(root);
71 parameters.setResolutionFrom(root);
72 parameters.setBitDepthColorFrom(root);
73 parameters.setBitDepthDepthFrom(root);
74 parameters.setColorFormatFrom(root);
75 parameters.setDepthColorFormatFrom(root);
76 parameters.setHorRangeFrom(root);
77 parameters.setVerRangeFrom(root);
78 parameters.setCropRegionFrom(root);
79 parameters.setFocalFrom(root);
80 parameters.setPrinciplePointFrom(root);
81 Parameters::validateUnused(root);
82
83 return parameters;
84 }

◆ setFov()

void rvs::Parameters::setFov ( cv::Vec4f &  fov)

Definition at line 388 of file Parameters.cpp.

388 {
389
390 auto range = m_depthRange[0] * m_depthRange[1];
391 auto rangeOffset = m_depthRange[0] - m_depthRange[1];
392
393 auto tl = std::tan(fov[0]); //left
394 auto tr = std::tan(fov[1]); //right
395 auto tt = std::tan(fov[2]); //top
396 auto tb = std::tan(fov[3]); //down
397
398 auto tw = tr - tl;
399 auto th = tt - tb;
400
401 auto x0 = (-tl) / tw;
402 auto y0 = (-tb) / th;
403
404 m_focal[0] = m_resolution.width / tw;
405 m_focal[1] = m_resolution.height / th;
406
407
408 m_principlePoint[0] = x0 * m_resolution.width;
409 m_principlePoint[1] = (1-y0) * m_resolution.height;
410 }

◆ setNewResolution()

void rvs::Parameters::setNewResolution ( int  w,
int  h 
)

change resolution (virtual camera)

Definition at line 374 of file Parameters.cpp.

374 {
375 auto oldRes = cv::Size(m_resolution);
376 m_resolution = cv::Size(w,h);
377 m_cropRegion = cv::Rect(cv::Point(), m_resolution);
378 float factorW = float(w)/float(oldRes.width);
379 float factorH = float(h)/float(oldRes.height);
380 m_principlePoint[0] *= factorW;
381 m_principlePoint[1] *= factorH;
382 auto factor = std::min(factorW,factorH);
383 m_focal[0] *= factor;
384 m_focal[1] *= factor;
385
386 }

◆ setPosition()

void rvs::Parameters::setPosition ( cv::Vec3f  position)

Set a new translation

Definition at line 118 of file Parameters.cpp.

119 {
120 m_position = position;
121 }

◆ setRotation()

void rvs::Parameters::setRotation ( cv::Vec3f  rotation)

Set rotation (Euler angles, degrees)

Definition at line 101 of file Parameters.cpp.

102 {
103 m_rotation = rotation;
104 }

The documentation for this class was generated from the following files: