4

我正在尝试为脑电图研究制作视觉刺激。视频只是黑帧和白帧之间的闪烁,并且应该在以下速率范围内发生交替:12Hz、24Hz、48Hz、72Hz。

我们的显示器有 144Hz 的刷新率,电脑也很漂亮,我正在用示波器测量视频的成功与否,以确保准确性。因此,硬件应该不是问题;理论上,显示器的刷新率应该可以达到一半。但是,我在 Java 和 MatLab 中都失败了。

我尝试过使用 MatLab:

1) 使用 imwrite() 制作 gif

2) 使用 VideoWriter

3) 使用getframe() 和movie2avi()。

在所有这些方法中,都声明了超高帧率,并且我可以在我的命令窗口中看到在运行期间插入了所有帧。但是,最终输出文件永远不会超过 48Hz。

最重要的是,48Hz 以及 24Hz 甚至 12Hz 文件也存在严重的帧计时问题。

我还尝试使用 Processing 的 MovieMaker 制作文件:我将帧速率设置为 72Hz——输入 72 个 .png 文件的列表作为帧——它应该输出一个以 72Hz 闪烁的 1 秒文件。

然而,结果只有 48Hz,而且帧的时间也不可靠。

如果我没有用尽搜索,我就不会在这里发帖;我真的没主意了。MatLab 和 Processing 都是实现这种高 fps 文件的推荐方法,即使闪烁频率较低,它们也存在很大的时序问题。如果有人对提高高赫兹闪烁的时间保真度(图形设置?编解码器?)或如何使其一直到 72Hz 有任何技巧,我们将不胜感激!

正如我所说,我只使用过 Processing/Java 和 MatLab,所以请随时推荐其他平台。

4

2 回答 2

2

Matlab 有几个免费(如啤酒和自由)工具箱,它们包装了您需要的低级 openGL 命令,以获得您想要的控制类型

MGL仅在 Mac 上运行,但:

mgl 是一组 matlab 函数,用于显示来自 matlab 的全屏视觉刺激。它基于 OpenGL 函数,但将这些函数抽象为更简单的函数,可用于对各种视觉刺激进行编码。

Psychtoolbox在 Mac、Windows 和 Linux 上运行

使用计算机显示器进行视觉心理物理学的吸引力在于它们允许对刺激进行软件规范。运行实验的程序通常用低级语言(例如 C 或 Pascal)编写,以实现对硬件的完全控制,以实现精确的刺激显示……Psychophysics Toolbox 是一个软件包,可将此功能添加到 Matlab 和 Octave 应用程序中在 Macintosh、Linux 和 Windows 计算机上

听起来您才刚刚开始,在这种情况下,我还建议您查看基于 Python 的PsychoPy

PsychoPy 是一个开源包,用于在 Python 中运行实验(Matlab 的真正免费替代品)。PsychoPy 将 OpenGL 的图形优势与简单的 Python 语法相结合,为科学家提供免费且简单的刺激呈现和控制包。

于 2013-10-24T08:21:13.843 回答
2

这不是一个答案。不过,它需要的不仅仅是评论框,所以请多多包涵。

涉及到一些基本问题:

  • 简单地绘制到您的操作系统/图形组合公开的任何设施,根本不能保证绘制的元素从下一帧开始出现(在我知道的所有系统中)。
  • 这仅仅源于这样一个事实,即所有这些组合都明确不是针对脑电图刺激,而是通过视觉理解来消费
  • 许多组合提供了较低级别的工具(例如 OpenGL),它们确实带有这样的承诺,但也带来了其他一系列问题,其中之一是不太舒适的编程环境
  • 对于大多数 OS/Harware 组合,维持这种刺激可能并不容易——144 Hz 转换为不到 7ms——一个时隙,可能会因操作系统的单个错误调度决策或需要双倍时间而错过。即使在快速旋转的磁盘上也能读取。您需要针对一些面向实时的操作系统方言。

编辑

重新阅读您的问题后,我看到您使用 Java。忘了它。单个 GC 中断很容易超过 7 毫秒。

于 2013-10-23T23:33:30.297 回答