软件包 org.opencv.video
类 Video
- java.lang.Object
-
- org.opencv.video.Video
-
public class Video extends java.lang.Object
-
-
字段摘要
字段 修饰符和类型 字段 描述 static intMOTION_AFFINEstatic intMOTION_EUCLIDEANstatic intMOTION_HOMOGRAPHYstatic intMOTION_TRANSLATIONstatic intOPTFLOW_FARNEBACK_GAUSSIANstatic intOPTFLOW_LK_GET_MIN_EIGENVALSstatic intOPTFLOW_USE_INITIAL_FLOWstatic intTrackerSamplerCSC_MODE_DETECTstatic intTrackerSamplerCSC_MODE_INIT_NEGstatic intTrackerSamplerCSC_MODE_INIT_POSstatic intTrackerSamplerCSC_MODE_TRACK_NEGstatic intTrackerSamplerCSC_MODE_TRACK_POS
-
构造函数摘要
构造函数 构造函数 描述 Video()
-
方法摘要
所有方法 静态方法 具体方法 修饰符和类型 方法 描述 static intbuildOpticalFlowPyramid(Mat img, java.util.List<Mat> pyramid, Size winSize, int maxLevel)构建可以传递给 calcOpticalFlowPyrLK 的图像金字塔。static intbuildOpticalFlowPyramid(Mat img, java.util.List<Mat> pyramid, Size winSize, int maxLevel, boolean withDerivatives)构建可以传递给 calcOpticalFlowPyrLK 的图像金字塔。static intbuildOpticalFlowPyramid(Mat img, java.util.List<Mat> pyramid, Size winSize, int maxLevel, boolean withDerivatives, int pyrBorder)构建可以传递给 calcOpticalFlowPyrLK 的图像金字塔。static intbuildOpticalFlowPyramid(Mat img, java.util.List<Mat> pyramid, Size winSize, int maxLevel, boolean withDerivatives, int pyrBorder, int derivBorder)构建可以传递给 calcOpticalFlowPyrLK 的图像金字塔。static intbuildOpticalFlowPyramid(Mat img, java.util.List<Mat> pyramid, Size winSize, int maxLevel, boolean withDerivatives, int pyrBorder, int derivBorder, boolean tryReuseInputImage)构建可以传递给 calcOpticalFlowPyrLK 的图像金字塔。static voidcalcOpticalFlowFarneback(Mat prev, Mat next, Mat flow, double pyr_scale, int levels, int winsize, int iterations, int poly_n, double poly_sigma, int flags)使用 Gunnar Farneback 算法计算稠密光流。static voidcalcOpticalFlowPyrLK(Mat prevImg, Mat nextImg, MatOfPoint2f prevPts, MatOfPoint2f nextPts, MatOfByte status, MatOfFloat err)使用带金字塔的迭代 Lucas-Kanade 方法计算稀疏特征集的光流。static voidcalcOpticalFlowPyrLK(Mat prevImg, Mat nextImg, MatOfPoint2f prevPts, MatOfPoint2f nextPts, MatOfByte status, MatOfFloat err, Size winSize)使用带金字塔的迭代 Lucas-Kanade 方法计算稀疏特征集的光流。static voidcalcOpticalFlowPyrLK(Mat prevImg, Mat nextImg, MatOfPoint2f prevPts, MatOfPoint2f nextPts, MatOfByte status, MatOfFloat err, Size winSize, int maxLevel)使用带金字塔的迭代 Lucas-Kanade 方法计算稀疏特征集的光流。static voidcalcOpticalFlowPyrLK(Mat prevImg, Mat nextImg, MatOfPoint2f prevPts, MatOfPoint2f nextPts, MatOfByte status, MatOfFloat err, Size winSize, int maxLevel, TermCriteria criteria)使用带金字塔的迭代 Lucas-Kanade 方法计算稀疏特征集的光流。static voidcalcOpticalFlowPyrLK(Mat prevImg, Mat nextImg, MatOfPoint2f prevPts, MatOfPoint2f nextPts, MatOfByte status, MatOfFloat err, Size winSize, int maxLevel, TermCriteria criteria, int flags)使用带金字塔的迭代 Lucas-Kanade 方法计算稀疏特征集的光流。static voidcalcOpticalFlowPyrLK(Mat prevImg, Mat nextImg, MatOfPoint2f prevPts, MatOfPoint2f nextPts, MatOfByte status, MatOfFloat err, Size winSize, int maxLevel, TermCriteria criteria, int flags, double minEigThreshold)使用带金字塔的迭代 Lucas-Kanade 方法计算稀疏特征集的光流。static RotatedRectCamShift(Mat probImage, Rect window, TermCriteria criteria)查找物体的中心、大小和方向。static doublecomputeECC(Mat templateImage, Mat inputImage)计算两幅图像之间的增强相关系数 (ECC) 值。增强相关系数 (ECC) 是两幅图像之间相似度的归一化度量,参考:EP08。static doublecomputeECC(Mat templateImage, Mat inputImage, Mat inputMask)计算两幅图像之间的增强相关系数 (ECC) 值。增强相关系数 (ECC) 是两幅图像之间相似度的归一化度量,参考:EP08。static BackgroundSubtractorKNNcreateBackgroundSubtractorKNN()创建 KNN 背景扣除器,用于判断像素是否接近该样本。static BackgroundSubtractorKNNcreateBackgroundSubtractorKNN(int history)创建 KNN 背景扣除器static BackgroundSubtractorKNNcreateBackgroundSubtractorKNN(int history, double dist2Threshold)创建 KNN 背景扣除器static BackgroundSubtractorKNNcreateBackgroundSubtractorKNN(int history, double dist2Threshold, boolean detectShadows)创建 KNN 背景扣除器static BackgroundSubtractorMOG2createBackgroundSubtractorMOG2()创建 MOG2 背景扣除器,用于决定像素是否被背景模型良好描述。static BackgroundSubtractorMOG2createBackgroundSubtractorMOG2(int history)创建 MOG2 背景扣除器static BackgroundSubtractorMOG2createBackgroundSubtractorMOG2(int history, double varThreshold)创建 MOG2 背景扣除器static BackgroundSubtractorMOG2createBackgroundSubtractorMOG2(int history, double varThreshold, boolean detectShadows)创建 MOG2 背景扣除器static doublefindTransformECC(Mat templateImage, Mat inputImage, Mat warpMatrix)static doublefindTransformECC(Mat templateImage, Mat inputImage, Mat warpMatrix, int motionType)static doublefindTransformECC(Mat templateImage, Mat inputImage, Mat warpMatrix, int motionType, TermCriteria criteria)static doublefindTransformECC(Mat templateImage, Mat inputImage, Mat warpMatrix, int motionType, TermCriteria criteria, Mat inputMask)static doublefindTransformECC(Mat templateImage, Mat inputImage, Mat warpMatrix, int motionType, TermCriteria criteria, Mat inputMask, int gaussFiltSize)根据 ECC 标准寻找两幅图像之间的几何变换(扭曲),参考:EP08。static doublefindTransformECCWithMask(Mat templateImage, Mat inputImage, Mat templateMask, Mat inputMask, Mat warpMatrix)根据 ECC 标准,使用模板图像和输入图像的有效性掩码寻找两幅图像之间的几何变换(扭曲),参考:EP08。static doublefindTransformECCWithMask(Mat templateImage, Mat inputImage, Mat templateMask, Mat inputMask, Mat warpMatrix, int motionType)根据 ECC 标准,使用模板图像和输入图像的有效性掩码寻找两幅图像之间的几何变换(扭曲),参考:EP08。static doublefindTransformECCWithMask(Mat templateImage, Mat inputImage, Mat templateMask, Mat inputMask, Mat warpMatrix, int motionType, TermCriteria criteria)根据 ECC 标准,使用模板图像和输入图像的有效性掩码寻找两幅图像之间的几何变换(扭曲),参考:EP08。static doublefindTransformECCWithMask(Mat templateImage, Mat inputImage, Mat templateMask, Mat inputMask, Mat warpMatrix, int motionType, TermCriteria criteria, int gaussFiltSize)根据 ECC 标准,使用模板图像和输入图像的有效性掩码寻找两幅图像之间的几何变换(扭曲),参考:EP08。static intmeanShift(Mat probImage, Rect window, TermCriteria criteria)在反向投影图像上寻找物体。static MatreadOpticalFlow(java.lang.String path)读取 .flo 文件static booleanwriteOpticalFlow(java.lang.String path, Mat flow)将 .flo 文件写入磁盘
-
-
-
字段详情
-
OPTFLOW_USE_INITIAL_FLOW
public static final int OPTFLOW_USE_INITIAL_FLOW
- 另请参阅
- 常量字段值
-
OPTFLOW_LK_GET_MIN_EIGENVALS
public static final int OPTFLOW_LK_GET_MIN_EIGENVALS
- 另请参阅
- 常量字段值
-
OPTFLOW_FARNEBACK_GAUSSIAN
public static final int OPTFLOW_FARNEBACK_GAUSSIAN
- 另请参阅
- 常量字段值
-
MOTION_TRANSLATION
public static final int MOTION_TRANSLATION
- 另请参阅
- 常量字段值
-
MOTION_EUCLIDEAN
public static final int MOTION_EUCLIDEAN
- 另请参阅
- 常量字段值
-
MOTION_AFFINE
public static final int MOTION_AFFINE
- 另请参阅
- 常量字段值
-
MOTION_HOMOGRAPHY
public static final int MOTION_HOMOGRAPHY
- 另请参阅
- 常量字段值
-
TrackerSamplerCSC_MODE_INIT_POS
public static final int TrackerSamplerCSC_MODE_INIT_POS
- 另请参阅
- 常量字段值
-
TrackerSamplerCSC_MODE_INIT_NEG
public static final int TrackerSamplerCSC_MODE_INIT_NEG
- 另请参阅
- 常量字段值
-
TrackerSamplerCSC_MODE_TRACK_POS
public static final int TrackerSamplerCSC_MODE_TRACK_POS
- 另请参阅
- 常量字段值
-
TrackerSamplerCSC_MODE_TRACK_NEG
public static final int TrackerSamplerCSC_MODE_TRACK_NEG
- 另请参阅
- 常量字段值
-
TrackerSamplerCSC_MODE_DETECT
public static final int TrackerSamplerCSC_MODE_DETECT
- 另请参阅
- 常量字段值
-
-
方法详情
-
createBackgroundSubtractorMOG2
public static BackgroundSubtractorMOG2 createBackgroundSubtractorMOG2(int history, double varThreshold, boolean detectShadows)
创建 MOG2 背景扣除器- 参数
history- 历史长度。varThreshold- 像素与模型之间马氏距离平方的阈值,用于决定像素是否被背景模型良好描述。此参数不影响背景更新。detectShadows- 如果为 true,算法将检测并标记阴影。这会稍微降低速度,因此如果不需要此功能,请将参数设置为 false。- 返回
- 自动生成
-
createBackgroundSubtractorMOG2
public static BackgroundSubtractorMOG2 createBackgroundSubtractorMOG2(int history, double varThreshold)
创建 MOG2 背景扣除器- 参数
history- 历史长度。varThreshold- 像素与模型之间马氏距离平方的阈值,用于决定像素是否被背景模型良好描述。此参数不影响背景更新。会稍微降低速度,因此如果不需要此功能,请将参数设置为 false。- 返回
- 自动生成
-
createBackgroundSubtractorMOG2
public static BackgroundSubtractorMOG2 createBackgroundSubtractorMOG2(int history)
创建 MOG2 背景扣除器- 参数
history- 历史长度。用于决定像素是否被背景模型良好描述。此参数不影响背景更新。会稍微降低速度,因此如果不需要此功能,请将参数设置为 false。- 返回
- 自动生成
-
createBackgroundSubtractorMOG2
public static BackgroundSubtractorMOG2 createBackgroundSubtractorMOG2()
创建 MOG2 背景扣除器,用于决定像素是否被背景模型良好描述。此参数不影响背景更新。会稍微降低速度,因此如果不需要此功能,请将参数设置为 false。- 返回
- 自动生成
-
createBackgroundSubtractorKNN
public static BackgroundSubtractorKNN createBackgroundSubtractorKNN(int history, double dist2Threshold, boolean detectShadows)
创建 KNN 背景扣除器- 参数
history- 历史长度。dist2Threshold- 像素与样本之间距离平方的阈值,用于决定像素是否接近该样本。此参数不影响背景更新。detectShadows- 如果为 true,算法将检测并标记阴影。这会稍微降低速度,因此如果不需要此功能,请将参数设置为 false。- 返回
- 自动生成
-
createBackgroundSubtractorKNN
public static BackgroundSubtractorKNN createBackgroundSubtractorKNN(int history, double dist2Threshold)
创建 KNN 背景扣除器- 参数
history- 历史长度。dist2Threshold- 像素与样本之间距离平方的阈值,用于决定像素是否接近该样本。此参数不影响背景更新。会稍微降低速度,因此如果不需要此功能,请将参数设置为 false。- 返回
- 自动生成
-
createBackgroundSubtractorKNN
public static BackgroundSubtractorKNN createBackgroundSubtractorKNN(int history)
创建 KNN 背景扣除器- 参数
history- 历史长度。无论像素是否接近该样本。此参数不影响背景更新。会稍微降低速度,因此如果不需要此功能,请将参数设置为 false。- 返回
- 自动生成
-
createBackgroundSubtractorKNN
public static BackgroundSubtractorKNN createBackgroundSubtractorKNN()
创建 KNN 背景扣除器,无论像素是否接近该样本。此参数不影响背景更新。会稍微降低速度,因此如果不需要此功能,请将参数设置为 false。- 返回
- 自动生成
-
CamShift
public static RotatedRect CamShift(Mat probImage, Rect window, TermCriteria criteria)
查找物体的中心、大小和方向。- 参数
probImage- 物体直方图的反向投影。参见 calcBackProject。window- 初始搜索窗口。criteria- 底层 meanShift 的停止准则。(在旧接口中)返回 CAMSHIFT 收敛所需的迭代次数。该函数实现了 CAMSHIFT 物体追踪算法,参考:Bradski98。首先,它使用 meanShift 找到物体中心,然后调整窗口大小并找到最佳旋转。函数返回一个旋转矩形结构,包括物体的位置、大小和方向。搜索窗口的下一个位置可以通过 RotatedRect::boundingRect() 获取。参见追踪彩色物体的 OpenCV 示例 camshiftdemo.c。注意:- (Python) 可以在 opencv_source_code/samples/python/camshift.py 中找到解释 camshift 追踪算法的示例
- 返回
- 自动生成
-
meanShift
public static int meanShift(Mat probImage, Rect window, TermCriteria criteria)
在反向投影图像上寻找物体。- 参数
probImage- 物体直方图的反向投影。详情参见 calcBackProject。window- 初始搜索窗口。criteria- 迭代搜索算法的停止准则。返回:CAMSHIFT 收敛所需的迭代次数。该函数实现了迭代物体搜索算法。它接收输入的物体反向投影和初始位置。计算反向投影图像在窗口内的质心,并将搜索窗口中心移动到质心。重复此过程,直到完成指定的迭代次数 criteria.maxCount 或窗口中心移动小于 criteria.epsilon。该算法在 CamShift 内部使用,与 CamShift 不同的是,搜索窗口的大小或方向在搜索过程中不会改变。你可以直接将 calcBackProject 的输出传递给此函数。但如果先对反向投影进行预滤波并去除噪声,可以获得更好的结果。例如,你可以通过 findContours 提取连通分量,丢弃面积较小的轮廓 (contourArea),并使用 drawContours 渲染剩余轮廓来实现这一点。- 返回
- 自动生成
-
buildOpticalFlowPyramid
public static int buildOpticalFlowPyramid(Mat img, java.util.List<Mat> pyramid, Size winSize, int maxLevel, boolean withDerivatives, int pyrBorder, int derivBorder, boolean tryReuseInputImage)
构建可以传递给 calcOpticalFlowPyrLK 的图像金字塔。- 参数
img- 8 位输入图像。pyramid- 输出金字塔。winSize- 光流算法的窗口大小。必须不小于 calcOpticalFlowPyrLK 的 winSize 参数。需要用它来计算金字塔层级所需的填充。maxLevel- 从 0 开始的最大金字塔层数。withDerivatives- 设置为预计算每个金字塔层级的梯度。如果在构建金字塔时没有梯度,calcOpticalFlowPyrLK 将在内部计算它们。pyrBorder- 金字塔层的边界模式。derivBorder- 梯度的边界模式。tryReuseInputImage- 如果可能,将输入图像的 ROI 放入金字塔中。你可以传递 false 以强制数据复制。- 返回
- 所构建金字塔的层数。可以小于 maxLevel。
-
buildOpticalFlowPyramid
public static int buildOpticalFlowPyramid(Mat img, java.util.List<Mat> pyramid, Size winSize, int maxLevel, boolean withDerivatives, int pyrBorder, int derivBorder)
构建可以传递给 calcOpticalFlowPyrLK 的图像金字塔。- 参数
img- 8 位输入图像。pyramid- 输出金字塔。winSize- 光流算法的窗口大小。必须不小于 calcOpticalFlowPyrLK 的 winSize 参数。需要用它来计算金字塔层级所需的填充。maxLevel- 从 0 开始的最大金字塔层数。withDerivatives- 设置为预计算每个金字塔层级的梯度。如果在构建金字塔时没有梯度,calcOpticalFlowPyrLK 将在内部计算它们。pyrBorder- 金字塔层的边界模式。derivBorder- 梯度的边界模式。用于强制数据复制。- 返回
- 所构建金字塔的层数。可以小于 maxLevel。
-
buildOpticalFlowPyramid
public static int buildOpticalFlowPyramid(Mat img, java.util.List<Mat> pyramid, Size winSize, int maxLevel, boolean withDerivatives, int pyrBorder)
构建可以传递给 calcOpticalFlowPyrLK 的图像金字塔。- 参数
img- 8 位输入图像。pyramid- 输出金字塔。winSize- 光流算法的窗口大小。必须不小于 calcOpticalFlowPyrLK 的 winSize 参数。需要用它来计算金字塔层级所需的填充。maxLevel- 从 0 开始的最大金字塔层数。withDerivatives- 设置为预计算每个金字塔层级的梯度。如果在构建金字塔时没有梯度,calcOpticalFlowPyrLK 将在内部计算它们。pyrBorder- 金字塔层的边界模式。用于强制数据复制。- 返回
- 所构建金字塔的层数。可以小于 maxLevel。
-
buildOpticalFlowPyramid
public static int buildOpticalFlowPyramid(Mat img, java.util.List<Mat> pyramid, Size winSize, int maxLevel, boolean withDerivatives)
构建可以传递给 calcOpticalFlowPyrLK 的图像金字塔。- 参数
img- 8 位输入图像。pyramid- 输出金字塔。winSize- 光流算法的窗口大小。必须不小于 calcOpticalFlowPyrLK 的 winSize 参数。需要用它来计算金字塔层级所需的填充。maxLevel- 从 0 开始的最大金字塔层数。withDerivatives- 设置为预计算每个金字塔层级的梯度。如果在构建金字塔时没有梯度,calcOpticalFlowPyrLK 将在内部计算它们。用于强制数据复制。- 返回
- 所构建金字塔的层数。可以小于 maxLevel。
-
buildOpticalFlowPyramid
public static int buildOpticalFlowPyramid(Mat img, java.util.List<Mat> pyramid, Size winSize, int maxLevel)
构建可以传递给 calcOpticalFlowPyrLK 的图像金字塔。- 参数
img- 8 位输入图像。pyramid- 输出金字塔。winSize- 光流算法的窗口大小。必须不小于 calcOpticalFlowPyrLK 的 winSize 参数。需要用它来计算金字塔层级所需的填充。maxLevel- 从 0 开始的最大金字塔层数。如果在构建金字塔时没有梯度,calcOpticalFlowPyrLK 将在内部计算它们。用于强制数据复制。- 返回
- 所构建金字塔的层数。可以小于 maxLevel。
-
calcOpticalFlowPyrLK
public static void calcOpticalFlowPyrLK(Mat prevImg, Mat nextImg, MatOfPoint2f prevPts, MatOfPoint2f nextPts, MatOfByte status, MatOfFloat err, Size winSize, int maxLevel, TermCriteria criteria, int flags, double minEigThreshold)
使用带金字塔的迭代 Lucas-Kanade 方法计算稀疏特征集的光流。- 参数
prevImg- 第一个 8 位输入图像或由 buildOpticalFlowPyramid 构建的金字塔。nextImg- 第二个输入图像或与 prevImg 大小相同、类型相同的金字塔。prevPts- 需要寻找光流的 2D 点向量;点坐标必须是单精度浮点数。nextPts- 输出的 2D 点向量(具有单精度浮点坐标),包含计算出的输入特征在第二幅图像中的新位置;当传递了 OPTFLOW_USE_INITIAL_FLOW 标志时,向量的大小必须与输入时相同。status- 输出状态向量(无符号字符型);如果找到了对应特征的光流,向量的每个元素被设置为 1,否则设置为 0。err- 输出误差向量;向量的每个元素被设置为对应特征的误差,误差度量类型可以在 flags 参数中设置;如果未找到光流,则误差未定义(使用 status 参数来发现此类情况)。winSize- 每个金字塔层级的搜索窗口大小。maxLevel- 从 0 开始的最大金字塔层数;如果设置为 0,则不使用金字塔(单层),如果设置为 1,则使用两层,依此类推;如果将金字塔传递给输入,算法将使用与金字塔层数相同的层数,但不超过 maxLevel。criteria- 指定迭代搜索算法终止条件的参数(在指定的最高迭代次数 criteria.maxCount 之后,或当搜索窗口移动小于 criteria.epsilon 时)。flags- 操作标志- OPTFLOW_USE_INITIAL_FLOW 使用存储在 nextPts 中的初始估计值;如果未设置该标志,则将 prevPts 复制到 nextPts 并将其视为初始估计。
- OPTFLOW_LK_GET_MIN_EIGENVALS 使用最小特征值作为误差度量(见 minEigThreshold 描述);如果未设置该标志,则使用原始点和移动点周围补丁之间的 L1 距离除以窗口中的像素数作为误差度量。
minEigThreshold- 该算法计算光流方程的 2x2 正规矩阵(在参考:Bouguet00 中称为空间梯度矩阵)的最小特征值,除以窗口中的像素数;如果该值小于 minEigThreshold,则剔除相应的特征,不处理其光流,这样可以去除坏点并提高性能。该函数实现了金字塔中 Lucas-Kanade 光流的稀疏迭代版本。参见参考:Bouguet00。该函数已使用 TBB 库实现并行化。注意: 一些示例- 可以在 opencv_source_code/samples/cpp/lkdemo.cpp 中找到使用 Lucas-Kanade 光流算法的示例
- (Python) 可以在 opencv_source_code/samples/python/lk_track.py 中找到使用 Lucas-Kanade 光流算法的示例
- (Python) 可以在 opencv_source_code/samples/python/lk_homography.py 中找到使用 Lucas-Kanade 追踪器进行单应性匹配的示例
-
calcOpticalFlowPyrLK
public static void calcOpticalFlowPyrLK(Mat prevImg, Mat nextImg, MatOfPoint2f prevPts, MatOfPoint2f nextPts, MatOfByte status, MatOfFloat err, Size winSize, int maxLevel, TermCriteria criteria, int flags)
使用带金字塔的迭代 Lucas-Kanade 方法计算稀疏特征集的光流。- 参数
prevImg- 第一个 8 位输入图像或由 buildOpticalFlowPyramid 构建的金字塔。nextImg- 第二个输入图像或与 prevImg 大小相同、类型相同的金字塔。prevPts- 需要寻找光流的 2D 点向量;点坐标必须是单精度浮点数。nextPts- 输出的 2D 点向量(具有单精度浮点坐标),包含计算出的输入特征在第二幅图像中的新位置;当传递了 OPTFLOW_USE_INITIAL_FLOW 标志时,向量的大小必须与输入时相同。status- 输出状态向量(无符号字符型);如果找到了对应特征的光流,向量的每个元素被设置为 1,否则设置为 0。err- 输出误差向量;向量的每个元素被设置为对应特征的误差,误差度量类型可以在 flags 参数中设置;如果未找到光流,则误差未定义(使用 status 参数来发现此类情况)。winSize- 每个金字塔层级的搜索窗口大小。maxLevel- 从 0 开始的最大金字塔层数;如果设置为 0,则不使用金字塔(单层),如果设置为 1,则使用两层,依此类推;如果将金字塔传递给输入,算法将使用与金字塔层数相同的层数,但不超过 maxLevel。criteria- 指定迭代搜索算法终止条件的参数(在指定的最高迭代次数 criteria.maxCount 之后,或当搜索窗口移动小于 criteria.epsilon 时)。flags- 操作标志- OPTFLOW_USE_INITIAL_FLOW 使用存储在 nextPts 中的初始估计值;如果未设置该标志,则将 prevPts 复制到 nextPts 并将其视为初始估计。
- OPTFLOW_LK_GET_MIN_EIGENVALS 使用最小特征值作为误差度量(见 minEigThreshold 描述);如果未设置该标志,则使用原始点和移动点周围补丁之间的 L1 距离除以窗口中的像素数作为误差度量。
- 可以在 opencv_source_code/samples/cpp/lkdemo.cpp 中找到使用 Lucas-Kanade 光流算法的示例
- (Python) 可以在 opencv_source_code/samples/python/lk_track.py 中找到使用 Lucas-Kanade 光流算法的示例
- (Python) 可以在 opencv_source_code/samples/python/lk_homography.py 中找到使用 Lucas-Kanade 追踪器进行单应性匹配的示例
-
calcOpticalFlowPyrLK
public static void calcOpticalFlowPyrLK(Mat prevImg, Mat nextImg, MatOfPoint2f prevPts, MatOfPoint2f nextPts, MatOfByte status, MatOfFloat err, Size winSize, int maxLevel, TermCriteria criteria)
使用带金字塔的迭代 Lucas-Kanade 方法计算稀疏特征集的光流。- 参数
prevImg- 第一个 8 位输入图像或由 buildOpticalFlowPyramid 构建的金字塔。nextImg- 第二个输入图像或与 prevImg 大小相同、类型相同的金字塔。prevPts- 需要寻找光流的 2D 点向量;点坐标必须是单精度浮点数。nextPts- 输出的 2D 点向量(具有单精度浮点坐标),包含计算出的输入特征在第二幅图像中的新位置;当传递了 OPTFLOW_USE_INITIAL_FLOW 标志时,向量的大小必须与输入时相同。status- 输出状态向量(无符号字符型);如果找到了对应特征的光流,向量的每个元素被设置为 1,否则设置为 0。err- 输出误差向量;向量的每个元素被设置为对应特征的误差,误差度量类型可以在 flags 参数中设置;如果未找到光流,则误差未定义(使用 status 参数来发现此类情况)。winSize- 每个金字塔层级的搜索窗口大小。maxLevel- 从 0 开始的最大金字塔层数;如果设置为 0,则不使用金字塔(单层),如果设置为 1,则使用两层,依此类推;如果将金字塔传递给输入,算法将使用与金字塔层数相同的层数,但不超过 maxLevel。criteria- 指定迭代搜索算法终止条件的参数(在指定的最高迭代次数 criteria.maxCount 之后,或当搜索窗口移动小于 criteria.epsilon 时)。- OPTFLOW_USE_INITIAL_FLOW 使用存储在 nextPts 中的初始估计值;如果未设置该标志,则将 prevPts 复制到 nextPts 并将其视为初始估计。
- OPTFLOW_LK_GET_MIN_EIGENVALS 使用最小特征值作为误差度量(见 minEigThreshold 描述);如果未设置该标志,则使用原始点和移动点周围补丁之间的 L1 距离除以窗口中的像素数作为误差度量。
- 可以在 opencv_source_code/samples/cpp/lkdemo.cpp 中找到使用 Lucas-Kanade 光流算法的示例
- (Python) 可以在 opencv_source_code/samples/python/lk_track.py 中找到使用 Lucas-Kanade 光流算法的示例
- (Python) 可以在 opencv_source_code/samples/python/lk_homography.py 中找到使用 Lucas-Kanade 追踪器进行单应性匹配的示例
-
calcOpticalFlowPyrLK
public static void calcOpticalFlowPyrLK(Mat prevImg, Mat nextImg, MatOfPoint2f prevPts, MatOfPoint2f nextPts, MatOfByte status, MatOfFloat err, Size winSize, int maxLevel)
使用带金字塔的迭代 Lucas-Kanade 方法计算稀疏特征集的光流。- 参数
prevImg- 第一个 8 位输入图像或由 buildOpticalFlowPyramid 构建的金字塔。nextImg- 第二个输入图像或与 prevImg 大小相同、类型相同的金字塔。prevPts- 需要寻找光流的 2D 点向量;点坐标必须是单精度浮点数。nextPts- 输出的 2D 点向量(具有单精度浮点坐标),包含计算出的输入特征在第二幅图像中的新位置;当传递了 OPTFLOW_USE_INITIAL_FLOW 标志时,向量的大小必须与输入时相同。status- 输出状态向量(无符号字符型);如果找到了对应特征的光流,向量的每个元素被设置为 1,否则设置为 0。err- 输出误差向量;向量的每个元素被设置为对应特征的误差,误差度量类型可以在 flags 参数中设置;如果未找到光流,则误差未定义(使用 status 参数来发现此类情况)。winSize- 每个金字塔层级的搜索窗口大小。maxLevel- 从 0 开始的最大金字塔层数;如果设置为 0,则不使用金字塔(单层),如果设置为 1,则使用两层,依此类推;如果将金字塔传递给输入,算法将使用与金字塔层数相同的层数,但不超过 maxLevel。(在指定的最高迭代次数 criteria.maxCount 之后,或当搜索窗口移动小于 criteria.epsilon 时)。- OPTFLOW_USE_INITIAL_FLOW 使用存储在 nextPts 中的初始估计值;如果未设置该标志,则将 prevPts 复制到 nextPts 并将其视为初始估计。
- OPTFLOW_LK_GET_MIN_EIGENVALS 使用最小特征值作为误差度量(见 minEigThreshold 描述);如果未设置该标志,则使用原始点和移动点周围补丁之间的 L1 距离除以窗口中的像素数作为误差度量。
- 可以在 opencv_source_code/samples/cpp/lkdemo.cpp 中找到使用 Lucas-Kanade 光流算法的示例
- (Python) 可以在 opencv_source_code/samples/python/lk_track.py 中找到使用 Lucas-Kanade 光流算法的示例
- (Python) 可以在 opencv_source_code/samples/python/lk_homography.py 中找到使用 Lucas-Kanade 追踪器进行单应性匹配的示例
-
calcOpticalFlowPyrLK
public static void calcOpticalFlowPyrLK(Mat prevImg, Mat nextImg, MatOfPoint2f prevPts, MatOfPoint2f nextPts, MatOfByte status, MatOfFloat err, Size winSize)
使用带金字塔的迭代 Lucas-Kanade 方法计算稀疏特征集的光流。- 参数
prevImg- 第一个 8 位输入图像或由 buildOpticalFlowPyramid 构建的金字塔。nextImg- 第二个输入图像或与 prevImg 大小相同、类型相同的金字塔。prevPts- 需要寻找光流的 2D 点向量;点坐标必须是单精度浮点数。nextPts- 输出的 2D 点向量(具有单精度浮点坐标),包含计算出的输入特征在第二幅图像中的新位置;当传递了 OPTFLOW_USE_INITIAL_FLOW 标志时,向量的大小必须与输入时相同。status- 输出状态向量(无符号字符型);如果找到了对应特征的光流,向量的每个元素被设置为 1,否则设置为 0。err- 输出误差向量;向量的每个元素被设置为对应特征的误差,误差度量类型可以在 flags 参数中设置;如果未找到光流,则误差未定义(使用 status 参数来发现此类情况)。winSize- 每个金字塔层级的搜索窗口大小。层),如果设置为 1,则使用两层,依此类推;如果将金字塔传递给输入,算法将使用与金字塔层数相同的层数,但不超过 maxLevel。(在指定的最高迭代次数 criteria.maxCount 之后,或当搜索窗口移动小于 criteria.epsilon 时)。- OPTFLOW_USE_INITIAL_FLOW 使用存储在 nextPts 中的初始估计值;如果未设置该标志,则将 prevPts 复制到 nextPts 并将其视为初始估计。
- OPTFLOW_LK_GET_MIN_EIGENVALS 使用最小特征值作为误差度量(见 minEigThreshold 描述);如果未设置该标志,则使用原始点和移动点周围补丁之间的 L1 距离除以窗口中的像素数作为误差度量。
- 可以在 opencv_source_code/samples/cpp/lkdemo.cpp 中找到使用 Lucas-Kanade 光流算法的示例
- (Python) 可以在 opencv_source_code/samples/python/lk_track.py 中找到使用 Lucas-Kanade 光流算法的示例
- (Python) 可以在 opencv_source_code/samples/python/lk_homography.py 中找到使用 Lucas-Kanade 追踪器进行单应性匹配的示例
-
calcOpticalFlowPyrLK
public static void calcOpticalFlowPyrLK(Mat prevImg, Mat nextImg, MatOfPoint2f prevPts, MatOfPoint2f nextPts, MatOfByte status, MatOfFloat err)
使用带金字塔的迭代 Lucas-Kanade 方法计算稀疏特征集的光流。- 参数
prevImg- 第一个 8 位输入图像或由 buildOpticalFlowPyramid 构建的金字塔。nextImg- 第二个输入图像或与 prevImg 大小相同、类型相同的金字塔。prevPts- 需要寻找光流的 2D 点向量;点坐标必须是单精度浮点数。nextPts- 输出的 2D 点向量(具有单精度浮点坐标),包含计算出的输入特征在第二幅图像中的新位置;当传递了 OPTFLOW_USE_INITIAL_FLOW 标志时,向量的大小必须与输入时相同。status- 输出状态向量(无符号字符型);如果找到了对应特征的光流,向量的每个元素被设置为 1,否则设置为 0。err- 输出误差向量;向量的每个元素被设置为对应特征的误差,误差度量类型可以在 flags 参数中设置;如果未找到光流,则误差未定义(使用 status 参数来发现此类情况)。层),如果设置为 1,则使用两层,依此类推;如果将金字塔传递给输入,算法将使用与金字塔层数相同的层数,但不超过 maxLevel。(在指定的最高迭代次数 criteria.maxCount 之后,或当搜索窗口移动小于 criteria.epsilon 时)。- OPTFLOW_USE_INITIAL_FLOW 使用存储在 nextPts 中的初始估计值;如果未设置该标志,则将 prevPts 复制到 nextPts 并将其视为初始估计。
- OPTFLOW_LK_GET_MIN_EIGENVALS 使用最小特征值作为误差度量(见 minEigThreshold 描述);如果未设置该标志,则使用原始点和移动点周围补丁之间的 L1 距离除以窗口中的像素数作为误差度量。
- 可以在 opencv_source_code/samples/cpp/lkdemo.cpp 中找到使用 Lucas-Kanade 光流算法的示例
- (Python) 可以在 opencv_source_code/samples/python/lk_track.py 中找到使用 Lucas-Kanade 光流算法的示例
- (Python) 可以在 opencv_source_code/samples/python/lk_homography.py 中找到使用 Lucas-Kanade 追踪器进行单应性匹配的示例
-
calcOpticalFlowFarneback
public static void calcOpticalFlowFarneback(Mat prev, Mat next, Mat flow, double pyr_scale, int levels, int winsize, int iterations, int poly_n, double poly_sigma, int flags)
使用 Gunnar Farneback 算法计算稠密光流。- 参数
prev- 第一个 8 位单通道输入图像。next- 第二个输入图像,与 prev 大小相同、类型相同。flow- 计算出的流图像,与 prev 大小相同,类型为 CV_32FC2。pyr_scale- 指定为每幅图像构建金字塔的图像缩放比例 (<1) 的参数;pyr_scale=0.5 表示经典金字塔,每一层比前一层缩小一倍。levels- 金字塔层数,包括初始图像;levels=1 表示不创建额外层,仅使用原始图像。winsize- 平均窗口大小;较大的值会增加算法对图像噪声的鲁棒性,并增加检测快速运动的机会,但会产生更模糊的运动场。iterations- 算法在每个金字塔层级进行的迭代次数。poly_n- 在每个像素中寻找多项式展开时使用的像素邻域大小;较大的值意味着图像将用更平滑的表面进行逼近,从而使算法更鲁棒并产生更模糊的运动场,通常 poly_n = 5 或 7。poly_sigma- 用于平滑导数的高斯标准差,用作多项式展开的基础;对于 poly_n=5,可以设置 poly_sigma=1.1,对于 poly_n=7,较好的值是 poly_sigma=1.5。flags- 操作标志,可以是以下内容的组合- OPTFLOW_USE_INITIAL_FLOW 使用输入流作为初始流近似值。
- OPTFLOW_FARNEBACK_GAUSSIAN 使用 \(\texttt{winsize}\times\texttt{winsize}\) 高斯滤波器代替同等大小的方框滤波器进行光流估计;通常,此选项提供的流比方框滤波器更准确,代价是速度较低;通常,高斯窗口的 winsize 应设置为较大的值,以实现相同的鲁棒性水平。
- 可以在 opencv_source_code/samples/cpp/fback.cpp 中找到使用 Gunnar Farneback 描述的光流算法的示例
- (Python) 可以在 opencv_source_code/samples/python/opt_flow.py 中找到使用 Gunnar Farneback 描述的光流算法的示例
-
computeECC
public static double computeECC(Mat templateImage, Mat inputImage, Mat inputMask)
计算两幅图像之间的增强相关系数 (ECC) 值。增强相关系数 (ECC) 是两幅图像之间相似性的归一化度量,参考:EP08。结果在 [-1, 1] 范围内,其中 1 表示完美相似(模仿射平移和缩放),0 表示无相关性,-1 表示完美负相关。对于单通道图像,ECC 定义为:\( \mathrm{ECC}(I, T) = \frac{\sum_{x} (I(x) - \mu_I)(T(x) - \mu_T)} {\sqrt{\sum_{x} (I(x) - \mu_I)^2} \cdot \sqrt{\sum_{x} (T(x) - \mu_T)^2}} \) 对于多通道图像(例如 3 通道 RGB),公式泛化为:\( \mathrm{ECC}(I, T) = \frac{\sum_{x} \sum_{c=1}^{C} (I_c(x) - \mu_{I_c})(T_c(x) - \mu_{T_c})} {\sqrt{\sum_{x} \sum_{c=1}^{C} (I_c(x) - \mu_{I_c})^2} \cdot \sqrt{\sum_{x} \sum_{c=1}^{C} (T_c(x) - \mu_{T_c})^2}} \) 其中- \(I_c(x), T_c(x)\) 是通道 \(c\) 在空间位置 \(x\) 处的值,
- \(\mu_{I_c}, \mu_{T_c}\) 是通道 \(c\) 在遮罩区域(如果提供)上的平均值,
- \(C\) 是通道数(目前仅支持 1 和 3),
- 求和在图像域中的所有像素 \(x\) 上运行(可选地由遮罩限制)。
- 参数
templateImage- 输入模板图像;必须是 1 或 3 通道,类型为 CV_8U, CV_16U, CV_32F 或 CV_64F。inputImage- 要与模板进行比较的输入图像;必须与 templateImage 具有相同的类型和通道数。inputMask- 可选的单通道掩码,用于指定 inputImage 和 templateImage 中的有效感兴趣区域。- 返回
- 范围在 [-1, 1] 内的 ECC 相似系数。参见:findTransformECC
-
computeECC
public static double computeECC(Mat templateImage, Mat inputImage)
计算两幅图像之间的增强相关系数 (ECC) 值。增强相关系数 (ECC) 是两幅图像之间相似性的归一化度量,参考:EP08。结果在 [-1, 1] 范围内,其中 1 表示完美相似(模仿射平移和缩放),0 表示无相关性,-1 表示完美负相关。对于单通道图像,ECC 定义为:\( \mathrm{ECC}(I, T) = \frac{\sum_{x} (I(x) - \mu_I)(T(x) - \mu_T)} {\sqrt{\sum_{x} (I(x) - \mu_I)^2} \cdot \sqrt{\sum_{x} (T(x) - \mu_T)^2}} \) 对于多通道图像(例如 3 通道 RGB),公式泛化为:\( \mathrm{ECC}(I, T) = \frac{\sum_{x} \sum_{c=1}^{C} (I_c(x) - \mu_{I_c})(T_c(x) - \mu_{T_c})} {\sqrt{\sum_{x} \sum_{c=1}^{C} (I_c(x) - \mu_{I_c})^2} \cdot \sqrt{\sum_{x} \sum_{c=1}^{C} (T_c(x) - \mu_{T_c})^2}} \) 其中- \(I_c(x), T_c(x)\) 是通道 \(c\) 在空间位置 \(x\) 处的值,
- \(\mu_{I_c}, \mu_{T_c}\) 是通道 \(c\) 在遮罩区域(如果提供)上的平均值,
- \(C\) 是通道数(目前仅支持 1 和 3),
- 求和在图像域中的所有像素 \(x\) 上运行(可选地由遮罩限制)。
- 参数
templateImage- 输入模板图像;必须是 1 或 3 通道,类型为 CV_8U, CV_16U, CV_32F 或 CV_64F。inputImage- 要与模板进行比较的输入图像;必须与 templateImage 具有相同的类型和通道数。- 返回
- 范围在 [-1, 1] 内的 ECC 相似系数。参见:findTransformECC
-
findTransformECC
public static double findTransformECC(Mat templateImage, Mat inputImage, Mat warpMatrix, int motionType, TermCriteria criteria, Mat inputMask, int gaussFiltSize)
根据 ECC 标准寻找两幅图像之间的几何变换(扭曲),参考:EP08。- 参数
templateImage- 1 或 3 通道模板图像;类型为 CV_8U, CV_16U, CV_32F, CV_64F。inputImage- 输入图像,应使用最终的 warpMatrix 对其进行扭曲,以便提供与 templateImage 相似的图像,类型与 templateImage 相同。warpMatrix- 浮点型 \(2\times 3\) 或 \(3\times 3\) 映射矩阵(扭曲)。motionType- 参数,指定运动类型- MOTION_TRANSLATION 设置平移运动模型;warpMatrix 为 \(2\times 3\),前 \(2\times 2\) 部分为单位矩阵,其余两个参数由估计得出。
- MOTION_EUCLIDEAN 设置欧几里得(刚体)变换作为运动模型;估计三个参数;warpMatrix 为 \(2\times 3\)。
- MOTION_AFFINE 设置仿射运动模型(默认);估计六个参数;warpMatrix 为 \(2\times 3\)。
-
MOTION_HOMOGRAPHY 设置单应性作为运动模型;估计八个参数;\
warpMatrix\为 \(3\times 3\)。
criteria- 指定 ECC 算法终止条件的参数;criteria.epsilon 定义了两次迭代之间相关系数增量的阈值(负的 criteria.epsilon 使 criteria.maxcount 成为唯一的终止标准)。默认值显示在上面的声明中。inputMask- 可选的单通道掩码,用于指示 inputImage 的有效值。gaussFiltSize- 一个可选值,指示高斯模糊滤波器的尺寸;(默认值:5)该函数估计关于 ECC 标准(参考:EP08)的最优变换 (warpMatrix),即 \(\texttt{warpMatrix} = \arg\max_{W} \texttt{ECC}(\texttt{templateImage}(x,y),\texttt{inputImage}(x',y'))\) 其中 \(\begin{bmatrix} x' \\ y' \end{bmatrix} = W \cdot \begin{bmatrix} x \\ y \\ 1 \end{bmatrix}\)(该方程对于单应性使用齐次坐标成立)。它返回最终的增强相关系数,即模板图像与最终扭曲后的输入图像之间的相关系数。当给定 \(3\times 3\) 矩阵且 motionType = 0, 1 或 2 时,第三行将被忽略。与 findHomography 和 estimateRigidTransform 不同,函数 findTransformECC 实现了一种基于强度的相似性的区域对齐。本质上,该函数更新初始变换以粗略对齐图像。如果缺少此信息,则将单位变换(单位矩阵)用作初始化。请注意,如果图像经历剧烈的位移/旋转,则需要进行初步对齐的初始变换(例如,允许图像显示大致相同图像内容的简单欧几里得/相似变换)。在第二幅图像中使用逆向扭曲来获取接近第一幅图像的图像,即在 warpAffine 或 warpPerspective 中使用标志 WARP_INVERSE_MAP。另请参见演示该函数用法的 OpenCV 示例 image_alignment.cpp。请注意,如果算法不收敛,该函数将抛出异常。参见:computeECC, estimateAffine2D, estimateAffinePartial2D, findHomography- 返回
- 自动生成
-
findTransformECC
public static double findTransformECC(Mat templateImage, Mat inputImage, Mat warpMatrix, int motionType, TermCriteria criteria, Mat inputMask)
-
findTransformECC
public static double findTransformECC(Mat templateImage, Mat inputImage, Mat warpMatrix, int motionType, TermCriteria criteria)
-
findTransformECC
public static double findTransformECC(Mat templateImage, Mat inputImage, Mat warpMatrix, int motionType)
-
findTransformECC
public static double findTransformECC(Mat templateImage, Mat inputImage, Mat warpMatrix)
-
findTransformECCWithMask
public static double findTransformECCWithMask(Mat templateImage, Mat inputImage, Mat templateMask, Mat inputMask, Mat warpMatrix, int motionType, TermCriteria criteria, int gaussFiltSize)
根据 ECC 标准,参考:EP08,使用模板图像和输入图像的有效性掩码,寻找两幅图像之间的几何变换(扭曲)。此函数通过为模板图像添加掩码来扩展 findTransformECC()。增强相关系数仅在两幅图像均有效的像素上进行评估:在每次迭代中,inputMask 被扭曲到模板框架中并与 templateMask 结合,只有这些掩码的交集才对目标函数有贡献。- 参数
templateImage- 1 或 3 通道模板图像;类型为 CV_8U, CV_16U, CV_32F, CV_64F。inputImage- 输入图像,应使用最终的 warpMatrix 对其进行扭曲,以便提供与 templateImage 相似的图像,类型与 templateImage 相同。templateMask- templateImage 的单通道 8 位掩码,指示对齐中要使用的有效像素。必须与 templateImage 大小相同。inputMask- inputImage 的单通道 8 位掩码,指示扭曲前的有效像素。必须与 inputImage 大小相同。warpMatrix- 浮点型 \(2\times 3\) 或 \(3\times 3\) 映射矩阵(扭曲)。motionType- 参数,指定运动类型- MOTION_TRANSLATION 设置平移运动模型;warpMatrix 为 \(2\times 3\),前 \(2\times 2\) 部分为单位矩阵,其余两个参数由估计得出。
- MOTION_EUCLIDEAN 设置欧几里得(刚体)变换作为运动模型;估计三个参数;warpMatrix 为 \(2\times 3\)。
- MOTION_AFFINE 设置仿射运动模型(默认);估计六个参数;warpMatrix 为 \(2\times 3\)。
- MOTION_HOMOGRAPHY 设置单应性作为运动模型;估计八个参数;warpMatrix 为 \(3\times 3\)。
criteria- 指定 ECC 算法终止条件的参数;criteria.epsilon 定义了两次迭代之间相关系数增量的阈值(负的 criteria.epsilon 使 criteria.maxcount 成为唯一的终止标准)。默认值显示在上面的声明中。gaussFiltSize- 在计算对齐前用于平滑图像和掩码的高斯模糊滤波器的大小(默认值:5)。参见:findTransformECC, computeECC, estimateAffine2D, estimateAffinePartial2D, findHomography- 返回
- 自动生成
-
findTransformECCWithMask
public static double findTransformECCWithMask(Mat templateImage, Mat inputImage, Mat templateMask, Mat inputMask, Mat warpMatrix, int motionType, TermCriteria criteria)
根据 ECC 标准,参考:EP08,使用模板图像和输入图像的有效性掩码,寻找两幅图像之间的几何变换(扭曲)。此函数通过为模板图像添加掩码来扩展 findTransformECC()。增强相关系数仅在两幅图像均有效的像素上进行评估:在每次迭代中,inputMask 被扭曲到模板框架中并与 templateMask 结合,只有这些掩码的交集才对目标函数有贡献。- 参数
templateImage- 1 或 3 通道模板图像;类型为 CV_8U, CV_16U, CV_32F, CV_64F。inputImage- 输入图像,应使用最终的 warpMatrix 对其进行扭曲,以便提供与 templateImage 相似的图像,类型与 templateImage 相同。templateMask- templateImage 的单通道 8 位掩码,指示对齐中要使用的有效像素。必须与 templateImage 大小相同。inputMask- inputImage 的单通道 8 位掩码,指示扭曲前的有效像素。必须与 inputImage 大小相同。warpMatrix- 浮点型 \(2\times 3\) 或 \(3\times 3\) 映射矩阵(扭曲)。motionType- 参数,指定运动类型- MOTION_TRANSLATION 设置平移运动模型;warpMatrix 为 \(2\times 3\),前 \(2\times 2\) 部分为单位矩阵,其余两个参数由估计得出。
- MOTION_EUCLIDEAN 设置欧几里得(刚体)变换作为运动模型;估计三个参数;warpMatrix 为 \(2\times 3\)。
- MOTION_AFFINE 设置仿射运动模型(默认);估计六个参数;warpMatrix 为 \(2\times 3\)。
- MOTION_HOMOGRAPHY 设置单应性作为运动模型;估计八个参数;warpMatrix 为 \(3\times 3\)。
criteria- 指定 ECC 算法终止条件的参数;criteria.epsilon 定义了两次迭代之间相关系数增量的阈值(负的 criteria.epsilon 使 criteria.maxcount 成为唯一的终止标准)。默认值显示在计算对齐前的上述声明中(默认值:5)。参见:findTransformECC, computeECC, estimateAffine2D, estimateAffinePartial2D, findHomography- 返回
- 自动生成
-
findTransformECCWithMask
public static double findTransformECCWithMask(Mat templateImage, Mat inputImage, Mat templateMask, Mat inputMask, Mat warpMatrix, int motionType)
根据 ECC 标准,参考:EP08,使用模板图像和输入图像的有效性掩码,寻找两幅图像之间的几何变换(扭曲)。此函数通过为模板图像添加掩码来扩展 findTransformECC()。增强相关系数仅在两幅图像均有效的像素上进行评估:在每次迭代中,inputMask 被扭曲到模板框架中并与 templateMask 结合,只有这些掩码的交集才对目标函数有贡献。- 参数
templateImage- 1 或 3 通道模板图像;类型为 CV_8U, CV_16U, CV_32F, CV_64F。inputImage- 输入图像,应使用最终的 warpMatrix 对其进行扭曲,以便提供与 templateImage 相似的图像,类型与 templateImage 相同。templateMask- templateImage 的单通道 8 位掩码,指示对齐中要使用的有效像素。必须与 templateImage 大小相同。inputMask- inputImage 的单通道 8 位掩码,指示扭曲前的有效像素。必须与 inputImage 大小相同。warpMatrix- 浮点型 \(2\times 3\) 或 \(3\times 3\) 映射矩阵(扭曲)。motionType- 参数,指定运动类型- MOTION_TRANSLATION 设置平移运动模型;warpMatrix 为 \(2\times 3\),前 \(2\times 2\) 部分为单位矩阵,其余两个参数由估计得出。
- MOTION_EUCLIDEAN 设置欧几里得(刚体)变换作为运动模型;估计三个参数;warpMatrix 为 \(2\times 3\)。
- MOTION_AFFINE 设置仿射运动模型(默认);估计六个参数;warpMatrix 为 \(2\times 3\)。
- MOTION_HOMOGRAPHY 设置单应性作为运动模型;估计八个参数;warpMatrix 为 \(3\times 3\)。
- 返回
- 自动生成
-
findTransformECCWithMask
public static double findTransformECCWithMask(Mat templateImage, Mat inputImage, Mat templateMask, Mat inputMask, Mat warpMatrix)
根据 ECC 标准,参考:EP08,使用模板图像和输入图像的有效性掩码,寻找两幅图像之间的几何变换(扭曲)。此函数通过为模板图像添加掩码来扩展 findTransformECC()。增强相关系数仅在两幅图像均有效的像素上进行评估:在每次迭代中,inputMask 被扭曲到模板框架中并与 templateMask 结合,只有这些掩码的交集才对目标函数有贡献。- 参数
templateImage- 1 或 3 通道模板图像;类型为 CV_8U, CV_16U, CV_32F, CV_64F。inputImage- 输入图像,应使用最终的 warpMatrix 对其进行扭曲,以便提供与 templateImage 相似的图像,类型与 templateImage 相同。templateMask- templateImage 的单通道 8 位掩码,指示对齐中要使用的有效像素。必须与 templateImage 大小相同。inputMask- inputImage 的单通道 8 位掩码,指示扭曲前的有效像素。必须与 inputImage 大小相同。warpMatrix- 浮点型 \(2\times 3\) 或 \(3\times 3\) 映射矩阵(扭曲)。- MOTION_TRANSLATION 设置平移运动模型;warpMatrix 为 \(2\times 3\),前 \(2\times 2\) 部分为单位矩阵,其余两个参数由估计得出。
- MOTION_EUCLIDEAN 设置欧几里得(刚体)变换作为运动模型;估计三个参数;warpMatrix 为 \(2\times 3\)。
- MOTION_AFFINE 设置仿射运动模型(默认);估计六个参数;warpMatrix 为 \(2\times 3\)。
- MOTION_HOMOGRAPHY 设置单应性作为运动模型;估计八个参数;warpMatrix 为 \(3\times 3\)。
- 返回
- 自动生成
-
readOpticalFlow
public static Mat readOpticalFlow(java.lang.String path)
读取 .flo 文件- 参数
path- 要加载的文件路径。函数 readOpticalFlow 从文件中加载流场并将其作为单个矩阵返回。结果矩阵类型为 CV_32FC2 - 浮点型,2 通道。第一通道对应水平方向的流 (u),第二通道对应垂直方向 (v)。- 返回
- 自动生成
-
writeOpticalFlow
public static boolean writeOpticalFlow(java.lang.String path, Mat flow)将 .flo 文件写入磁盘- 参数
path- 要写入的文件路径flow- 要存储的流场。函数将流场存储在文件中,成功返回 true,否则返回 false。流场必须是 2 通道、浮点型矩阵 (CV_32FC2)。第一通道对应水平方向的流 (u),第二通道对应垂直方向 (v)。- 返回
- 自动生成
-
-