public class CameraUniversalOmni extends CameraPinhole
Camera model for omnidirectional single viewpoint sensors [1]. Designed to work with parabolic,
hyperbolic, wide-angle, and spherical sensors. The FOV that this model can describe is dependent
on the mirror parameter ξ. See [1] for details, but for example ξ=0 is a pinhole camera,
ξ=1 can describe fisheye cameras, but a value larger than 1 is limited to 180 degrees due to
multiple points on the unit sphere intersecting the same projection line. This is the same model as
CameraPinholeRadial except that there is a change in reference frame which allows it to model wider FOV.
Camera Projection
[ fx skew cx ]
K = [ 0 fy cy ]
[ 0 0 1 ]
Radial and Tangential Distortion:
xd = xn + xn[k1 r2 + ... + kn r2n]
dxu = [ 2t1 u v + t2(r2 + 2u2)]
dxv = [ t1(r2 + 2v2) + 2 t2 u v]
r2 = u2 + v2
where xd is the distorted normalized image coordinates, xn=(u,v) is
undistorted normalized image coordinates.
NOTE: The only difference from [1] is that skew is used instead of fx*alpha.
[1] Christopher Mei, and Patrick Rives. "Single view point omnidirectional camera calibration from planar grids." ICRA 2007.
| Modifier and Type | Field and Description |
|---|---|
double |
mirrorOffset
Mirror offset distance.
|
double[] |
radial
radial distortion parameters: k1,...,kn
|
double |
t1
tangential distortion parameters
|
double |
t2
tangential distortion parameters
|
cx, cy, fx, fy, serialVersionUID, skewheight, width| Constructor and Description |
|---|
CameraUniversalOmni(CameraUniversalOmni original)
Copy constructor
|
CameraUniversalOmni(int numRadial)
Constructor for specifying number of radial distortion
|
| Modifier and Type | Method and Description |
|---|---|
CameraUniversalOmni |
fsetMirror(double mirrorOffset) |
CameraUniversalOmni |
fsetRadial(double... radial) |
CameraUniversalOmni |
fsetTangental(double t1,
double t2) |
double |
getMirrorOffset() |
double[] |
getRadial() |
double |
getT1() |
double |
getT2() |
void |
set(CameraUniversalOmni original)
Assigns this model to be identical to the passed in model
|
void |
setMirrorOffset(double mirrorOffset) |
void |
setRadial(double[] radial) |
void |
setT1(double t1) |
void |
setT2(double t2) |
fsetK, getCx, getCy, getFx, getFy, getSkew, print, set, setCx, setCy, setFx, setFy, setSkewgetHeight, getWidth, setHeight, setWidthpublic double mirrorOffset
public double[] radial
public double t1
public double t2
public CameraUniversalOmni(int numRadial)
numRadial - Number of radial distortion parameterspublic CameraUniversalOmni(CameraUniversalOmni original)
original - Model which is to be copiedpublic CameraUniversalOmni fsetMirror(double mirrorOffset)
public CameraUniversalOmni fsetRadial(double... radial)
public CameraUniversalOmni fsetTangental(double t1, double t2)
public void set(CameraUniversalOmni original)
original - Model which is to be copiedpublic double[] getRadial()
public void setRadial(double[] radial)
public double getT1()
public void setT1(double t1)
public double getT2()
public void setT2(double t2)
public double getMirrorOffset()
public void setMirrorOffset(double mirrorOffset)