After happily using the v9 image assistant to crop elliptically an image, and then the drawing tools to put a white disk in the middle, I turned this image:
into the following one:
that can be imported with
im=Import["https://i.sstatic.net/NNzNM.png"]
The overall objective is to programatically count the number of those radial lines. Due to the lighting, there are parts of the image in which those lines are darker than its surroundings and others where it is lighter.
So far I haven't found a good way worth posting, so any pointer to a good solution would be appreciated. I have the feeling the image processing people will see better ways of dealing with this and I will be grateful to learn something. Thanks a lot
EDIT
A first approach with @RahulNarain's suggestion would be
int = ListInterpolation[
ImageData[ColorConvert[im, "GrayLevel"]], {{-1, 1}, {-1, 1}}];
polInt = Function[t, int[0.95 Cos[2 \[Pi] t], 0.95 Sin[2 \[Pi] t]]];
Plot[polInt[t], {t, 0, 1}, AspectRatio -> 0.2, ImageSize -> Large,
PlotRange -> Full]
Now,
ListLinePlot[Abs@Fourier[polInt@Range[0, 1 - 0.001, 0.001]],
PlotRange -> {{0, 500}, {0, 50}}]
A better zoom shows the maximum at 98
However, manual counting (could be wrong) gave me 96, and nikie's approach is suggesting 97. 1 or 2 off count could be due to the light changes making the real ridge be the local minimum at some places and local maximum at others
Sharpen
may be what you're looking for - nest it 10 times. $\endgroup$