OpenCV  4.10.0
开源计算机视觉
加载中...
搜索中...
无匹配项
函数
运动分析和目标跟踪

详细描述

函数

void cv::accumulate (InputArray src, InputOutputArray dst, InputArray mask=noArray())
 将图像添加到累加器图像中。
 
void cv::accumulateProduct (InputArray src1, InputArray src2, InputOutputArray dst, InputArray mask=noArray())
 将两个输入图像的逐元素乘积添加到累加器图像中。
 
void cv::accumulateSquare (InputArray src, InputOutputArray dst, InputArray mask=noArray())
 将源图像的平方添加到累加器图像中。
 
void cv::accumulateWeighted (InputArray src, InputOutputArray dst, double alpha, InputArray mask=noArray())
 更新运行平均值。
 
void cv::createHanningWindow (OutputArray dst, Size winSize, int type)
 此函数计算二维汉宁窗系数。
 
void cv::divSpectrums (InputArray a, InputArray b, OutputArray c, int flags, bool conjB=false)
 对第一个傅里叶谱进行逐元素除以第二个傅里叶谱。
 
Point2d cv::phaseCorrelate (InputArray src1, InputArray src2, InputArray window=noArray(), double *response=0)
 该函数用于检测两个图像之间发生的平移位移。
 

函数文档

◆ accumulate()

void cv::accumulate ( InputArray  src,
InputOutputArray  dst,
InputArray  mask = noArray() 
)
Python
cv.accumulate(src, dst[, mask]) -> dst

#include <opencv2/imgproc.hpp>

将图像添加到累加器图像中。

该函数将 src 或其部分元素添加到 dst 中

\[\texttt{dst} (x,y) \leftarrow \texttt{dst} (x,y) + \texttt{src} (x,y) \quad \text{if} \quad \texttt{mask} (x,y) \ne 0\]

该函数支持多通道图像。每个通道都独立处理。

函数 cv::accumulate 可用于收集静止摄像机所看到的场景背景的统计信息,以及用于后续的前景-背景分割。

参数
src类型为 CV_8UC(n)CV_16UC(n)CV_32FC(n)CV_64FC(n) 的输入图像,其中 n 是正整数。
dst与输入图像具有相同通道数且深度为 CV_32F 或 CV_64F 的累加器图像。
mask可选操作掩码。
另请参阅
accumulateSquareaccumulateProductaccumulateWeighted

◆ accumulateProduct()

void cv::accumulateProduct ( InputArray  src1,
InputArray  src2,
InputOutputArray  dst,
InputArray  mask = noArray() 
)
Python
cv.accumulateProduct(src1, src2, dst[, mask]) -> dst

#include <opencv2/imgproc.hpp>

将两个输入图像的逐元素乘积添加到累加器图像中。

该函数将两个图像或其选定区域的乘积添加到累加器 dst 中

\[\texttt{dst} (x,y) \leftarrow \texttt{dst} (x,y) + \texttt{src1} (x,y) \cdot \texttt{src2} (x,y) \quad \text{if} \quad \texttt{mask} (x,y) \ne 0\]

该函数支持多通道图像。每个通道都独立处理。

参数
src1第一个输入图像,1 通道或 3 通道,8 位或 32 位浮点数。
src2第二个输入图像,类型和大小与 src1 相同。
dst累加器图像,通道数与输入图像相同,32 位或 64 位浮点数。
mask可选操作掩码。
另请参阅
accumulateaccumulateSquareaccumulateWeighted

◆ accumulateSquare()

void cv::accumulateSquare ( InputArray  src,
InputOutputArray  dst,
InputArray  mask = noArray() 
)
Python
cv.accumulateSquare(src, dst[, mask]) -> dst

#include <opencv2/imgproc.hpp>

将源图像的平方添加到累加器图像中。

该函数将输入图像 src 或其选定区域(平方)添加到累加器 dst 中

\[\texttt{dst} (x,y) \leftarrow \texttt{dst} (x,y) + \texttt{src} (x,y)^2 \quad \text{if} \quad \texttt{mask} (x,y) \ne 0\]

该函数支持多通道图像。每个通道都独立处理。

参数
src输入图像为 1 通道或 3 通道,8 位或 32 位浮点数。
dst累加器图像,通道数与输入图像相同,32 位或 64 位浮点数。
mask可选操作掩码。
另请参阅
accumulateSquareaccumulateProductaccumulateWeighted

◆ accumulateWeighted()

void cv::accumulateWeighted ( InputArray  src,
InputOutputArray  dst,
double  alpha,
InputArray  mask = noArray() 
)
Python
cv.accumulateWeighted(src, dst, alpha[, mask]) -> dst

#include <opencv2/imgproc.hpp>

更新运行平均值。

该函数计算输入图像 src 和累加器 dst 的加权和,使 dst 成为帧序列的运行平均值

\[\texttt{dst} (x,y) \leftarrow (1- \texttt{alpha} ) \cdot \texttt{dst} (x,y) + \texttt{alpha} \cdot \texttt{src} (x,y) \quad \text{if} \quad \texttt{mask} (x,y) \ne 0\]

也就是说,alpha 调节更新速度(累加器“忘记”先前图像的速度有多快)。该函数支持多通道图像。每个通道都独立处理。

参数
src输入图像为 1 通道或 3 通道,8 位或 32 位浮点数。
dst累加器图像,通道数与输入图像相同,32 位或 64 位浮点数。
alpha输入图像的权重。
mask可选操作掩码。
另请参阅
accumulateaccumulateSquareaccumulateProduct

◆ createHanningWindow()

void cv::createHanningWindow ( OutputArray  dst,
Size  winSize,
int  type 
)
Python
cv.createHanningWindow(winSize, type[, dst]) -> dst

#include <opencv2/imgproc.hpp>

此函数计算二维汉宁窗系数。

有关详细信息,请参阅 (http://en.wikipedia.org/wiki/Hann_function) 和 (http://en.wikipedia.org/wiki/Window_function)。

下面显示了一个示例

// 创建大小为 100x100 且类型为 CV_32F 的汉宁窗
Mat hann;
createHanningWindow(hann, Size(100, 100), CV_32F);
n 维密集数组类
定义 mat.hpp:812
Size2i Size
定义 types.hpp:370
#define CV_32F
定义 interface.h:78
void createHanningWindow(OutputArray dst, Size winSize, int type)
此函数计算二维汉宁窗系数。
参数
dst将汉宁系数放置在其中的目标数组
winSize窗口大小规格(宽度和高度都必须 > 1)
type创建的数组类型

◆ divSpectrums()

void cv::divSpectrums ( InputArray  a,
InputArray  b,
OutputArray  c,
int  flags,
bool  conjB = false 
)
Python
cv.divSpectrums(a, b, flags[, c[, conjB]]) -> c

#include <opencv2/imgproc.hpp>

对第一个傅里叶谱进行逐元素除以第二个傅里叶谱。

函数 cv::divSpectrums 对第一个数组进行逐元素除以第二个数组。数组是 CCS 打包或复数矩阵,是实数或复数傅里叶变换的结果。

参数
a第一个输入数组。
b第二个输入数组,大小和类型与 src1 相同。
c输出数组,大小和类型与 src1 相同。
flags操作标志;当前,唯一支持的标志是 cv::DFT_ROWS,它指示 src1 和 src2 的每一行都是独立的 1D 傅里叶谱。如果您不想使用此标志,则只需添加 0 作为值。
conjB可选标志,在乘法之前对第二个输入数组进行共轭(true)或不进行共轭(false)。

◆ phaseCorrelate()

Point2d cv::phaseCorrelate ( InputArray  src1,
InputArray  src2,
InputArray  window = noArray(),
double *  response = 0 
)
Python
cv.phaseCorrelate(src1, src2[, window]) -> retval, response

#include <opencv2/imgproc.hpp>

该函数用于检测两个图像之间发生的平移位移。

该操作利用傅里叶位移定理来检测频域中的平移位移。它可用于快速图像配准以及运动估计。有关详细信息,请参阅 http://en.wikipedia.org/wiki/Phase_correlation

计算两个提供的源数组的互功率谱。如果需要,使用 getOptimalDFTSize 对数组进行填充。

该函数执行以下等式

  • 首先,它对每个图像应用汉宁窗(请参阅 http://en.wikipedia.org/wiki/Hann_function)以消除可能的边缘效应。此窗口会在数组大小发生更改时进行缓存,以加快处理时间。
  • 接下来它计算每个源数组的正向 DFT

    \[\mathbf{G}_a = \mathcal{F}\{src_1\}, \; \mathbf{G}_b = \mathcal{F}\{src_2\}\]

    其中 \(\mathcal{F}\) 是正向 DFT。
  • 然后它计算每个频域数组的互功率谱

    \[R = \frac{ \mathbf{G}_a \mathbf{G}_b^*}{|\mathbf{G}_a \mathbf{G}_b^*|}\]

  • 接下来通过逆 DFT 将互相关转换回时域

    \[r = \mathcal{F}^{-1}\{R\}\]

  • 最后,它计算峰值位置并计算峰值周围 5x5 加权质心以实现亚像素精度。

    \[(\Delta x, \Delta y) = \texttt{weightedCentroid} \{\arg \max_{(x, y)}\{r\}\}\]

  • 如果非零,响应参数计算为峰值位置周围 5x5 质心内 r 元素的总和。它被归一化为最大值为 1(表示存在单个峰值),并且当存在多个峰值时将更小。
参数
src1源浮点数组(CV_32FC1 或 CV_64FC1)
src2源浮点数组(CV_32FC1 或 CV_64FC1)
窗口具有窗口系数的浮点数组,用于减少边缘效应(可选)。
响应峰值周围 5x5 质心内的信号功率,在 0 到 1 之间(可选)。
返回
检测到的两个数组之间的相位差(亚像素)。
另请参阅
dft, getOptimalDFTSize, idft, mulSpectrums createHanningWindow