问题标签 [image-stabilization]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2826 浏览

c++ - 将 C/++ OpenCV 程序从视频稳定程序更改为 CUDA

我正在做一个 C++ 视频稳定/防抖程序,它: - 在参考框架上获取兴趣点(使用 FAST、SURF、Shi-Matoshi 或 SIFT,可能会尝试更多) - 计算 Lucas-Kanade 光流使用 calcOpticalFlowPyrLK - 获取单应矩阵 - 使用 warPerspective 校正抖动图像(参见下面的代码)

如果您对我的稳定解决方案有任何替代方案,请随时说出来,但这不是这个线程的主题。

由于所有这些都需要很长时间(在我的 i5 计算机上每帧大约 300 毫秒,所以 30 分钟的视频需要很长时间)我正在考虑使用 CUDA 来加快速度。我已经安装了它并开始工作,但是我不确定下一步如何进行。我已经做了一些测试,我知道最耗时的操作是分别使用 calcOpticalFlowPyrLK 和 warpPerspective 获得光流和帧校正。所以理想情况下,至少一开始,我只会使用这两个函数的 CUDA 版本,其余的保持不变。

这可能吗?还是我需要重写所有内容?

谢谢

0 投票
0 回答
1801 浏览

ios - 无法在 iOS8 的 iPhone 6/6+ 上打开图像稳定

好的,所以我撞到了墙上,真的不知道该怎么办。我正在写一个相机应用程序。居然看完了。主要是在 Swift 上写作。在应用程序中,我可以选择打开和关闭图像稳定,这应该很简单。代码如下(stillImageOutput 是 AVCaptureStillImageOutput):

presentMessegePopUp 只是 Alert 的一个包装。问题之一是我只有 iPhone5S,无法真正调试它。但!通过 beta FlightTest 在 4 台设备上进行 6/6+ 测试,所有设备都会弹出此弹出窗口。这意味着他们在“stillImageStabilizationSupported”上变得错误。这是在我的手机上它工作得很好......

根据Apple的这篇文章,所有不超过6+的手机都应该支持它: https ://developer.apple.com/library/ios/technotes/tn2409/_index.html#//apple_ref/doc/uid/DTS40015038- CH1-SINGLE_SHOT__VIDEO__HDR(光学防抖部分)

我试图找出是否有什么东西会干扰这个属性,但到目前为止(一周+)我什么也没找到。

有人可以帮忙吗?

0 投票
1 回答
213 浏览

c++ - GPU 加速 LK 金字塔中的窗口大小限制

我正在对实时馈送执行图像稳定,以便在稳定的图像上运行一些视觉算法(强调“实时”)。目前,这个使用 CPU 实现的 LK 金字塔版本的过程几乎不够快,即使在预先构建金字塔时也是如此(参考图像和“以前的”特征只计算一次),但它需要缩放到处理分辨率约为四倍的图像,这使得它在当前实现中太慢了。我想我可能会尝试通过合并 GPU 来加快速度,因为 OpenCV 已经为支持 CUDA 的设备实现了相同的 LK 方法,即 cv::gpu::PyrLKOpticalFlow 类。我将 ::sparse 调用与一组先前的功能一起使用。

我的主要问题是窗口大小似乎有限制,而我的窗口太大了。该限制作为断言出现在 pyrlk.cpp 文件中:

补丁尺寸在上面确定的地方:

我的问题是我需要一个大约 80x80 像素的窗口大小,这是 A.为什么我要使用 GPU 加速和 B.为什么这在 OpenCV 中似乎不起作用。:) 此外,随着更大分辨率的图像,此窗口大小将需要增长。

我不熟悉实际实现 GPU 加速,所以我想知道是否有人可以解释为什么 OpenCV 中存在这种限制,它是否是硬件或 OpenCV 实现所施加的真正限制,以及是否有办法解决它。这似乎是一个硬件限制,这似乎很奇怪,因为这些是您想要使用 GPU 的情况。我可以通过较小的搜索窗口获得合理的速度,但稳定性对于应用程序来说还不够好。

我需要这么大的搜索窗口大小,因为我正在计算第一(参考)帧的运动。运动是循环的,加上一些小的随机漂移,所以这种方法效果很好,但是当匹配特征可能在 30-40 像素之外(在原始分辨率下)时,需要更多的空间来搜索循环的峰值。

这是在 Linux 上使用 OpenCV 版本 2.4.10,从源代码构建以支持 CUDA。

(这是来自http://answers.opencv.org/question/54579/window-size-limit-in-gpu-accelerated-lk-pyramid/的(稍作修改)重新发布,但似乎没有那里有很多活动,所以希望 SO 提供更好的讨论环境!)

0 投票
1 回答
682 浏览

opencv - Mat 和 vector 中的哪一种与函数estimateRigidTransform() 一起使用更好吗?

众所周知,我们可以将estimateRigidTransform()具有以下两种类型之一的两个参数传递给函数:Mat estimateRigidTransform(InputArray src, InputArray dst, bool fullAffine)

  1. cv::Mat frame1, frame2;
  2. std::vector<cv::Point2f> frame1_features, frame2_features;

即,例如,为了实现视频稳定(抖动移除),我们可以使用以下两种方法之一:

  1. with cv::Mat使用opencv进行视频稳定
  1. std::vector<cv::Point2f> features;

这些方法中哪一种更好用,为什么?

即哪种类型Matvector<Point2f>更好地与函数estimateRigidTransform() 一起使用?

0 投票
1 回答
6193 浏览

opencv - OpenCV:图像稳定

我正在尝试在 OpenCV 中发布处理视频。由于我的相机不是固定的(必须是移动的),因此生成的视频由于振动和平移而非常抖动。因此,我尝试查看的每一帧都有模糊,如果它甚至可以检测到一些模糊图像,这将使我的检测不太准确。

我在网上搜索过,似乎有很多关于用陀螺仪补偿相机运动的讨论。

有没有相机可以帮助解决这个问题?我一直在使用 GoPro。

是否有任何算法可以帮助处理视频?

我没有图像稳定方面的背景,也不知道从哪里开始。将不胜感激任何建议。

0 投票
1 回答
518 浏览

matlab - 视频中固定点的Matlab图像稳定

我试图在我的实验设置中消除相机抖动。我的视频中有固定点。我想用这些固定点通过matlab消除相机的振动。我应该从哪里开始?你有什么建议吗?

0 投票
1 回答
785 浏览

ffmpeg - 同时裁剪为宽屏格式时更好的垂直稳定性

首先:请原谅我问了一个愚蠢或有些不知情的问题。我对后期处理视频,稳定等完全陌生。

我用佳能 5D2 拍摄 1920x1080 压缩电影文件,然后裁剪为电影 1920x800 (2.4:1)。(使用魔灯时,我在拍摄时使用叠加位图。是的,我知道使用魔灯我可以拍摄 RAW,但我的卡和计算机都不够快,无法处理那么多数据。)

在进行任何制作之前,我会将较大的 .MOV 文件转换为较小的文件,同时稍微稳定一下视频,并将其裁剪为 1920x800。我这样做ffmpeg大致如下:

然而,大量垂直分辨率被裁剪的事实并没有被用来更好地处理稳定变换。通常,图像会被垂直拉伸/倾斜,而考虑到所使用的裁剪,这并不是真正需要的。

是否有可能以任何方式在稳定转换中有效地使用作物?

下面的框架就是一个例子。在这里,我宁愿让图像完全不垂直拉伸,而只是稍微静态缩放(裁剪),因为水平黑色边框是这一帧中唯一的问题。

在此处输入图像描述

0 投票
1 回答
3878 浏览

video - 小米易视频防抖

我正在寻找免费软件来稳定小米易运动相机拍摄的视频。Ffmpeg 稳定化使视频看起来“果冻”。

提前致谢。

0 投票
0 回答
133 浏览

image - 如何有效地稳定一组图像?

我定期以 30 Hz 的频率记录数据,一次记录一小时(超过 100,000 帧)。我正在记录一个移动最小(小于一百像素)的对象。每个帧都存储为一个 .tiff 文件。

我正在尝试有效地生成“稳定矩阵”。例如,如果图像向左移动了两个像素,向上移动了一个像素,那么我想生成一个包含一行的矩阵:

[2, 1]

表示图像需要在 x 轴上移动 2 个单位,在 y 轴上移动一个单位。矩阵中的每一行都将以这种方式表示必要的“移位”。

这可能吗?我愿意使用任何语言或平台。我还可以访问我大学的集群。我收到了一个用 Matlab 编写的代码,但运行大约需要 12 个小时。我希望找到更有效的解决方案。任何指向正确方向的指针将不胜感激。

提前致谢。

0 投票
1 回答
1396 浏览

python - Opencv Python VIDEOSTAB 类

我需要为我的 opencv 项目实现稳定功能。有一个videostab 类,但它只针对c++(http://docs.opencv.org/trunk/d5/d50/group__videostab.html)进行了描述。有谁知道如何在 Python 中使用它?顺便说一句,我将稳定实时视频源。