Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opencv 将以较低分辨率计算的变换应用于较高分辨率的对象_Opencv_Matrix_Transform_Scale_Flow - Fatal编程技术网

Opencv 将以较低分辨率计算的变换应用于较高分辨率的对象

Opencv 将以较低分辨率计算的变换应用于较高分辨率的对象,opencv,matrix,transform,scale,flow,Opencv,Matrix,Transform,Scale,Flow,我正在开发一个iOS应用程序,它必须计算连续实时视频帧之间的变换矩阵。我用OpenCV计算光流,然后找到仿射矩阵 这个过程运行得很好,但有点慢,所以我现在在开始处理之前,将每个帧的大小降低一半。问题是,我以后必须将变换应用到另一个具有原始分辨率的视频帧(是我计算矩阵的分辨率的两倍) 我的问题是:我应该如何将为分辨率为X的帧计算的变换矩阵应用于分辨率为2X的另一帧?我知道我应该以某种方式“缩放”矩阵,但不确定如何。我尝试过将矩阵的平移分量乘以2,这几乎可以完美地工作(尽管我不明白为什么),但依赖于

我正在开发一个iOS应用程序,它必须计算连续实时视频帧之间的变换矩阵。我用OpenCV计算光流,然后找到仿射矩阵

这个过程运行得很好,但有点慢,所以我现在在开始处理之前,将每个帧的大小降低一半。问题是,我以后必须将变换应用到另一个具有原始分辨率的视频帧(是我计算矩阵的分辨率的两倍)

我的问题是:我应该如何将为分辨率为X的帧计算的变换矩阵应用于分辨率为2X的另一帧?我知道我应该以某种方式“缩放”矩阵,但不确定如何。我尝试过将矩阵的平移分量乘以2,这几乎可以完美地工作(尽管我不明白为什么),但依赖于变换有时并不准确


一种可能的解决方案是将帧缩放到其大小的一半,应用变换,然后将其缩放回其原始大小,但这会降低性能,这就是为什么我试图计算一个矩阵,我以后可以用它来变换帧。

如果你使用从H_00到H_22的单应矩阵,那么你必须对H_00和H_11应用一个比例因子

我会推荐另一种解决方法。跟踪或估计后。如果x0[n],y0[n]是起点,而x1[n],y1[n]是终点与比例因子相乘,而不是运行findHomography或getAffineMatrix。例如,假设w0=200和h0=100是您估计的帧的宽度和高度,w1=400和h1=300是您要应用的帧。Than sx=2和sy=3是比例因子,x0[n]=x0[n]*sx和y0[n]=y0[n]*sy和x1[n]=x1[n]*sx等