diff options
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. |