Venus cloud tracking -- August 31, 2006
<- Previous page
5. Recovering flows with FITSFlow
Each of the 8 flows shown previously was used to distort test images #6 and #7, and these
16 results were input to FITSFlow in an attempt to recover the individual flows. In each case,
a domain size of 25 and a range size of 75 was used, as the expected flow was less than 25
pixels in magnitude. The domain size was chosen arbitrarily, based on visual observation of the
features in the test images. See the discussion below for more information about domain size selection.
Both test images produced the desired result. The actual flow values are dx = 10, dy = -10.
Note that the recovery fails at the lower and right edges. These results are from just the initial
correlation surface local maxima. No additional iterations or post-processing was performed.
At left is the intial correlation result for test image 6, while the middle and right are after
25 iterations and post-processing to 2.0 standard deviations. The actual maximum magnitude of the
flow was 36.20 at the corners. It is interesting to note that this maximum is just outside that
which can be detected by the diagonal of the range of each flow element, which is ~35.
All further flows were recovered from 25 iterations and a std-dev of 2.0. Again, the actual maximum
magnitude was 36.20 at the corners, which is slightly larger than the range diagonal. These two flows
should be a reminder that you must make certain that the range is large enough to find a match for
The spurious vectors at left are probably due to the fact that the distorted images were zero
at the 'positive' charge, as all pixels were projected out of that region rather than diminished
This pair of distorted images performed the worst, which is interesting given the simple nature of the
flow. Perhaps this has something to do with shear? Also note that the small magnitude vectors in the
center band appear to have greater errors than do the longer vectors at top and bottom. See below for a
discussion of this effect.
Equally as surprising is how well the vortical flow was recovered, although there does appear to be
more magnitude error in the image with variable size features. In particular note the lack of artifacts at the
saddle points. It is interesting that the recovery seems to work well with 'tidal' distortion, but not with
7. Expand & contract
Similar to the vortical flow above, there are more magnitude errors in the variable size image, while
saddle points, sources, and sinks appear to do well.
Again it is surprising that this distortion did so poorly, given how laminar the flow is. Some kind of
quantitative sensitivity analysis of this flow, and of the shear flow above, is necessary to determine the
source of these errors, as we would expect both of these flow types to be common components of actual
- Although this analysis was primarily visual and subjective, it
appears that FITSFlow does work. There are a few anomalies that need
to be investigated in more detail, and a quantitative measure of how
accurately the flow is recovered is also required. However, a
simple sum-of-squares global error is probably not the best way to
proceed. Instead, a local measure that concentrates on where and
under what circumstances individual vectors are failing to work might
be best. For example, this error may depend on signal strength or
signal variation within a specific domain and range. Also, a
robustness test based on adding Poisson or other spatially correlated
noise to the input would be important to see how well the technique
works on actual images.
- At present there is no objective way to choose a domain size,
other than visually estimating the fit between domain size and average
feature size. In principle, any size from the entire image (which
would match nothing) down to a single pixel (which would match
everything) could be tried. Ideally, the domain size should be small
enough to preserve locality while containing enough image information
to correctly specify the flow. FITSFlow can be adapted to use
variable-size domains, if some criteria for selecting the
size with respect to location can be defined. One possibility might be to
perform the recovery for several grids of different sizes, and then
select a vector at each point from this set of multi-scale candidates
in a manner similar to that currently used to iteratively select candidates from
the spatial set. Once again, it should be stressed that the range size must
be chosen large enough to find a match for the domain within the magnitude
of the flow.
- It is clear that while the recovery works well for vectors of
moderate magnitude (~10-25 pixels), it does more poorly at smaller
magnitudes, especially for those vectors close to a single pixel. The current
correlation surface matching is performed only at integer shifts, so
that all candidate vectors have integer x and y components. For small
magnitude flows this is clearly inadequate. A simple solution to
obtain more resolution is to enlarge the image and interpolate the
added pixels. However, this has the adverse effect of slowing down
the recovery at an order which is probably n^3 or more.
Performing fractional shifts of the domain to generate a correlation
surface might also work, but would probably be as slow. What is
needed is some computationally efficient way to produce vectors with
any number of significant digits, such as an iterative binary approach where
a match to the nearest pixel is performed, and then a match to the
nearest 1/2 pixel, the nearest 1/4 pixel, and so on as desired.
İSky Coyote 2006