Track Separation Detection


Problem

From a scanned image, we would like to detect the outermost audio point, the innermost audio point, and all the points of separation between tracks. 


Solution

The program cuts out a section of the image, going from the centerpoint upwards to the edge of the image.  A typical intensity plot of this cross section (after gaussian smoothing) looks something like this:



The left part of the plot is closer to the outter edge of the record, and the right part is closer to the center.  The area between roughly x=300 and x=5200 is highly regular, and it is a cross section of all the grooves at a constant angle - this is the interval that we want to find.  The extreme low peaks in this interval are the track separations.

To find the outtermost/innermost points, the cross section is convolved against a filter that "looks like" a typical interval of 30 grooves.  This filter is actually

filter(t) = cos(freq*t)+isin(freq*t),

where the frequency corrseponds to the density of the grooves.  The density is also discovered in this phase, by running FFT's on random sufficiently large subwindows of the cross section, and summing up the absolute values of the different FFT vectors - the peak in the sum of absolute values of FFT's corresponds to the density of the grooves.  The cross section convolved with the filter looks like this:



It is clear that the important area has peaks that dominate peaks in unimportant areas.  A heuristic based on this is used for determining the outermost and innermost points.

The song separations between the outermost and innermost points are found by a simple heuristic: these points are local minimum in a windows of at least 3 grooves before and 3 grooves after, and this minimum also has to be less than a threshold that is calculated from simple statistics.

.m files: get_separation.m