|
|
|
@ -62,6 +62,73 @@ G_TYPED_KERNEL(GCalcOptFlowLKForPyr, |
|
|
|
|
return std::make_tuple(empty_array_desc(), empty_array_desc(), empty_array_desc()); |
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
enum BackgroundSubtractorType |
|
|
|
|
{ |
|
|
|
|
TYPE_BS_MOG2, |
|
|
|
|
TYPE_BS_KNN |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
/** @brief Structure for the Background Subtractor operation's initialization parameters.*/ |
|
|
|
|
|
|
|
|
|
struct BackgroundSubtractorParams |
|
|
|
|
{ |
|
|
|
|
//! Type of the Background Subtractor operation.
|
|
|
|
|
BackgroundSubtractorType operation = TYPE_BS_MOG2; |
|
|
|
|
|
|
|
|
|
//! Length of the history.
|
|
|
|
|
int history = 500; |
|
|
|
|
|
|
|
|
|
//! For MOG2: Threshold on the squared Mahalanobis distance between the pixel
|
|
|
|
|
//! and the model to decide whether a pixel is well described by
|
|
|
|
|
//! the background model.
|
|
|
|
|
//! For KNN: Threshold on the squared distance between the pixel and the sample
|
|
|
|
|
//! to decide whether a pixel is close to that sample.
|
|
|
|
|
double threshold = 16; |
|
|
|
|
|
|
|
|
|
//! If true, the algorithm will detect shadows and mark them.
|
|
|
|
|
bool detectShadows = true; |
|
|
|
|
|
|
|
|
|
//! The value between 0 and 1 that indicates how fast
|
|
|
|
|
//! the background model is learnt.
|
|
|
|
|
//! Negative parameter value makes the algorithm use some automatically
|
|
|
|
|
//! chosen learning rate.
|
|
|
|
|
double learningRate = -1; |
|
|
|
|
|
|
|
|
|
//! default constructor
|
|
|
|
|
BackgroundSubtractorParams() {} |
|
|
|
|
|
|
|
|
|
/** Full constructor
|
|
|
|
|
@param op MOG2/KNN Background Subtractor type. |
|
|
|
|
@param histLength Length of the history. |
|
|
|
|
@param thrshld For MOG2: Threshold on the squared Mahalanobis distance between |
|
|
|
|
the pixel and the model to decide whether a pixel is well described by the background model. |
|
|
|
|
For KNN: Threshold on the squared distance between the pixel and the sample to decide |
|
|
|
|
whether a pixel is close to that sample. |
|
|
|
|
@param detect If true, the algorithm will detect shadows and mark them. It decreases the |
|
|
|
|
speed a bit, so if you do not need this feature, set the parameter to false. |
|
|
|
|
@param lRate The value between 0 and 1 that indicates how fast the background model is learnt. |
|
|
|
|
Negative parameter value makes the algorithm to use some automatically chosen learning rate. |
|
|
|
|
*/ |
|
|
|
|
BackgroundSubtractorParams(BackgroundSubtractorType op, int histLength, |
|
|
|
|
double thrshld, bool detect, double lRate) : operation(op), |
|
|
|
|
history(histLength), |
|
|
|
|
threshold(thrshld), |
|
|
|
|
detectShadows(detect), |
|
|
|
|
learningRate(lRate){} |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
G_TYPED_KERNEL(GBackgroundSubtractor, <GMat(GMat, BackgroundSubtractorParams)>, |
|
|
|
|
"org.opencv.video.BackgroundSubtractor") |
|
|
|
|
{ |
|
|
|
|
static GMatDesc outMeta(const GMatDesc& in, const BackgroundSubtractorParams& bsParams) |
|
|
|
|
{ |
|
|
|
|
GAPI_Assert(bsParams.history >= 0); |
|
|
|
|
GAPI_Assert(bsParams.learningRate <= 1); |
|
|
|
|
return in.withType(CV_8U, 1); |
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
} //namespace video
|
|
|
|
|
|
|
|
|
|
//! @addtogroup gapi_video
|
|
|
|
@ -169,8 +236,32 @@ calcOpticalFlowPyrLK(const GArray<GMat> &prevPyr, |
|
|
|
|
int flags = 0, |
|
|
|
|
double minEigThresh = 1e-4); |
|
|
|
|
|
|
|
|
|
/** @brief Gaussian Mixture-based or K-nearest neighbours-based Background/Foreground Segmentation Algorithm.
|
|
|
|
|
The operation generates a foreground mask. |
|
|
|
|
|
|
|
|
|
@return Output image is foreground mask, i.e. 8-bit unsigned 1-channel (binary) matrix @ref CV_8UC1. |
|
|
|
|
|
|
|
|
|
@note Functional textual ID is "org.opencv.video.BackgroundSubtractor" |
|
|
|
|
|
|
|
|
|
@param src input image: Floating point frame is used without scaling and should be in range [0,255]. |
|
|
|
|
@param bsParams Set of initialization parameters for Background Subtractor kernel. |
|
|
|
|
*/ |
|
|
|
|
GAPI_EXPORTS GMat BackgroundSubtractor(const GMat& src, const cv::gapi::video::BackgroundSubtractorParams& bsParams); |
|
|
|
|
|
|
|
|
|
//! @} gapi_video
|
|
|
|
|
} //namespace gapi
|
|
|
|
|
} //namespace cv
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
namespace cv { namespace detail { |
|
|
|
|
template<> struct CompileArgTag<cv::gapi::video::BackgroundSubtractorParams> |
|
|
|
|
{ |
|
|
|
|
static const char* tag() |
|
|
|
|
{ |
|
|
|
|
return "org.opencv.video.background_substractor_params"; |
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
} // namespace detail
|
|
|
|
|
} //namespace cv
|
|
|
|
|
|
|
|
|
|
#endif // OPENCV_GAPI_VIDEO_HPP
|
|
|
|
|