Fri Jul 11 17:28:55 CEST 2008

Hough over 0->pi/2

( exploration log )

Got the Sobel + HT working in PF; drawing some nice pictures. Thinking
about letting theta + pi/2 vote for theta. What should r be?
Hmm.. This gives two mixed r spectra: for a certain theta, grid might
shift, so this doesn't seem like a good idea.

The pictures help a lot to build some intuition though.. Looking at
it, it doesn't seem too difficult to estimate scale, phase and angle,
right from the image, using the right biasing (filtering).

Try some multires?

With r,t going over their full range, there are 4 angles, pi/2
apart. How to change the transform such that a symmetric diagram over
0->pi/2 is possible? 

The full diagram is redundant, since for each (r,t) there is an
(-r,t+pi). The first reduction is to either halve r or halve
t. Let's halve t.

I'm using only one quadrant for x,y. Maybe change that too? Yes. Gives
a prettier picture: the whole (r,t) plane is used.

What about this one: Compute the sum of squares over r. Since we know
the integral is constant, the integral of squares will give some
distinction between highly concentrated regions and spread-out
regions. Is this entropy?

No, entropy is  \sum p_i ln p_i

p_i don't need to be normalized -> it offsets the entropy by 
ln \sum p_i

Both entropy and energy are superlinear nonlinearities, so will
emphasize outliers. Which one is the more natural measure?
Interpretation of the r spectrum as a PDF is quite straightforward,
but interpreting it as an energy, not so.. Maybe the potential energy
of a heap of sand? 

Potential energy is proportional to height, integral from 0->top is
quadratic in top.

Plotting the energy seems to give quite a clear distinction. However,
this still requires the construction of a histogram.

Instead of using energy or entropy, another way to introduce bias is
to assume the r period R is assumed to be known, it can be used to
construct a filter: simply summing (cos 2 pi r / R, sin 2 pi r / R)

So, instead of voting for the bundle

            (r,t) | r = x cos t + y cos t,  t \in [0,pi]

we vote for the phasor:

            (e^{i r/R} , t)

The advantage is that the r dimension can be reduced by immediately
accumulating the phasors (non-periodic contributions will interfere
destructively). This basically demodulates the grid carrier.

My intuition says it's possible to get away with fixing one parameter
to get a simpler/faster kernel function that can then be used to
perform incremental refinement of estimates of that parameter.

This also might benefit from representing the image as binary data,
reducing memory accesses. (Done: I don't see dramatic speedup, maybe
because at that time it was still compute bound due to sin/cos

( Also, it might help to switch to the Radon transform, to compute the
  line integral directly. Hmm.. that's not the same: Radon transform
  would help if we're looking for lines, but here there is some
  benefit to computing a whole r-spectrum, which can then be reduced
  to a single phasor. )