Physiological Noise in FMRI
As pointed out by Larry Frank (UCSD), the rate at which we gather the data is plenty fast to avoid aliasing in time from the heartbeat and respiration -- say, one image every 100 ms -- but the problem is that the images are spread out among various slices, so in any given voxel, the TR is 2000 ms or more.
However, the cardiac and respiratory cycle are the same for all voxels. Admittedly, their impact on each voxel's time series will be different. So what we'd like to estimate, from the reconstructed magnitude EPI time series alone, is two things:
(t) the time series for the heartbeat and respiration (e.g., their "phase", as in Gary Glover's RETROICOR)
(x) the coefficients in each voxel that measure the effect of the (t) estimates on the time series of data in that voxel.
Numerology regarding (t): if we have N volumes in time with a given TR, then our frequency resolution is 1/(N⋅TR). The heartbeat (for most people) is centered at 1.1 HZ ± 0.1 Hz, so let's say we need a bandwidth of 0.2 Hz for this, which is 0.4 Hz when we consider negative frequencies, which is 0.4⋅&N⋅TR values to estimate. If there are V voxels in the brain, we have N⋅V data values to work with. As long as V>>0.4⋅TR≈1, this is "trivial" (except for the details). A similar calculation applies to estimating the respiration. The spatial estimate of the (x) coefficients is similar to RETROICOR, at least in principle.
Of course, both (t) and (x) have to be estimated at once. This is reminiscent of spatial factorizing as in principal components, so I suppose one model would lead to some kind of eigenvalue/vector problem. Alternatively, it might be useful to pre-select only a given set of voxels with extra-large variance, as those most likely to evidence the physiological fluctuations. Then the (t) data can be estimated from these (somehow), and afterwards RETROICOR directly applied to get the (x) stuff.
All the above is without equations. The next step is the hard part -- figuring out a model that is plausible and that leads to an algorithm. Volunteers?