Chris Klink 4c6918ae5b gin commit from chris-mh16 3 年 前
..
@videoReader 4c6918ae5b gin commit from chris-mh16 3 年 前
@videoWriter 4c6918ae5b gin commit from chris-mh16 3 年 前
FAQ.txt 4c6918ae5b gin commit from chris-mh16 3 年 前
GPL.txt 4c6918ae5b gin commit from chris-mh16 3 年 前
INSTALL.dshow.txt 4c6918ae5b gin commit from chris-mh16 3 年 前
MIT.txt 4c6918ae5b gin commit from chris-mh16 3 年 前
README.txt 4c6918ae5b gin commit from chris-mh16 3 年 前
TODO.txt 4c6918ae5b gin commit from chris-mh16 3 年 前
defaultVideoIOPlugin.m 4c6918ae5b gin commit from chris-mh16 3 年 前
videoReader_DirectShow.mexw32 4c6918ae5b gin commit from chris-mh16 3 年 前
videoWriter_DirectShow.mexw32 4c6918ae5b gin commit from chris-mh16 3 年 前
videoread.m 4c6918ae5b gin commit from chris-mh16 3 年 前

README.txt

===============================================================================

videoIO -- granting easy, flexible, and efficient read/write access
to video files in Matlab on Windows and GNU/Linux platforms.

by Gerald Dalley

===============================================================================

Contents
--------
1) Legalese (MIT license on Windows, GPL on Linux)
2) Quick Description
3) Motivation
4) Similar projects
5) Acknowledgments

Legalese
--------
This software is released under the MIT license (see MIT.txt) whenever
possible. If linked against the GPL version of ffmpeg, this software
inherits the GPL license as well (see MIT.txt and GPL.txt).

Quick Description
-----------------
videoIO is a library designed to allow easy and efficient reading and
writing of video files in Matlab on Windows and Linux. It is designed to
enhance and/or complement other options that were available at the time it
was originally written (summer 2006).

To install the library on Microsoft Windows, see INSTALL.dshow.txt.
To install the library on GNU/Linux and similar operating systems, see
INSTALL.ffmpeg.txt.

As a quick usage example, here's how to animate one of the test movies:

vr = videoReader('tests/numbers.uncompressed.avi'); % create read object
while (next(vr)) % read next frame
img = getframe(vr); % extract frame
imshow(img);
pause(0.01);
end
vr = close(vr); % release resources

For more detailed usage examples and instructions, type the following in
Matlab:
help buildVideoIO
help videoReader
help videoWriter
help videoread
and see
tests/videoWriterDemo.m

Motivation
----------
Matlab's Image Processing Toolbox ships with the AVIREAD function which
provides limited video reading functionality. Specifically, as of version
2006a, AVIREAD has the following key limitations:
1) Inability to decode many stream types on Windows (e.g. try using AVIREAD
on the supplied tests/numbers.3ivx.avi file)
2) Only uncompressed AVI files are supported on non-Windows platforms, and
uncompressed AVI files are poorly supported on Windows.
3) Only AVI files are supported (not WMV, MP4, MPG, etc.)
4) All frames are read at once, meaning that if the user doesn't have enough
RAM to hold the entire file's uncompressed contents in memory, it must be
it must be read in chunks, resulting in a O(n^2) performance cost (where
n is the number of chunks).

The Matlab Image Processing Toolbox also ships with AVIFILE, a function for
writing videos. As of version 2006a, AVIFILE has the following key
limitations that are overcome by this library:
1) Very limited codec support on Windows: only Indeo3, Indeo5, Cinepak,
MSVC, RLE, and no compression are available. All of these codecs are
quite dated and provide poor compression relative to newer codecs.
2) No codec support on Unix/Linux platforms. Only uncompressed videos
may be created.
AVIFILE only writes to AVI files, and depending on the operating system,
videoIO shares this limitation.

Mathworks has also created some Simulink filters in the Video and Image
Processing Blockset. These filters require purchasing extra packages and
the usage of the Simulink framework. They also seem to share the same codec
restrictions as AVIREAD and AVIFILE.

videoIO either overcomes or provides a mechanism to overcome all of these
limitations. When reading, it is designed to stream in frames one at a time
so that large amounts of memory need not be allocated for the video. It
currently supports virtually any video file that can be played in Windows
Media Player (on Windows) or ffmpeg (on Linux).

The library has been designed so that it is (relatively) easy to add support
for other video files. For example, if an ambitious person wanted to add
support for QuickTime files, that could be done in a way that is largely
transparent to the end user.

Similar Projects
----------------
aviread, avifile (Mathworks)
In the Description section above, we described the relationship between
videoIO and aviread/avifile.

mplayerMex (http://cs-people.bu.edu/tvashwin/mplayerMex/)
The idea is very similar to ours, in principle. mplayerMex attempts to tie
into the powerful MPlayer application instead of using ffmpeg (like we do).
Unfortunately, mplayerMex is not fully implemented (e.g. closing files is
not supported as of July 2006). We also had difficulty getting mplayerMex
to work with the current version of MPlayer as mplayerMex is not being
actively maintained. Does not support writing new video files.

dxAvi (http://cs-people.bu.edu/tvashwin/dx_avi/)
Written by the same person that wrote mplayerMex, this mex function works on
Windows. This implementation uses the one-shot mode of DirectShow and
performs an explicit seek for every frame that's read. In the past, we've
noticed performance and/or round-off problems when using this approach, but
it would be instructive to do a head-to-head experiment again using many
different codecs, then switch to their approach if it is better. By using
the one-shot mode, dxAvi avoids many of the threading headaches we
encounter, but potentially exposes itself to more imprecise seeking issues.
Starting with DirectX 8.1, Microsoft recommends not using the oneshot mode.
Does not support writing new video files.

NetAvi (http://cs-people.bu.edu/tvashwin/netAvi/)
Also written by the author of mplayerMex and dxAvi, a server process is run
on 32-bit Windows for decoding videos. Clients read decoded frames over a
socket connection. Installation appears to be very easy. The networked
approach requires that all video files be accessible from the server box and
creates additional network traffic as it transmits uncompressed frames.
Does not support writing new video files.

Acknowledgments
---------------
We would like to thank Josh Midgal (jmigdal@mit.edu) for figuring out how to
get DirectShow to behave in a pull-mode instead of a push-mode. The general
design and especially the core interaction model between DirectShowVideo::seek
and DirectShowVideo::SampleCB is based off his work.

We would also like to thank all those who have donated time to the ffmpeg,
xvid, and x264 projects.
datacite.yml
Title Population receptive fields in non-human primates from whole-brain fMRI and large-scale neurophysiology in visual cortex.
Authors Klink,Chris;Netherlands Institute for Neuroscience;ORCID:0000-0002-6784-7842
Chen,Xing;Netherlands Institute for Neuroscience
Vanduffel,Wim;KU Leuven;ORCID:0000-0002-9399-343X
Roelfsema,Pieter;Netherlands Institute for Neuroscience;ORCID:0000-0002-1625-0034
Description This data-set contains all data and code for the paper 'Population receptive fields in non-human primates from whole-brain fMRI and large-scale neurophysiology in visual cortex.'
License Creative Commons CC0 1.0 Public Domain Dedication (https://creativecommons.org/publicdomain/zero/1.0/)
References Direct comparison of population receptive fields from fMRI and large-scale neurophysiological recordings in awake non-human primates. (2020) P. Christiaan Klink, Xing Chen, Wim Vanduffel, Pieter R. Roelfsema; bioRxiv 2020.09.05.284133; doi: https://doi.org/10.1101/2020.09.05.284133 [doi:10.1101/2020.09.05.284133] (IsSupplementTo)
Funding NWO, Crossover Program 17619 'INTENSE'
NWO, STW-Perspectief P15-42 'NESTOR'
NWO, VENI 451.13.023
EU FP7, ERC-339490 'Cortic_al_gorithms'
EU, Human Brain Project (agreements 720270 and 748 785907, SGA1 and SGA2)
Friends Foundation of the Netherlands Institute for Neuroscience
Keywords Neuroscience
Neuroimaging
Neurophysiology
Non-human primate
Population receptive field
Resource Type Dataset