1 #ifndef __ImageBlenderIncremental_hh__
2 #define __ImageBlenderIncremental_hh__
4 #include <Base/Image/Image.hh>
5 #include <Image/Camera.hh>
6 #include <Base/Image/ImageConvert.hh>
7 #include <Filter/Gauss.hh>
8 #include <Geometry/ProjectionParametersCylindric.hh>
9 #include <Geometry/ProjectionParametersPerspective.hh>
10 #include <Image/ProjectionMapping.hh>
11 #include <Geometry/Projection.hh>
12 #include <Base/Math/RGBA.hh>
14 #define WEIGHT_TYPE_NONE 0
15 #define WEIGHT_TYPE_CIRCULAR 1
16 #define WEIGHT_TYPE_CIRCULAR_FIT 2
17 #define WEIGHT_TYPE_RECTANGULAR 3
18 #define WEIGHT_TYPE_RECT_NONLINEAR 4
19 #define WEIGHT_TYPE_MIX 5 // mix between rectangular and circular
20 #define WEIGHT_TYPE_USERIMAGE 6
25 #define HORIZON_ALIGNMENT_X 0
26 #define HORIZON_ALIGNMENT_Y 1
27 #define HORIZON_ALIGNMENT_UNKNOWN 2
28 #define HORIZON_ALIGNMENT_AUTO 3
32 #define D_IMAGEBLENDER_MINIMAL 1
34 #define D_IMAGEBLENDER_GEOMETRY 2
36 #define D_IMAGEBLENDER_FILTERING 4
38 #define D_IMAGEBLENDER_BLENDING 8
116 unsigned int weightType = WEIGHT_TYPE_CIRCULAR_FIT);
132 return &latestMosaicLow_;
147 double gaussSigma = 1.2) {
153 ComputeCylCamGeometry_(ppc);
154 return BlendImages(destination, ppc, NULL, gaussSigma);
172 double gaussSigma = 1.2);
180 if (!Depth_.IsEmpty()) Depth_.Release();
189 outputImageHeight_ = newSize;
191 (
unsigned int)(outputImageHeight_ * cylinderHeight_ / M_PI);
199 return outputImageWidth_;
221 void GetLowPassAndHighPassImage_(
const Image<float>& camCyl,
247 unsigned int weightType =
248 WEIGHT_TYPE_RECTANGULAR);
255 bool wantDegrees =
false);
258 bool wantDegrees =
false);
300 #endif // __ImageBlender_hh__
BIAS::ProjectionParametersBase * ppOutput_
output projection
void SetDepthMap(const BIAS::Image< float > &depthmap)
BIAS::Image< float > latestMosaicLow_
BIAS::HomgPlane3D plane_
plane (alternative to depth)
std::vector< BIAS::UUID > imageIDs_
unsigned int GetOuputImageSize()
bool BlendImages(BIAS::Camera< unsigned char > &destination, double gaussSigma=1.2)
compute cylindrical geometry from added images and blend all added images
BIAS::Gauss< float, float > gaussFilter_
BIAS::ProjectionMapping< float, float > pm_
the actual worker:
maps several images into a common mosaic and blends them seamlessly
void SetHorizonAlignment(unsigned int val)
determines the alignment of the horizon possible values are: HORIZON_ALIGNMENT_X - horizon is in x di...
void SetWriteVrml(bool flag)
unsigned int outputImageHeight_
const Image< float > * GetLowPassPointer()
for interadctive visualization, show current buffer (read only)
void SetDrawImageBorders(bool flag)
unsigned int outputImageWidth_
unsigned int horizonAlignment_
BIAS::Vector4< unsigned char > RGBAuc
bool blendIncremental_
incremental or batchmode
BIAS::Image< float > weightimage_
weight image for user specified weighting
Camera parameters which define the mapping between rays in the camera coordinate system and pixels in...
void SetPlane(const HomgPlane3D &theplane)
void SetOuputImageSize(const unsigned int &newSize)
BIAS::Image< float > Depth_
output depth
Camera parameters which define the mapping between rays in the camera coordinate system and pixels in...
std::map< BIAS::UUID, BIAS::Camera< float > > inputImages_
void SetZero()
zeroes the image
A homogeneous plane (in P^3) All points X on the plane p fulfill p ' * X = 0.