public class opencv_optflow extends opencv_optflow
| Constructor and Description |
|---|
opencv_optflow() |
| Modifier and Type | Method and Description |
|---|---|
static double |
calcGlobalOrientation(opencv_core.Mat orientation,
opencv_core.Mat mask,
opencv_core.Mat mhi,
double timestamp,
double duration)
\brief Calculates a global motion orientation in a selected region.
|
static void |
calcMotionGradient(opencv_core.Mat mhi,
opencv_core.Mat mask,
opencv_core.Mat orientation,
double delta1,
double delta2) |
static void |
calcMotionGradient(opencv_core.Mat mhi,
opencv_core.Mat mask,
opencv_core.Mat orientation,
double delta1,
double delta2,
int apertureSize)
\brief Calculates a gradient orientation of a motion history image.
|
static void |
calcOpticalFlowSF(opencv_core.Mat from,
opencv_core.Mat to,
opencv_core.Mat flow,
int layers,
int averaging_block_size,
int max_flow)
\addtogroup optflow
\{
|
static void |
calcOpticalFlowSF(opencv_core.Mat from,
opencv_core.Mat to,
opencv_core.Mat flow,
int layers,
int averaging_block_size,
int max_flow,
double sigma_dist,
double sigma_color,
int postprocess_window,
double sigma_dist_fix,
double sigma_color_fix,
double occ_thr,
int upscale_averaging_radius,
double upscale_sigma_dist,
double upscale_sigma_color,
double speed_up_thr)
\brief Calculate an optical flow using "SimpleFlow" algorithm.
|
static void |
calcOpticalFlowSparseToDense(opencv_core.Mat from,
opencv_core.Mat to,
opencv_core.Mat flow) |
static void |
calcOpticalFlowSparseToDense(opencv_core.Mat from,
opencv_core.Mat to,
opencv_core.Mat flow,
int grid_step,
int k,
float sigma,
boolean use_post_proc,
float fgs_lambda,
float fgs_sigma)
\brief Fast dense optical flow based on PyrLK sparse matches interpolation.
|
static opencv_video.DenseOpticalFlow |
createOptFlow_DeepFlow()
\brief DeepFlow optical flow algorithm implementation.
|
static opencv_video.DenseOpticalFlow |
createOptFlow_Farneback()
Additional interface to the Farneback's algorithm - calcOpticalFlowFarneback()
|
static opencv_video.DenseOpticalFlow |
createOptFlow_SimpleFlow()
Additional interface to the SimpleFlow algorithm - calcOpticalFlowSF()
|
static opencv_video.DenseOpticalFlow |
createOptFlow_SparseToDense()
Additional interface to the SparseToDenseFlow algorithm - calcOpticalFlowSparseToDense()
|
static opencv_core.Mat |
readOpticalFlow(BytePointer path)
\brief Read a .flo file
|
static opencv_core.Mat |
readOpticalFlow(String path) |
static void |
segmentMotion(opencv_core.Mat mhi,
opencv_core.Mat segmask,
opencv_core.RectVector boundingRects,
double timestamp,
double segThresh)
\brief Splits a motion history image into a few parts corresponding to separate independent motions (for
example, left hand, right hand).
|
static void |
updateMotionHistory(opencv_core.Mat silhouette,
opencv_core.Mat mhi,
double timestamp,
double duration)
\addtogroup optflow
\{
|
static boolean |
writeOpticalFlow(BytePointer path,
opencv_core.Mat flow)
\brief Write a .flo to disk
|
static boolean |
writeOpticalFlow(String path,
opencv_core.Mat flow) |
map@Namespace(value="cv::optflow") public static void calcOpticalFlowSF(@ByVal opencv_core.Mat from, @ByVal opencv_core.Mat to, @ByVal opencv_core.Mat flow, int layers, int averaging_block_size, int max_flow)
/** \overload
@Namespace(value="cv::optflow") public static void calcOpticalFlowSF(@ByVal opencv_core.Mat from, @ByVal opencv_core.Mat to, @ByVal opencv_core.Mat flow, int layers, int averaging_block_size, int max_flow, double sigma_dist, double sigma_color, int postprocess_window, double sigma_dist_fix, double sigma_color_fix, double occ_thr, int upscale_averaging_radius, double upscale_sigma_dist, double upscale_sigma_color, double speed_up_thr)
from - First 8-bit 3-channel image.to - Second 8-bit 3-channel image of the same size as prevflow - computed flow image that has the same size as prev and type CV_32FC2layers - Number of layersaveraging_block_size - Size of block through which we sum up when calculate cost function
for pixelmax_flow - maximal flow that we search at each levelsigma_dist - vector smooth spatial sigma parametersigma_color - vector smooth color sigma parameterpostprocess_window - window size for postprocess cross bilateral filtersigma_dist_fix - spatial sigma for postprocess cross bilateralf filtersigma_color_fix - color sigma for postprocess cross bilateral filterocc_thr - threshold for detecting occlusionsupscale_averaging_radius - window size for bilateral upscale operationupscale_sigma_dist - spatial sigma for bilateral upscale operationupscale_sigma_color - color sigma for bilateral upscale operationspeed_up_thr - threshold to detect point with irregular flow - where flow should be
recalculated after upscale
See \cite Tao2012 . And site of project -
\note - An example using the simpleFlow algorithm can be found at samples/simpleflow_demo.cpp
@Namespace(value="cv::optflow") public static void calcOpticalFlowSparseToDense(@ByVal opencv_core.Mat from, @ByVal opencv_core.Mat to, @ByVal opencv_core.Mat flow, int grid_step, int k, float sigma, @Cast(value="bool") boolean use_post_proc, float fgs_lambda, float fgs_sigma)
from - first 8-bit 3-channel or 1-channel image.to - second 8-bit 3-channel or 1-channel image of the same size as fromflow - computed flow image that has the same size as from and CV_32FC2 typegrid_step - stride used in sparse match computation. Lower values usually
result in higher quality but slow down the algorithm.k - number of nearest-neighbor matches considered, when fitting a locally affine
model. Lower values can make the algorithm noticeably faster at the cost of
some quality degradation.sigma - parameter defining how fast the weights decrease in the locally-weighted affine
fitting. Higher values can help preserve fine details, lower values can help to get rid
of the noise in the output flow.use_post_proc - defines whether the ximgproc::fastGlobalSmootherFilter() is used
for post-processing after interpolationfgs_lambda - see the respective parameter of the ximgproc::fastGlobalSmootherFilter()fgs_sigma - see the respective parameter of the ximgproc::fastGlobalSmootherFilter()@Namespace(value="cv::optflow") public static void calcOpticalFlowSparseToDense(@ByVal opencv_core.Mat from, @ByVal opencv_core.Mat to, @ByVal opencv_core.Mat flow)
@Namespace(value="cv::optflow") @ByVal public static opencv_core.Mat readOpticalFlow(@opencv_core.Str BytePointer path)
path - Path to the file to be loaded
The function readOpticalFlow loads a flow field from a file and returns it as a single matrix. Resulting Mat has a type CV_32FC2 - floating-point, 2-channel. First channel corresponds to the flow in the horizontal direction (u), second - vertical (v).
@Namespace(value="cv::optflow") @ByVal public static opencv_core.Mat readOpticalFlow(@opencv_core.Str String path)
@Namespace(value="cv::optflow") @Cast(value="bool") public static boolean writeOpticalFlow(@opencv_core.Str BytePointer path, @ByVal opencv_core.Mat flow)
path - Path to the file to be writtenflow - Flow field to be stored
The function stores a flow field in a file, returns true on success, false otherwise. The flow field must be a 2-channel, floating-point matrix (CV_32FC2). First channel corresponds to the flow in the horizontal direction (u), second - vertical (v).
@Namespace(value="cv::optflow") @Cast(value="bool") public static boolean writeOpticalFlow(@opencv_core.Str String path, @ByVal opencv_core.Mat flow)
@Namespace(value="cv::optflow") @opencv_core.Ptr public static opencv_video.DenseOpticalFlow createOptFlow_DeepFlow()
The class implements the DeepFlow optical flow algorithm described in \cite Weinzaepfel2013 . See
also
@Namespace(value="cv::optflow") @opencv_core.Ptr public static opencv_video.DenseOpticalFlow createOptFlow_SimpleFlow()
@Namespace(value="cv::optflow") @opencv_core.Ptr public static opencv_video.DenseOpticalFlow createOptFlow_Farneback()
@Namespace(value="cv::optflow") @opencv_core.Ptr public static opencv_video.DenseOpticalFlow createOptFlow_SparseToDense()
@Namespace(value="cv::motempl") public static void updateMotionHistory(@ByVal opencv_core.Mat silhouette, @ByVal opencv_core.Mat mhi, double timestamp, double duration)
/** \brief Updates the motion history image by a moving silhouette.
silhouette - Silhouette mask that has non-zero pixels where the motion occurs.mhi - Motion history image that is updated by the function (single-channel, 32-bit
floating-point).timestamp - Current time in milliseconds or other units.duration - Maximal duration of the motion track in the same units as timestamp .
The function updates the motion history image as follows:
\f[\texttt{mhi} (x,y)= \forkthree{\texttt{timestamp}}{if \(\texttt{silhouette}(x,y) \ne 0\)}{0}{if \(\texttt{silhouette}(x,y) = 0\) and \(\texttt{mhi} < (\texttt{timestamp} - \texttt{duration})\)}{\texttt{mhi}(x,y)}{otherwise}\f]
That is, MHI pixels where the motion occurs are set to the current timestamp , while the pixels where the motion happened last time a long time ago are cleared.
The function, together with calcMotionGradient and calcGlobalOrientation , implements a motion templates technique described in \cite Davis97 and \cite Bradski00 .
@Namespace(value="cv::motempl") public static void calcMotionGradient(@ByVal opencv_core.Mat mhi, @ByVal opencv_core.Mat mask, @ByVal opencv_core.Mat orientation, double delta1, double delta2, int apertureSize)
mhi - Motion history single-channel floating-point image.mask - Output mask image that has the type CV_8UC1 and the same size as mhi . Its non-zero
elements mark pixels where the motion gradient data is correct.orientation - Output motion gradient orientation image that has the same type and the same
size as mhi . Each pixel of the image is a motion orientation, from 0 to 360 degrees.delta1 - Minimal (or maximal) allowed difference between mhi values within a pixel
neighborhood.delta2 - Maximal (or minimal) allowed difference between mhi values within a pixel
neighborhood. That is, the function finds the minimum ( \f$m(x,y)\f$ ) and maximum ( \f$M(x,y)\f$ ) mhi
values over \f$3 \times 3\f$ neighborhood of each pixel and marks the motion orientation at \f$(x, y)\f$
as valid only if
\f[\min ( \texttt{delta1} , \texttt{delta2} ) \le M(x,y)-m(x,y) \le \max ( \texttt{delta1} , \texttt{delta2} ).\f]apertureSize - Aperture size of the Sobel operator.
The function calculates a gradient orientation at each pixel \f$(x, y)\f$ as:
\f[\texttt{orientation} (x,y)= \arctan{\frac{d\texttt{mhi}/dy}{d\texttt{mhi}/dx}}\f]
In fact, fastAtan2 and phase are used so that the computed angle is measured in degrees and covers the full range 0..360. Also, the mask is filled to indicate pixels where the computed angle is valid.
\note - (Python) An example on how to perform a motion template technique can be found at opencv_source_code/samples/python2/motempl.py
@Namespace(value="cv::motempl") public static void calcMotionGradient(@ByVal opencv_core.Mat mhi, @ByVal opencv_core.Mat mask, @ByVal opencv_core.Mat orientation, double delta1, double delta2)
@Namespace(value="cv::motempl") public static double calcGlobalOrientation(@ByVal opencv_core.Mat orientation, @ByVal opencv_core.Mat mask, @ByVal opencv_core.Mat mhi, double timestamp, double duration)
orientation - Motion gradient orientation image calculated by the function calcMotionGradientmask - Mask image. It may be a conjunction of a valid gradient mask, also calculated by
calcMotionGradient , and the mask of a region whose direction needs to be calculated.mhi - Motion history image calculated by updateMotionHistory .timestamp - Timestamp passed to updateMotionHistory .duration - Maximum duration of a motion track in milliseconds, passed to updateMotionHistory
The function calculates an average motion direction in the selected region and returns the angle between 0 degrees and 360 degrees. The average direction is computed from the weighted orientation histogram, where a recent motion has a larger weight and the motion occurred in the past has a smaller weight, as recorded in mhi .
@Namespace(value="cv::motempl") public static void segmentMotion(@ByVal opencv_core.Mat mhi, @ByVal opencv_core.Mat segmask, @ByRef opencv_core.RectVector boundingRects, double timestamp, double segThresh)
mhi - Motion history image.segmask - Image where the found mask should be stored, single-channel, 32-bit floating-point.boundingRects - Vector containing ROIs of motion connected components.timestamp - Current time in milliseconds or other units.segThresh - Segmentation threshold that is recommended to be equal to the interval between
motion history "steps" or greater.
The function finds all of the motion segments and marks them in segmask with individual values (1,2,...). It also computes a vector with ROIs of motion connected components. After that the motion direction for every component can be calculated with calcGlobalOrientation using the extracted mask of the particular component.
Copyright © 2016. All rights reserved.