Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.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
使用matlab或java的144Hz监视器的高帧速率问题_Java_Matlab_Video_Processing_Frame Rate - Fatal编程技术网

使用matlab或java的144Hz监视器的高帧速率问题

使用matlab或java的144Hz监视器的高帧速率问题,java,matlab,video,processing,frame-rate,Java,Matlab,Video,Processing,Frame Rate,我正试图为脑电图研究做一个视觉刺激。视频只是在黑色帧和白色帧之间闪烁,交替应在以下频率范围内发生:12Hz、24Hz、48Hz、72Hz 我们的显示器有144Hz的刷新率,电脑也很漂亮,我正在用示波器测量视频的成功与否,以确保准确性。因此,硬件不应成为问题;理论上,监视器的刷新率应该可以达到一半。然而,我在Java和MatLab方面都失败了 我尝试过使用MatLab: 1) 使用imwrite()生成gif 2) 使用录像机 3) 使用getframe()和movie2avi() 在所有这些方法

我正试图为脑电图研究做一个视觉刺激。视频只是在黑色帧和白色帧之间闪烁,交替应在以下频率范围内发生:12Hz、24Hz、48Hz、72Hz

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

我尝试过使用MatLab:

1) 使用imwrite()生成gif

2) 使用录像机

3) 使用getframe()和movie2avi()

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

除此之外,48Hz、24Hz甚至12Hz文件的帧也存在严重的定时问题

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

然而,结果仅在48Hz下出现,帧的定时也不可靠

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


正如我所说,我只使用了Processing/Java和MatLab,所以请随意推荐另一个平台。

这不是答案。不过,它需要的不仅仅是评论框,所以请耐心听我说

涉及到一些基本问题:

  • 简单地绘制到OS/Graphics combo公开的任何工具,根本不能保证从下一帧开始(在我所知道的所有系统中)绘制的元素都存在
  • 这仅仅源于这样一个事实,即所有这些组合显然不是用于EEG刺激,而是用于视觉理解
  • 许多组合提供了较低级别的工具(例如OpenGL),它们确实有这样的承诺,但也带来了其他问题,其中之一就是不太舒适的编程环境
  • 对于大多数操作系统/硬件组合,维持这种刺激(144 Hz转换为不到7毫秒)的时间段可能不是一件小事,操作系统的一个错误调度决策或即使在高速旋转的磁盘上也需要双重读取可能会错过这一时间段。您需要瞄准一些面向实时的操作系统方言
编辑


在重读你的问题之后,我看到你在使用Java。算了吧。单个GC中断可能很容易超过7毫秒。

有两个免费的(如beer和freedom)Matlab工具箱,它们包装了获得所需控制类型所需的低级openGL命令

仅在Mac上运行,但:

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

在Mac、Windows和Linux上运行

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

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

PsychoPy是一个开源软件包,用于在Python中运行实验(Matlab的真实免费替代品)。PsychoPy将OpenGL的图形优势与简单 Python语法给科学家们一个自由而简单的刺激 演示和控制包


为了更好地控制视频,我认为你使用了错误的语言。您正在寻找对硬件资源的实时控制。你应该考虑在C.做这件事,你还应该提到你在你的豪华电脑上使用的操作系统。为了显示与硬件同步的东西,你必须把你的时间写在非常严格的公差上。您必须在没有驱动程序的情况下直接控制硬件(即,您必须编写自己的驱动程序或使用允许您正确计时的驱动程序)。这当然不会在Java中发生,并且可能发生,也可能不发生,这取决于操作系统、显示硬件和驱动程序。