43
#ifndef OPENCV_VIDEOSTAB_FAST_MARCHING_INL_HPP
44
#define OPENCV_VIDEOSTAB_FAST_MARCHING_INL_HPP
46
#include "opencv2/videostab/fast_marching.hpp"
53
template
<
typename
Inpa
int>
60
static
const
int
lut[4][2] = {{-1,0}, {0,-1}, {1,0}, {0,1}};
63
flag_.create(mask.size());
64
dist_.create(mask.size());
65
index_.create(mask.size());
70
for
(
int
y = 0; y < flag_.rows; ++y)
72
for
(
int
x = 0; x < flag_.cols; ++x)
74
if
(flag_(y,x) == KNOWN)
81
for
(
int
i = 0; i < 4; ++i)
83
int
xn = x + lut[i][0];
84
int
yn = y + lut[i][1];
86
if
(xn >= 0 && xn < flag_.cols && yn >= 0 && yn < flag_.rows)
89
if
(flag_(yn,xn) != KNOWN)
94
if
(n>0 && nunknown == n)
105
narrowBand_.push_back(DXY(0.f,x,y));
106
index_(y,x) = size_++;
113
for
(
int
i = size_/2-1; i >= 0; --i)
119
int
x = narrowBand_[0].x;
120
int
y = narrowBand_[0].y;
124
for
(
int
n = 0; n < 4; ++n)
126
int
xn = x + lut[n][0];
127
int
yn = y + lut[n][1];
129
if
(xn >= 0 && xn < flag_.cols && yn >= 0 && yn < flag_.rows && flag_(yn,xn) != KNOWN)
131
dist_(yn,xn) =
std::min(
std::min(solve(xn-1, yn, xn, yn-1), solve(xn+1, yn, xn, yn-1)),
132
std::min(solve(xn-1, yn, xn, yn+1), solve(xn+1, yn, xn, yn+1)));
134
if
(flag_(yn,xn) == INSIDE)
138
heapAdd(DXY(dist_(yn,xn),xn,yn));
142
int
i = index_(yn,xn);
143
if
(dist_(yn,xn) < narrowBand_[i].dist)
145
narrowBand_[i].dist = dist_(yn,xn);
n-dimensional dense array class
Definition:
mat.hpp:802
Inpaint run(const Mat &mask, Inpaint inpaint)
Template method that runs the Fast Marching Method.
Definition:
fast_marching_inl.hpp:54
CV_EXPORTS_W void min(InputArray src1, InputArray src2, OutputArray dst)
Calculates per-element minimum of two arrays or an array and a scalar.
#define CV_Assert(expr)
Checks a condition at runtime and throws exception if it fails
Definition:
base.hpp:342
CV_EXPORTS_W void inpaint(InputArray src, InputArray inpaintMask, OutputArray dst, double inpaintRadius, int flags)
Restores the selected region in an image using the region neighborhood.
"black box" representation of the file storage associated with a file on disk.
Definition:
aruco.hpp:75