OpenCV 4.11.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或其选定区域(提升到2的幂)添加到累加器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 的 Hanning 窗口
Mat hann;
createHanningWindow(hann, Size(100, 100), CV_32F);
n 维密集数组类
定义 mat.hpp:829
Size2i Size
定义 types.hpp:370
#define CV_32F
定义 interface.h:78
void createHanningWindow(OutputArray dst, Size winSize, int type)
此函数计算二维汉宁窗系数。
参数
dst目标数组,用于放置 Hanning 系数
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 的每一行都是独立的一维傅里叶谱。如果您不想使用此标志,则只需添加 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 对数组进行填充。

该函数执行以下等式:

  • 首先,它对每个图像应用 Hanning 窗口(参见 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\}\}\]

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