32 for (vector<GrayImage *>::iterator im =
_levels.begin(), imend =
_levels.end(); im != imend;
43 for (vector<GrayImage *>::iterator im =
_levels.begin(), imend =
_levels.end(); im != imend;
61 return img->
pixel(x, y);
66 if (sx >= img->
width()) {
67 sx = img->
width() - 1;
74 float A = i * (sx + 1) - x;
76 float C = i * (sy + 1) - y;
80 P1 = A * img->
pixel(sx, sy);
81 if (sx < img->
width() - 1) {
83 P1 +=
B * img->
pixel(sx + 1, sy);
87 P1 +=
B * img->
pixel(sx, sy);
89 if (sy < img->
height() - 1) {
91 P2 = A * img->
pixel(sx, sy + 1);
92 if (sx < img->
width() - 1) {
94 P2 +=
B * img->
pixel(sx + 1, sy + 1);
98 P2 +=
B * img->
pixel(sx, sy + 1);
105 return (1.0f /
float(1 << (2 * level))) * (C * P1 + D * P2);
110 return _levels[level]->width();
115 return _levels[level]->height();
150 for (
uint i = 0; i < nbLevels; ++i) {
152 h = pLevel->
height() >> 1;
154 for (
uint y = 0; y < h; ++
y) {
155 for (
uint x = 0; x <
w; ++
x) {
165 while ((
w > 1) && (h > 1)) {
167 h = pLevel->
height() >> 1;
169 for (
uint y = 0; y < h; ++
y) {
170 for (
uint x = 0; x <
w; ++
x) {
Class to perform gaussian filtering operations on an image.
Class to represent a pyramid of images.
Class to encapsulate an array of RGB or Gray level values.
ATTR_WARN_UNUSED_RESULT const BMLoop * l
ATTR_WARN_UNUSED_RESULT const BMVert * v
SIMD_FORCE_INLINE const btScalar & w() const
Return the w value.
float getSmoothedPixel(Map *map, int x, int y)
virtual void BuildPyramid(const GrayImage &level0, uint nbLevels)
GaussianPyramid(float iSigma=1.0f)
void setPixel(uint x, uint y, float v)
float pixel(uint x, uint y) const
virtual float pixel(int x, int y, int level=0)
virtual GrayImage * getLevel(int l)
virtual int height(int level=0)
virtual int width(int level=0)
virtual void BuildPyramid(const GrayImage &level0, uint nbLevels)=0
std::vector< GrayImage * > _levels