mirror of
https://github.com/opencv/opencv.git
synced 2026-07-31 08:13:04 +04:00
Fixed bug in motion stabilization pipeline and updated wobble stabilizer (videostab)
This commit is contained in:
@@ -104,24 +104,25 @@ void MoreAccurateMotionWobbleSuppressor::suppress(int idx, const Mat &frame, Mat
|
||||
yl = ML(1,0)*x + ML(1,1)*y + ML(1,2);
|
||||
zl = ML(2,0)*x + ML(2,1)*y + ML(2,2);
|
||||
xl /= zl; yl /= zl;
|
||||
wl = 1.f / (sqrt(sqr(x - xl) + sqr(y - yl)) + 1e-5f);
|
||||
wl = idx - k1;
|
||||
|
||||
xr = MR(0,0)*x + MR(0,1)*y + MR(0,2);
|
||||
yr = MR(1,0)*x + MR(1,1)*y + MR(1,2);
|
||||
zr = MR(2,0)*x + MR(2,1)*y + MR(2,2);
|
||||
xr /= zr; yr /= zr;
|
||||
wr = 1.f / (sqrt(sqr(x - xr) + sqr(y - yr)) + 1e-5f);
|
||||
wr = k2 - idx;
|
||||
|
||||
mapx_(y,x) = (wl * xl + wr * xr) / (wl + wr);
|
||||
mapy_(y,x) = (wl * yl + wr * yr) / (wl + wr);
|
||||
mapx_(y,x) = (wr * xl + wl * xr) / (wl + wr);
|
||||
mapy_(y,x) = (wr * yl + wl * yr) / (wl + wr);
|
||||
}
|
||||
}
|
||||
|
||||
if (result.data == frame.data)
|
||||
result = Mat(frame.size(), frame.type());
|
||||
|
||||
remap(frame, result, mapx_, mapy_, INTER_LINEAR);
|
||||
remap(frame, result, mapx_, mapy_, INTER_LANCZOS4, BORDER_REPLICATE);
|
||||
}
|
||||
|
||||
} // namespace videostab
|
||||
} // namespace cv
|
||||
|
||||
|
||||
Reference in New Issue
Block a user