diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2012-02-17 19:39:32 +0400 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2012-02-17 19:39:32 +0400 |
commit | 17f6f7e2af6d725522176d9c665cd220ede3e6ca (patch) | |
tree | 2807108988a53be9adb200694d001743fc49ab2d /extern/libmv/patches/overscan.patch | |
parent | b7f3887a3a8a66aeba3a16ae5d76b934af3ccc7c (diff) |
Camera tracking: switch to own repo of libmv where most of patches are applied
and which includes latest changes from Keir's branch.
Hopefully it'll make backporting of changes back to main libmv repo easier.
Diffstat (limited to 'extern/libmv/patches/overscan.patch')
-rw-r--r-- | extern/libmv/patches/overscan.patch | 182 |
1 files changed, 0 insertions, 182 deletions
diff --git a/extern/libmv/patches/overscan.patch b/extern/libmv/patches/overscan.patch deleted file mode 100644 index c68f36804ec..00000000000 --- a/extern/libmv/patches/overscan.patch +++ /dev/null @@ -1,182 +0,0 @@ -diff --git a/src/libmv/simple_pipeline/camera_intrinsics.cc b/src/libmv/simple_pipeline/camera_intrinsics.cc -index 110a16d..366129d 100644 ---- a/src/libmv/simple_pipeline/camera_intrinsics.cc -+++ b/src/libmv/simple_pipeline/camera_intrinsics.cc -@@ -31,6 +31,7 @@ struct Offset { - struct Grid { - struct Offset *offset; - int width, height; -+ double overscan; - }; - - static struct Grid *copyGrid(struct Grid *from) -@@ -42,6 +43,7 @@ static struct Grid *copyGrid(struct Grid *from) - - to->width = from->width; - to->height = from->height; -+ to->overscan = from->overscan; - - to->offset = new Offset[to->width*to->height]; - memcpy(to->offset, from->offset, sizeof(struct Offset)*to->width*to->height); -@@ -184,17 +186,19 @@ void CameraIntrinsics::InvertIntrinsics(double image_x, - - // TODO(MatthiasF): downsample lookup - template<typename WarpFunction> --void CameraIntrinsics::ComputeLookupGrid(Grid* grid, int width, int height) { -- double aspx = (double)width / image_width_; -- double aspy = (double)height / image_height_; -+void CameraIntrinsics::ComputeLookupGrid(Grid* grid, int width, int height, double overscan) { -+ double w = (double)width / (1 + overscan); -+ double h = (double)height / (1 + overscan); -+ double aspx = (double)w / image_width_; -+ double aspy = (double)h / image_height_; - - for (int y = 0; y < height; y++) { - for (int x = 0; x < width; x++) { -- double src_x = x / aspx, src_y = y / aspy; -+ double src_x = (x - 0.5 * overscan * w) / aspx, src_y = (y - 0.5 * overscan * h) / aspy; - double warp_x, warp_y; - WarpFunction(this,src_x,src_y,&warp_x,&warp_y); -- warp_x = warp_x*aspx; -- warp_y = warp_y*aspy; -+ warp_x = warp_x*aspx + 0.5 * overscan * w; -+ warp_y = warp_y*aspy + 0.5 * overscan * h; - int ix = int(warp_x), iy = int(warp_y); - int fx = round((warp_x-ix)*256), fy = round((warp_y-iy)*256); - if(fx == 256) { fx=0; ix++; } -@@ -264,10 +268,10 @@ struct InvertIntrinsicsFunction { - } - }; - --void CameraIntrinsics::CheckDistortLookupGrid(int width, int height) -+void CameraIntrinsics::CheckDistortLookupGrid(int width, int height, double overscan) - { - if(distort_) { -- if(distort_->width != width || distort_->height != height) { -+ if(distort_->width != width || distort_->height != height || distort_->overscan != overscan) { - delete [] distort_->offset; - distort_->offset = NULL; - } -@@ -278,17 +282,18 @@ void CameraIntrinsics::CheckDistortLookupGrid(int width, int height) - - if(!distort_->offset) { - distort_->offset = new Offset[width*height]; -- ComputeLookupGrid<InvertIntrinsicsFunction>(distort_,width,height); -+ ComputeLookupGrid<InvertIntrinsicsFunction>(distort_,width,height,overscan); - } - - distort_->width = width; - distort_->height = height; -+ distort_->overscan = overscan; - } - --void CameraIntrinsics::CheckUndistortLookupGrid(int width, int height) -+void CameraIntrinsics::CheckUndistortLookupGrid(int width, int height, double overscan) - { - if(undistort_) { -- if(undistort_->width != width || undistort_->height != height) { -+ if(undistort_->width != width || undistort_->height != height || undistort_->overscan != overscan) { - delete [] undistort_->offset; - undistort_->offset = NULL; - } -@@ -299,15 +304,16 @@ void CameraIntrinsics::CheckUndistortLookupGrid(int width, int height) - - if(!undistort_->offset) { - undistort_->offset = new Offset[width*height]; -- ComputeLookupGrid<ApplyIntrinsicsFunction>(undistort_,width,height); -+ ComputeLookupGrid<ApplyIntrinsicsFunction>(undistort_,width,height,overscan); - } - - undistort_->width = width; - undistort_->height = height; -+ undistort_->overscan = overscan; - } - --void CameraIntrinsics::Distort(const float* src, float* dst, int width, int height, int channels) { -- CheckDistortLookupGrid(width, height); -+void CameraIntrinsics::Distort(const float* src, float* dst, int width, int height, double overscan, int channels) { -+ CheckDistortLookupGrid(width, height, overscan); - if(channels==1) Warp<float,1>(distort_,src,dst,width,height); - else if(channels==2) Warp<float,2>(distort_,src,dst,width,height); - else if(channels==3) Warp<float,3>(distort_,src,dst,width,height); -@@ -315,8 +321,8 @@ void CameraIntrinsics::Distort(const float* src, float* dst, int width, int heig - //else assert("channels must be between 1 and 4"); - } - --void CameraIntrinsics::Distort(const unsigned char* src, unsigned char* dst, int width, int height, int channels) { -- CheckDistortLookupGrid(width, height); -+void CameraIntrinsics::Distort(const unsigned char* src, unsigned char* dst, int width, int height, double overscan, int channels) { -+ CheckDistortLookupGrid(width, height, overscan); - if(channels==1) Warp<unsigned char,1>(distort_,src,dst,width,height); - else if(channels==2) Warp<unsigned char,2>(distort_,src,dst,width,height); - else if(channels==3) Warp<unsigned char,3>(distort_,src,dst,width,height); -@@ -324,8 +330,8 @@ void CameraIntrinsics::Distort(const unsigned char* src, unsigned char* dst, int - //else assert("channels must be between 1 and 4"); - } - --void CameraIntrinsics::Undistort(const float* src, float* dst, int width, int height, int channels) { -- CheckUndistortLookupGrid(width, height); -+void CameraIntrinsics::Undistort(const float* src, float* dst, int width, int height, double overscan, int channels) { -+ CheckUndistortLookupGrid(width, height, overscan); - if(channels==1) Warp<float,1>(undistort_,src,dst,width,height); - else if(channels==2) Warp<float,2>(undistort_,src,dst,width,height); - else if(channels==3) Warp<float,3>(undistort_,src,dst,width,height); -@@ -333,8 +339,8 @@ void CameraIntrinsics::Undistort(const float* src, float* dst, int width, int he - //else assert("channels must be between 1 and 4"); - } - --void CameraIntrinsics::Undistort(const unsigned char* src, unsigned char* dst, int width, int height, int channels) { -- CheckUndistortLookupGrid(width, height); -+void CameraIntrinsics::Undistort(const unsigned char* src, unsigned char* dst, int width, int height, double overscan, int channels) { -+ CheckUndistortLookupGrid(width, height, overscan); - if(channels==1) Warp<unsigned char,1>(undistort_,src,dst,width,height); - else if(channels==2) Warp<unsigned char,2>(undistort_,src,dst,width,height); - else if(channels==3) Warp<unsigned char,3>(undistort_,src,dst,width,height); -diff --git a/src/libmv/simple_pipeline/camera_intrinsics.h b/src/libmv/simple_pipeline/camera_intrinsics.h -index f525571..f4bf903 100644 ---- a/src/libmv/simple_pipeline/camera_intrinsics.h -+++ b/src/libmv/simple_pipeline/camera_intrinsics.h -@@ -91,7 +91,7 @@ class CameraIntrinsics { - \note This is the reference implementation using floating point images. - */ - void Distort(const float* src, float* dst, -- int width, int height, int channels); -+ int width, int height, double overscan, int channels); - /*! - Distort an image using the current camera instrinsics - -@@ -101,7 +101,7 @@ class CameraIntrinsics { - \note This version is much faster. - */ - void Distort(const unsigned char* src, unsigned char* dst, -- int width, int height, int channels); -+ int width, int height, double overscan, int channels); - /*! - Undistort an image using the current camera instrinsics - -@@ -111,7 +111,7 @@ class CameraIntrinsics { - \note This is the reference implementation using floating point images. - */ - void Undistort(const float* src, float* dst, -- int width, int height, int channels); -+ int width, int height, double overscan, int channels); - /*! - Undistort an image using the current camera instrinsics - -@@ -121,12 +121,12 @@ class CameraIntrinsics { - \note This version is much faster. - */ - void Undistort(const unsigned char* src, unsigned char* dst, -- int width, int height, int channels); -+ int width, int height, double overscan, int channels); - - private: -- template<typename WarpFunction> void ComputeLookupGrid(struct Grid* grid, int width, int height); -- void CheckUndistortLookupGrid(int width, int height); -- void CheckDistortLookupGrid(int width, int height); -+ template<typename WarpFunction> void ComputeLookupGrid(struct Grid* grid, int width, int height, double overscan); -+ void CheckUndistortLookupGrid(int width, int height, double overscan); -+ void CheckDistortLookupGrid(int width, int height, double overscan); - void FreeLookupGrid(); - - // The traditional intrinsics matrix from x = K[R|t]X. |