18 #ifndef PIC_FILTERING_FILTER_ROTATION_HPP 19 #define PIC_FILTERING_FILTER_ROTATION_HPP 21 #include "../filtering/filter.hpp" 22 #include "../image_samplers/image_sampler_bilinear.hpp" 24 #ifndef PIC_DISABLE_EIGEN 26 #ifndef PIC_EIGEN_NOT_BUNDLED 27 #include "../externals/Eigen/Dense" 28 #include "../externals/Eigen/Geometry" 30 #include <Eigen/Dense> 31 #include <Eigen/Geometry> 37 #ifndef PIC_DISABLE_EIGEN 65 for(
int j = box->
y0; j < box->y1; j++) {
66 float theta = float(j) * c1;
67 float sinTheta = sinf(theta);
68 float cosTheta = cosf(theta);
72 for(
int i = box->
x0; i < box->x1; i++) {
73 float phi = float(i) * c2;
75 d[0] = sinTheta * cosf(phi);
77 d[2] = sinTheta * sinf(phi);
88 float xt = 1.0f - ((atan2f(Rd[2], -Rd[0]) *
C_INV_PI) * 0.5
f + 0.5
f);
89 float yt = (acosf(Rd[1]) *
C_INV_PI);
91 float *data_dst = (*dst)(i, j);
106 float sinTheta = sinf(theta);
107 float cosTheta = cosf(theta);
109 ret[0] = sinTheta * cosf(phi);
111 ret[2] = sinTheta * sinf(phi);
159 mtx = Eigen::AngleAxisf(
angleZ, Eigen::Vector3f::UnitZ()) *
160 Eigen::AngleAxisf(
angleY, Eigen::Vector3f::UnitY()) *
161 Eigen::AngleAxisf(
angleX, Eigen::Vector3f::UnitX());
174 this->mtxRot_inv = Eigen::Transpose< Eigen::Matrix3f >(mtx);
ImageSamplerBilinear isb
Definition: filter_rotation.hpp:46
The BBox class manages the creation of bounding boxes for images.
Definition: bbox.hpp:29
float angleZ
Definition: filter_rotation.hpp:49
static Image * execute(Image *imgIn, Image *imgOut, Eigen::Matrix3f &mtx)
execute
Definition: filter_rotation.hpp:207
std::vector< Image * > ImageVec
ImageVec an std::vector of pic::Image.
Definition: image_vec.hpp:29
int x0
Definition: bbox.hpp:32
The Filter class.
Definition: filter.hpp:50
Eigen::Matrix3f mtxRot_inv
Definition: filter_rotation.hpp:52
void ProcessBBox(Image *dst, ImageVec src, BBox *box)
ProcessBBox.
Definition: filter_rotation.hpp:60
const float C_PI
Definition: math.hpp:50
Eigen::Matrix3f mtxRot
Definition: filter_rotation.hpp:52
virtual Image * Process(ImageVec imgIn, Image *imgOut)
Process.
Definition: filter.hpp:390
float angleY
Definition: filter_rotation.hpp:49
float heightf
Definition: image.hpp:84
Eigen::Matrix3f getMtxRot()
getMtxRot
Definition: filter_rotation.hpp:181
void update(float angleX, float angleY, float angleZ)
update
Definition: filter_rotation.hpp:152
const float C_PI_2
Definition: math.hpp:52
int y0
Definition: bbox.hpp:32
void update(Eigen::Matrix3f mtx)
update
Definition: filter_rotation.hpp:171
FilterRotation(Eigen::Matrix3f mtx)
FilterRotation.
Definition: filter_rotation.hpp:141
float widthf
Definition: image.hpp:84
void SampleImage(Image *img, float x, float y, float *vOut)
SampleImage samples an image in normalized coordiantes (0,1).
Definition: image_sampler_bilinear.hpp:42
float angleX
Definition: filter_rotation.hpp:49
The Image class stores an image as buffer of float.
Definition: image.hpp:60
FilterRotation(float angleX, float angleY, float angleZ)
FilterRotation.
Definition: filter_rotation.hpp:132
virtual void f(FilterFData *data)
f
Definition: filter_radial_basis_function.hpp:69
The FilterRotation class.
Definition: filter_rotation.hpp:42
PIC_INLINE ImageVec Single(Image *img)
Single creates an std::vector which contains img; this is for filters input.
Definition: image_vec.hpp:36
Definition: bilateral_separation.hpp:25
Eigen::Vector3f fromAnglesToVector(float theta, float phi)
fromAnglesToVector
Definition: filter_rotation.hpp:103
FilterRotation()
FilterRotation.
Definition: filter_rotation.hpp:121
The ImageSamplerBilinear class.
Definition: image_sampler_bilinear.hpp:28
static Image * execute(Image *imgIn, Image *imgOut, float angleX, float angleY, float angleZ)
execute
Definition: filter_rotation.hpp:194
const float C_INV_PI
Definition: math.hpp:62