Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'extern/libmv/patches/scaled_distortion.patch')
-rw-r--r--extern/libmv/patches/scaled_distortion.patch261
1 files changed, 0 insertions, 261 deletions
diff --git a/extern/libmv/patches/scaled_distortion.patch b/extern/libmv/patches/scaled_distortion.patch
deleted file mode 100644
index 2da832931d1..00000000000
--- a/extern/libmv/patches/scaled_distortion.patch
+++ /dev/null
@@ -1,261 +0,0 @@
-diff --git a/src/libmv/simple_pipeline/camera_intrinsics.cc b/src/libmv/simple_pipeline/camera_intrinsics.cc
-index f9888ff..110a16d 100644
---- a/src/libmv/simple_pipeline/camera_intrinsics.cc
-+++ b/src/libmv/simple_pipeline/camera_intrinsics.cc
-@@ -23,7 +23,32 @@
-
- namespace libmv {
-
--struct Offset { signed char ix,iy; unsigned char fx,fy; };
-+struct Offset {
-+ signed char ix, iy;
-+ unsigned char fx,fy;
-+};
-+
-+struct Grid {
-+ struct Offset *offset;
-+ int width, height;
-+};
-+
-+static struct Grid *copyGrid(struct Grid *from)
-+{
-+ struct Grid *to = NULL;
-+
-+ if (from) {
-+ to = new Grid;
-+
-+ to->width = from->width;
-+ to->height = from->height;
-+
-+ to->offset = new Offset[to->width*to->height];
-+ memcpy(to->offset, from->offset, sizeof(struct Offset)*to->width*to->height);
-+ }
-+
-+ return to;
-+}
-
- CameraIntrinsics::CameraIntrinsics()
- : K_(Mat3::Identity()),
-@@ -37,9 +62,22 @@ CameraIntrinsics::CameraIntrinsics()
- distort_(0),
- undistort_(0) {}
-
-+CameraIntrinsics::CameraIntrinsics(const CameraIntrinsics &from)
-+ : K_(from.K_),
-+ image_width_(from.image_width_),
-+ image_height_(from.image_height_),
-+ k1_(from.k1_),
-+ k2_(from.k2_),
-+ k3_(from.k3_),
-+ p1_(from.p1_),
-+ p2_(from.p2_)
-+{
-+ distort_ = copyGrid(from.distort_);
-+ undistort_ = copyGrid(from.undistort_);
-+}
-+
- CameraIntrinsics::~CameraIntrinsics() {
-- if(distort_) delete[] distort_;
-- if(undistort_) delete[] undistort_;
-+ FreeLookupGrid();
- }
-
- /// Set the entire calibration matrix at once.
-@@ -146,11 +184,17 @@ void CameraIntrinsics::InvertIntrinsics(double image_x,
-
- // TODO(MatthiasF): downsample lookup
- template<typename WarpFunction>
--void CameraIntrinsics::ComputeLookupGrid(Offset* grid, int width, int height) {
-+void CameraIntrinsics::ComputeLookupGrid(Grid* grid, int width, int height) {
-+ double aspx = (double)width / image_width_;
-+ double aspy = (double)height / 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 warp_x, warp_y;
-- WarpFunction(this,x,y,&warp_x,&warp_y);
-+ WarpFunction(this,src_x,src_y,&warp_x,&warp_y);
-+ warp_x = warp_x*aspx;
-+ warp_y = warp_y*aspy;
- 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++; }
-@@ -162,10 +206,10 @@ void CameraIntrinsics::ComputeLookupGrid(Offset* grid, int width, int height) {
- if( iy >= height-2 ) iy = height-2;
- if ( ix-x > -128 && ix-x < 128 && iy-y > -128 && iy-y < 128 ) {
- Offset offset = { ix-x, iy-y, fx, fy };
-- grid[y*width+x] = offset;
-+ grid->offset[y*width+x] = offset;
- } else {
- Offset offset = { 0, 0, 0, 0 };
-- grid[y*width+x] = offset;
-+ grid->offset[y*width+x] = offset;
- }
- }
- }
-@@ -173,11 +217,11 @@ void CameraIntrinsics::ComputeLookupGrid(Offset* grid, int width, int height) {
-
- // TODO(MatthiasF): cubic B-Spline image sampling, bilinear lookup
- template<typename T,int N>
--static void Warp(const Offset* grid, const T* src, T* dst,
-+static void Warp(const Grid* grid, const T* src, T* dst,
- int width, int height) {
- for (int y = 0; y < height; y++) {
- for (int x = 0; x < width; x++) {
-- Offset offset = grid[y*width+x];
-+ Offset offset = grid->offset[y*width+x];
- const T* s = &src[((y+offset.iy)*width+(x+offset.ix))*N];
- for (int i = 0; i < N; i++) {
- dst[(y*width+x)*N+i] = ((s[ i] * (256-offset.fx) + s[ N+i] * offset.fx) * (256-offset.fy)
-@@ -188,8 +232,17 @@ static void Warp(const Offset* grid, const T* src, T* dst,
- }
-
- void CameraIntrinsics::FreeLookupGrid() {
-- if(distort_) delete distort_, distort_=0;
-- if(undistort_) delete undistort_, undistort_=0;
-+ if(distort_) {
-+ delete distort_->offset;
-+ delete distort_;
-+ distort_ = NULL;
-+ }
-+
-+ if(undistort_) {
-+ delete undistort_->offset;
-+ delete undistort_;
-+ undistort_ = NULL;
-+ }
- }
-
- // FIXME: C++ templates limitations makes thing complicated, but maybe there is a simpler method.
-@@ -211,11 +264,50 @@ struct InvertIntrinsicsFunction {
- }
- };
-
--void CameraIntrinsics::Distort(const float* src, float* dst, int width, int height, int channels) {
-- if(!distort_) {
-- distort_ = new Offset[width*height];
-- ComputeLookupGrid<InvertIntrinsicsFunction>(distort_,width,height);
-+void CameraIntrinsics::CheckDistortLookupGrid(int width, int height)
-+{
-+ if(distort_) {
-+ if(distort_->width != width || distort_->height != height) {
-+ delete [] distort_->offset;
-+ distort_->offset = NULL;
-+ }
-+ } else {
-+ distort_ = new Grid;
-+ distort_->offset = NULL;
-+ }
-+
-+ if(!distort_->offset) {
-+ distort_->offset = new Offset[width*height];
-+ ComputeLookupGrid<InvertIntrinsicsFunction>(distort_,width,height);
- }
-+
-+ distort_->width = width;
-+ distort_->height = height;
-+}
-+
-+void CameraIntrinsics::CheckUndistortLookupGrid(int width, int height)
-+{
-+ if(undistort_) {
-+ if(undistort_->width != width || undistort_->height != height) {
-+ delete [] undistort_->offset;
-+ undistort_->offset = NULL;
-+ }
-+ } else {
-+ undistort_ = new Grid;
-+ undistort_->offset = NULL;
-+ }
-+
-+ if(!undistort_->offset) {
-+ undistort_->offset = new Offset[width*height];
-+ ComputeLookupGrid<ApplyIntrinsicsFunction>(undistort_,width,height);
-+ }
-+
-+ undistort_->width = width;
-+ undistort_->height = height;
-+}
-+
-+void CameraIntrinsics::Distort(const float* src, float* dst, int width, int height, int channels) {
-+ CheckDistortLookupGrid(width, height);
- 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);
-@@ -224,10 +316,7 @@ void CameraIntrinsics::Distort(const float* src, float* dst, int width, int heig
- }
-
- void CameraIntrinsics::Distort(const unsigned char* src, unsigned char* dst, int width, int height, int channels) {
-- if(!distort_) {
-- distort_ = new Offset[width*height];
-- ComputeLookupGrid<InvertIntrinsicsFunction>(distort_,width,height);
-- }
-+ CheckDistortLookupGrid(width, height);
- 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);
-@@ -236,10 +325,7 @@ void CameraIntrinsics::Distort(const unsigned char* src, unsigned char* dst, int
- }
-
- void CameraIntrinsics::Undistort(const float* src, float* dst, int width, int height, int channels) {
-- if(!undistort_) {
-- undistort_ = new Offset[width*height];
-- ComputeLookupGrid<ApplyIntrinsicsFunction>(undistort_,width,height);
-- }
-+ CheckUndistortLookupGrid(width, height);
- 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);
-@@ -248,10 +334,7 @@ void CameraIntrinsics::Undistort(const float* src, float* dst, int width, int he
- }
-
- void CameraIntrinsics::Undistort(const unsigned char* src, unsigned char* dst, int width, int height, int channels) {
-- if(!undistort_) {
-- undistort_ = new Offset[width*height];
-- ComputeLookupGrid<ApplyIntrinsicsFunction>(undistort_,width,height);
-- }
-+ CheckUndistortLookupGrid(width, height);
- 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 29bc8a1..f525571 100644
---- a/src/libmv/simple_pipeline/camera_intrinsics.h
-+++ b/src/libmv/simple_pipeline/camera_intrinsics.h
-@@ -26,11 +26,12 @@ typedef Eigen::Matrix<double, 3, 3> Mat3;
-
- namespace libmv {
-
--struct Offset;
-+struct Grid;
-
- class CameraIntrinsics {
- public:
- CameraIntrinsics();
-+ CameraIntrinsics(const CameraIntrinsics &from);
- ~CameraIntrinsics();
-
- const Mat3 &K() const { return K_; }
-@@ -123,7 +124,9 @@ class CameraIntrinsics {
- int width, int height, int channels);
-
- private:
-- template<typename WarpFunction> void ComputeLookupGrid(Offset* grid, int width, int height);
-+ template<typename WarpFunction> void ComputeLookupGrid(struct Grid* grid, int width, int height);
-+ void CheckUndistortLookupGrid(int width, int height);
-+ void CheckDistortLookupGrid(int width, int height);
- void FreeLookupGrid();
-
- // The traditional intrinsics matrix from x = K[R|t]X.
-@@ -140,8 +143,8 @@ class CameraIntrinsics {
- // independent of image size.
- double k1_, k2_, k3_, p1_, p2_;
-
-- Offset* distort_;
-- Offset* undistort_;
-+ struct Grid *distort_;
-+ struct Grid *undistort_;
- };
-
- } // namespace libmv