09 floater optics revisited
DOCX · 160.3 KB
Open DOCX file
Phil's research log dated 12/31/02 through 1/9/03, with a contents list and sections on eye optics, incoherent sources and Babinet's principle for a disk. It covers a geometric floater model, contrast sensitivity (CSF) and visibility rules, spreadsheet and DLL numerical work, and the Airy hole field. He concludes the model explains floater size, rings and central bright spots but not transparency or missing dark dots.
AI-written summary; may contain errors.
Extracted text (machine-read; may contain errors)
Floater Optics Revisited PhL 12.31.02
This document covers work done over a period 12/31/02 through 1/9/03. Although I did not end up with the ultimate end result theory of floaters, I did do very many things that are worth indexing here. And I got a theory that is at least semi-reasonable in that it explains: (1) why floaters I see have the general size that I see them have; (2) why they have rings despite incoherent sources; (3) why some have central bright spots. All the theory here models a floater as a 8 diameter flat opaque disk parallel to the retina plane, and makes use of Babinet's Principle to find the exact Fraunhofer field of the disk, using Airy for the hole.
Contents of this document:
reminders about basic eye lens optics (Fig 1, Fig 2)
notion of incoherent sources like blue sky, how to handle them
two incoherent sources, figure 4: the intensity summing rule for incoherent sources
Figure 5, doing a 1D continuous extended source: the pinhole camera idea
Bogus wrong theorem about Babinet for Intensity with Incoherent sources
Calculation of diffraction of a hole with point source at off-axis position - t. Also computed the pattern from "no hole" so could add them to get a correct Babinet result for field from a disk. This calculation was resumed later, see "conclusion" section later in this list.
Figure 6 and Figure 7: the eye as a compound system
Figure 8 and "floatergeometric.xls": a purely geometric floater model. Note that this model gives no diffraction rings, just taper regions. Diffraction is completely ignored in this model!
Contrast Sensitivity of the Eye. Weber-Fechner Law says Lthreshold/L = k, independent of L, but we know this is not strictly true. Most plots show that the CSF does depend on L somewhat. Also, CSF depends on the spatial frequency of the stimulus, the cycles per degree or cpd. Learned here that these plots are usually of CSF = inverse of Lthreshold/L . My problem here is that these graphs are made with extended line patterns, not with isolated dots, so not sure how to interpret the results.
Yard experiment shows that I can see retina shadows down to 2.8 radius where cpd = 40. Some CSF curves show curve correctly hitting 1 at this point, other curves disagree a bit.
lux, Candela, nits and trolands and a colored CSF plot and the 1/4% rule at best. I now have a rule to use in a spreadsheet to determine whether a floater is visible when at distance z from retina.
questions about what a blood cell really looks like in the vitreous
the floater-in-gravity issue
diffraction from an edge is non-Fraunhofer like
notion that incoherent light sources can still make diffraction ring effects. This might be called partially incoherent sources. Rule is that source angular extent be smaller than something. You get to add up the intensity fringes from each piece of the source, and it they don't interfere too much, they won't completely wash out.
The Babinet field for a disk, in terms of A,B,C and q(r) etc
The total integral of Babinet gives = - (a)2, makes sense.
See pencil calculation "The Disk Babinet Integral" for derivation.
Deconstructing the Babinet-for-intensities-theorem.
Conclusion of the Airy hole field on screen from off-axis source at - t: tilting the disk.
Some details of the Babinet intensity of disk pattern -- where is the dip, etc.
Qualitative description of floater model with incoherent light: there are still rings!
Modification of the "geometric model" to include Fraunhofer diffraction.
Changing from a 1D extended source to the more realistic 2D extended source. When I did this, the numeric 2D integration for large L started to agree with the -a2 "theoretical" result for the first time.
Maple diversion to do faster 2D "integration" by summing over things with Bessel functions. Learned the Maple language, have now some sample Maple programming, but it could not do hardware Bessel and was even slower than VB Excel in speed! Maybe 50X slower.
Powered up a new DLL project to do the "babavD" calculation, 500X speedup!
Resume research: verify that theory and calc agree for L >> Rairy. Using floater3.xls now.
Learned that MS compiler cannot use 80-bit floating point
First data chart from the floater3.xls model (repeated and changed later in this document)
Trying to use the CSF for floaters. Found an equation for CSF.
Idea of doing Fourier Analysis of a floater in space to get the sine spectrum for CSF application. After doing this, I decided it was unreasonable. A tiny floater shadow in this manner has a very wide spectrum which picks up high CSF values, but that is just unreasonable, not enough sample points. I made a spreadsheet called "weighted CSF" to try and use this Fourier analysis.
A Cutoff Model for small shadows based on light-collecting idea, little quadratic curve.
Review of the floater3.xls data with this cutoff model added manually to the data.
Overall conclusions. Concern that maybe floaters are transparent, and mystery as to why I don't see any dark tiny dots from floaters, like the yard garden wall dots. These are weaknesses of the model so far! Babinet does not handle transparent or spheres.
Using the cpd chart as is without Fourier?
*************************************************************************************
We are now familiar with many areas of optics that were previously nearly unknown. The time has come to apply this information to the specific floaters problem, assuming that the floaters are in fact blood cells of diameter 8 as claimed in the SA article of long ago.
Figure 1 (separate, hand-drawn) shows the eye viewing a wide angle object. The optical system has several elements, mainly the cornea into an index of water, and then an adjustable lens. The main point of this picture is to show that a large portion of the retina is illuminated. Probably image focus is bad far off axis.
Figure 2 shows a near-axis point on an object being focused to a point on the image plane. The point here is that all rays emanating from the object point meet at the image point. Since these rays are restricted by the pupil, each set of rays is really a conical bundle of rays. Notice that the focal point of the lens is not shown in this picture, it is presumably located center line some distance off the retina. [ Light from this point on the object does not get concentrated at the lens focal point, so a floater at that focal point would not affect the image at this point. ]
Is this figure useful for studying floaters? Imagine a floater that fully or partially intersects the conical bundle inside the eye. If completely contained in the cone, we know the floater will create a diffraction pattern appropriate to being hit by a compressing spherical wavefront, and this pattern will scatter light to points near the image point shown. Somehow this figure seems not quite useful for this analysis.
Question 1. How do we "model" the image to the left?
(a) We could consider the image to be a transparency that is illuminated from its left by a plane wave. This might actually apply to a situation of an actual transparency held up to the sun, or one illuminated by a laser. The point of such an image model is that all points on this flat transparency have the same phase and vary only in amplitude. This seems unrealistic to me as a real-world situation.
What happens when I look at a white wall or the blue sky or a white computer screen. It seems pretty clear in the computer screen case that each point on the screen has a random phase! The electron beam sweeps the image and at each point excites phosphor atoms which then radiate. I have no doubt this causes random phases at each point. As for the blue sky, the blue light is caused by scattering off axis of sunlight by atoms of various depths from my view. Even if the sunlight causing this scattering were coherent, the scattering would not be so due to the assembly of random distances from the scatterers to me. Similarly, a white wall illuminated by an incandescent lamp is incoherent. Therefore, I think using a coherent model for the floater problem is a bad idea.
Figure 3 shows a model of a source image as a luminous incoherent area S1, and we then apply the Sommerfeld I formula to this as shown, where (P1) indicates some random phase associated with each point in the image. What can we say, if anything, about U(P0) ? We are tempted to say the result is zero due to the random phases, but we know this is wrong. Maybe there is some coherence length that is important in the source?
Figure 4 shows a superposition of two incoherent patterns. We have two point sources which are incoherent and each source makes an Airy pattern, say. We are allowed to consider the diffraction pattern of each source independently and then add them, because we have linear equations. We then square to get the resulting intensity. When we do this, we get the sum of the individual intensities, plus other terms. Each of these non-diagonal terms is going to involve a phasor with a phase difference like exp[ i(1 - 2)]. Integrated over even a very short period of time (a few sec or less), these phase differences are going to be zero, that is what incoherent means. If 1 and 2 had a constant difference, then the two sources would be coherent!
Therefore, we have this basic fact:
Theorem 1: The intensity pattern caused by multiple incoherent sources is the sum of the intensity patterns of the sources.
If we apply this theorem to the two sources in Figure 4, we conclude that the screen will show two Airy intensity patterns offset as shown. Notice that this theorem does not "wash out" diffraction! The bumps in the Airy patterns don't magically just go away!
Figure 5 shows how to extend the theorem to an extended incoherent source. My math is a little wobbly here, but I think the result is right. I start by assuming that the source is a superposition of point sources with phases, such that that amplitude at some value of y in the source at the left is A(t) exp(i(t))dt where A(t) is a finite number [ normally we set this entire amplitude just to 1 ] . I assume that each of these differential sources makes an Airy pattern. I then integrate to get the total field at some point y on the screen. I then square that integral to get a double integral. The key step is then to say that exp[i((t) - (t') ] = (t - t') a delta function. I cannot really justify this except to say that it implies that the only contributions to the double integral come in regions where y = y' exactly. There could in theory be a constant that I am not showing, and the dimensions don't match either. But using this gimmick, I get a reasonable result for the intensity on the screen as a one-dimensional integral of squared Airy functions (assuming for the moment that A(t) = A). The result is finite, and I don't really care about the overall scale. So in this case, if the angle subtended by our hole was large compared to the Airy width, we would get a sort of geometric bright broad area, as we will now argue. [ But all this only applies to a 1D extended source, which is not what we really see. ]
What does the integral of a squared Airy pattern look like? The Airy squared pattern has some total area which we can call K. When the total Airy pattern (more or less) fits inside the geometric region on the screen, the integral will just be K. [ For example, this would be the case if y = 0. ] Thus, the result is a large central constant region of intensity K. At the edges, we lose some of the area, so we taper down to 0 over a distance that is roughly the Airy width. Imagine just sweeping an Airy pattern up through the boundary where we stop our integral. The area integral monotonically decreases to 0! So what we get is a simple illuminated area of intensity K that tapers off at both ends, it is pretty much a geometric positive shadow of the hole with some edge effect. Now there are no oscillations and all evidence of diffraction except the taper down at the edges is gone!
In the case that A(t) describes some source image in the incoherent image plane, suppose the parameters are such that the Airy function is very strongly peaked (small ), a delta function. In this case, we find that the image on the image plane is a size-scaled version of the image to the left, magnification is z/z1. It is also amplitude scaled according to the Airy constants. This is then a proof of the well-known fact that a pinhole acts as a lens and can create an inverted image of sorts. This is used in the pinhole camera and also to view the sun in an eclipse. The image of course is going to be diffraction-blurred since Airy is not really a delta function. Even in a purely geometric theory, we would still get an inverted image by ray-tracing, if the hole were infinitely small. In the wave optics view, we want a larger hole in order to limit the diffraction blur.
Figure 5 in the floater/disk case. Finally, a floater comment. If we knew the exact Airy function for Figure 5, including the tricky phases, we could use Babinet to compute the field of a complementary disk as it appears on the screen. We might call this Disk(y - (z/z1)t). We know this is a function with very tricky shape due to interference, I have drawn a sample at the bottom of Figure 5. But regardless, put it in there in place of the Airy function in Figure 5, and assume that A(t) = A, so the source illumination is a clean incoherent field of light of some sort, luminous, a set of incoherent point sources. Suppose the integral of Disk(x) is some number like .95 in a normalized world where if there were no disk, we would have intensity integral of 1 at the screen. In this situation we assume we only integrate on the screen from some -T to +T to pick up the "dip" caused by the disk. If y = 0, then presumably we get the full .95 integral. But for y = way above the upper geometric limit, we know that only "1" will be integrated and we call this integral "1". Thus, we expect to see the following result: a partial shadow of the disk that covers the entire geometric region and tapers up to 1 smoothly at the edges! Notice that if we take any point in the shadow area on the screen, and if we draw rays to all points in the source area on the left, very few of these rays are actually blocked by the disk. But some rays are blocked. Geometrically, I have drawn the rays from a point P in the shadow region back to the source area on the left, and you could perhaps estimate the level of the shadow compared to 1 by seeing what percentage of the source image the back-projected area covers! That answer would be correct only in the small limit, I would guess.
This is a good situation to at least understand, although it does not really apply to the human eye. It would apply to some other kind of eye that has no lens, does not create a focused image, is filled with air with an open pupil. Suppose in this other kind of eye we have z+d = 1 inch (human size eyeball). It would be the eye's pupil that causes the geometric boundaries of our drawing at the bottom of Figure 5 (and we ignore diffraction against the edges of this pupil! ) In this case, the radius of the shadow on the retina would be R = Rpupil*([Leye - d]/d) where Leye = z+d is the distance pupil to retina. As the floater approaches the pupil d 0 , the angle becomes huge, and the image on the retina becomes arbitrarily large (but also very dim). In the other limit, as d Leye, the image of the floater becomes arbitrarily small. Finally when the floater is right at the retina, it is its own size or 4 radius, say. So, this kind of eye would in fact see floaters! My floaters seem to have a diameter of about 130 according to my calculation, so in this model, the distance would be d = Rpup*Leye/(R + Rpup) = 4 mm * 2.54 cm / (65 + 4 mm) = 25 mm, a not unreasonable number! In this case, an approximate formula is that z = Leye*R/Rpup = 25.4 mm * (65 / 4 mm) = 0.4 mm. Again, a very reasonable number.
So, Figure 5 at the bottom gives us a sort of geometric theory of floaters! In this theory, where we ignore lens and index completely, a floater simply puts a portion of the retina into partial geometric shadow. The radius of the retinal shadow is determined by these three distances : (1) the distance from pupil to retina (called Leye); (2) the distance from pupil to floater (called d), and (3) the radius of the pupil (called Rpup). The shadow becomes darker as the floater moves closer to the retina, that is, as z reduces (because there is a a/z^2 law operating here, as Airy shows). Geometrically, you could compute this by just seeing how much of the luminous screen is being blocked by the floater. In wave theory, you would have to compute the Babinet intensity and do an integration and all that. In this theory, there are no diffraction rings around the floater's shadow on the retina, even in the wave theory. Note that the number z1 is irrelevant. We have also put our floater on the central axis. The crucial part of this whole theory is the presence of an incoherent luminous light source to the left!
You can be sure I will try to extend this simple theory by adding a lens! But first, I have some other things to do
**************** This is wrong, but an interesting idea to think about! ***********************
Theorem 2. {Babinet's Principle for Incoherent Light}. Look back at our derivation of Babinet for fields, and replaced the word "field" with the word "intensity". The original justification for doing this with fields in the case of coherent light was the superposition principle, we have two situations and we add them together and in doing so, we add the electric fields, say, using the fact that equations are linear. With incoherent light, we have already seen in figure 5 that we want to add intensities [yes], and the scattering equation acts as if it were linear in intensities due to phase decorrelation [baloney!]. Thus, we just repeat the words that go with our figure, knowing that with incoherent light we can superpose intensities. It certainly seems reasonable in terms of the shadow area shown. The conclusion is I1 + I2 + Iin.
Application: suppose we do the computation shown at the top of figure 5 and we find the value of K by actually integrating the Airy function or whatever function is appropriate. Then to compute the situation for the disk at the bottom of figure 5, we must do I(integratedDisk) = Iin - I(integratedAiry). This tells us at once that there will be a partial shadow region behind our floater, and we don't have to do that nasty phase stuff to compute the exact shape of the disk field. This is a very messy phase situation anyway, and Babinet let's us completely avoid it!
I don't see any case where you can apply this theory to the Airy pattern itself! To make an Airy, you have to have a coherent situation: a point source or a plane wave on the left.
Now a little more. In the field Babinet, I had something coming in from the left like a point source of or a plane wave. For our new Babinet, we cannot have a point source really because it would be coherent. Instead, we imagine some kind of plane wave that has a random phase wavefront! Imagine a plane wave to which we have added a 2D random phase function, or noise. I am trying to imagine that this random wavefront still moves only to the right, not in all directions. This seems reasonable for an infinite plane of incoherent light on the left, perhaps. In this case, we imagine Kirchhoff's formula where we integrate the field over an aperture. In this integral, we will see those random phases and they will tend to kill the field off pretty well, but there will still be some diffracted field! Nothing in Kirchhoff requires coherent light from the left. It just says the field in a volume is determined by the field in the aperture, etc. Now, if we compute the Kirchhoff intensity, we get a double integral just as we obtained in our Figure 5. In this integral, those random phases will pick out the "diagonal" regions of the integration in a double area integral, and we would argue that we get an area delta function from the phases and this kills one area integration and we end up with a single area integration of intensity over the aperture to get the intensity on a screen. This is exactly the sense we mean when we said earlier that for incoherent Babinet, things are linear in intensity as well as in field. So our Incoherent Babinet really only applies for this kind of light source. We can incidentally equate this Babinet with energy conservation.
************ again, the whole section above is wrong. ***********************
Computation of the diffraction of an aperture due to an off-axis point source. This is something I did just to get the experience, and also because this is a result on in theory needs to think about integrating over a distributed set of point sources in some fancier problem. My first version of the calculation is 9 pages long in blue pen ink. On the first page we show a circular aperture radius a, and a point source on the left which is displaced distance t off the axis. We put it in the plane of paper as well. Then we have distances z1 and z as shown. Coordinates are and on the aperture, and x and y on the screen to the right. I start with the raw Sommerfeld I formula, do the Fresnel distance expansions, jam it all in, and start considering the internal phases. On page 2 in this version I simply ignored the linear phase factor and this puts a condition as shown at the bottom of page 4 on our application -- one that is a bit hard to meet, by the way. I pulled integration independent phases off to the left, out of the integral. I then carefully did the angular integral and learned exactly how the J0 Bessel function arises. I then kept restating the result several times. Then starting on page 5, I computed the field that would be on the screen were there no aperture at all. Both these results ( which I called U and U0 ) have complicated phases you have to worry about, I tried to get them right. Then I tried to write U as a multiple of U0 by further shuffling the phases.
After doing this calculation, I was not particularly happy with the result. I had to assume very small t to be able to do the integration. And the result puts an Airy pattern centered on axis, which seems wrong -- you want the center to be off-axis on the screen somehow. On page 8 I showed that the condition on is not well met in my application, although the more usual Fresnel ignored quadratic phase was OK.
I then went back and redid the calculation by adding "substitute pages" to my derivation, and these are numbered 2A1 through 2A4, separately stapled. Here I anticipated the geometric center of the expected Airy pattern to be at y0 = (z/z1)T as shown. Then when I did all the phase algebra, causing a shift to variables y' and r' which are centered at the expected Airy central point on the screen, I was gratified to see that the linear term inside the integral completely went away, so I had to make no condition whatsoever on the value of t in order to do the integral. I still had to make the usual Fraunhofer phase approximation, which is the first of my page 4 conditions.
I went on to compute the result and restate it several times. Again, there are complicated phases both in the U and U0 solutions. Maybe I have them right. In any event, all the non-phase terms I know are right, and we see the main facts. One main fact is that the variable appearing in the J1 Bessel function grouping is r', the radius away from the geometric image point at y0. So this supports the general idea that light does go through a hole, even if the hole is at an angle. I recall Jackson did this tilted aperture problem on page 292 and got my same result, but used different coordinates and a plane wave incoming.
Redo the above with better eyeball model. Figure 6 shows the general idea. Note that k' is larger inside the water medium of the eye because is shorter there. Figure 7 shows a blowup of the geometry, it is pretty messy. You could figure it all out exactly if you wanted. That is to say, you pick a point (,) inside the tiny aperture (which I do not show clearly). Then if you start with a position y on the screen, you can work backwards to get all the variables shown like tb and c and then the others and eventually you end up with the value of t.
Regardless of all this fine detail, if we put our little point source at position t, we are going to get a complicated phase times an Airy pattern centered at location yo on the screen. In order to actually do the computation, we need the field in the aperture, and since this field is compressing down, we would in theory have an infinite scaling factor there right at the plane of the aperture. That is to say, in the region denoted by distance q, we would like to put a scale factor of q/(q-d) where d is the distance from the f2 lens to the position we want to know the field. At d = 0 we get 1 at the f2 lens. But at d=q it blows up. We could at this point invoke a Gaussian beam waist in the aperture of some sort to have a finite field amplitude there. But regardless, the field reduces again on the right side. I think the bottom line is that we will have an extra field amplitude factor at the screen which is just (z/q) = z/(Leye - q). As the floater moves to the right toward the retina, this factor gets very large, which I like.
Remember that the red ray drawn hits in the aperture at some (,) point. We are going to integrate a bunch of closely spaced red rays in order to integrate over the aperture, and this integration is going to give the Airy pattern shown. I am pretty shaky on the scaling factor just mentioned, it is probably completely wrong. Imagine the entire illuminated left area and all the rays emitting to the right. We will get some kind of geometric bright area on the retina. If z1 is large, we expect some kind of 1/z1 factor on the left from energy conservation, we have a sort of beam going horizontally from the left screen to the cornea. But all the rays in that beam are getting forced through our little aperture of radius a. In order to conserve energy there, that is why I am claiming this extra scale factor and its problems.
Now things should go as they did before. If we integrate over the left screen area with random phases, and then square, we end up as before integrating the Airy intensity pattern over the geometric region, and the result should be for the aperture hole a bright shadow region whose radius we can geometrically calculate. For the floater disk, we will instead get a slightly dark shadow region instead, of the same radius, and this follows from our new Babinet Principle for incoherent optics. [ which is wrong! ]
So, I think the end is in sight. Looking at Figure 7, I know the region of the shadow. The radius is going to be R = Rpup* z / (Leye - z), the same as in our previous simpler eye model. So as before, if we have Rpup = 4 mm and Leye = 2.54 cm and R = 65 , we conclude that the floater is at z = 0.4 mm from the retina. When the floater sinks down by gravity after being jostled, we expect the shadow of it to also sink down, which was just as I observed. [ Wrong! If floater sinks by gravity, it does indeed go down, but we would perceive it as going up, since we are used to having an inverted image! ] There is no "inversion" issue in this model of treating the floater! [ wrong] The inversion of the image is an unrelated fact. [wrong] Notice that our floater result does not seem to depend at all on the value of f1 and f2 (which is variable). Again, this agrees with experiment: where we focus does not really affect the appearance of the floaters. [ that is true: wherever they are, if gravity pulls them down, we will perceive them as going upwards in our field of view. ]
Tomorrow I will try to calculate how dark a floater is as a function of distance z from simple geometry.
One thing this model does not seem to give is diffraction rings on the floaters unless I look at a coherent light source, which I never do. It is true that extra stuff happens at the edge of our geometric shadow region. We have claimed a simple monotonic taper off earlier, but who knows what might happen there when we include the effect of diffraction against the edge of the pupil. The light which reaches the small aperture (or floater let's say) from red-ray groups which brush the edge of the pupil aperture is going to have those Fresnel edge waves on it. This messes up our perfect geometric picture and could possibly cause rings on the shadow. This is then a double diffraction calculation and I don't really want to attempt it!
Geometric Model for Floater Shadow Intensity. This is shown in Figure 8, and there are three general regimes to consider, but in each regime, the basic idea is the same: pick a point on the screen, then from that point find the projection of the floater disk in the plane of the pupil, then calculate what percentage of the area of the pupil opening is blocked by the floater. With incoherent light, we are supposed to work with intensities in this manner.
In all cases, if we draw a ray from the lower pupil edge through the top and bottom of the floater, we get the points y2 and y1 on the screen. For an on-axis floater that we are here considering, y2 is always positive.
In (a) we show the regime wherein y1 is also positive. In this case, there are three kinds of areas on the screen. Between-y1 and y1 we have the darkest region. Here, the projection of the floater always fits into the pupil, so the percentage blocked is a constant, and of course we ignore the slight off-axis projection effect here since we think all angles will be very small. If we included this effect, the constant dark area would be slightly darker in the middle than near the edges. Near the edge, the floater is tipped a bit, so its projection on the pupil plane is a little less. This is a refinement we can add later if we want. Now above the point y2, the entire floater projection misses the pupil, so we have full light. In the transition region between y2 and y2, we move from full light to shadow as the floater disk becomes more and more in the pupil area. The transition will be S-shaped, not linear. [ See graph from calculus computation and spreadsheet, "area of disk occluded by an edge.xls". ] The reason for this is that as the floater projection just starts to enter the pupil area, only a small blockage area per linear distance occurs, since the floater is assumed to be a circle. You would have a linear transition if the floater were an aligned square, for example.
Now, as the fixed size floater moves to the right, the constant region becomes smaller and smaller and reaches a point in (b). Here, y1 just reaches 0. At this point not only does the constant region vanish, but also the shadow becomes completely black at the center point, because f = 1 there now. As we continue to move the floater to the right, the black shadow region becomes larger as shown in (c). Finally, at z = 0 we have -y1 = y2 = a, the transition region vanishes, and we have a strict floater geometric shadow of diameter a.
Excel Project. ("floatergeometric.xls") I implemented the geometric model in a spreadsheet. It plots the shape of the intensity curve as you vary the parameters. On a second sheet I just made a table showing the basics as a function of distance from the retina of the floater. I wrote a little VB function amplitude(y) which is really intensity. I learned how to make it "volatile" with a statement in the code, to force the sheet to recompute all the time. Had lots of bugs, but finally I think I have it right. Is a bit slow on the Easy.
Contrast Sensitivity of the Eye. Whether or not you can see a floater will depend on this! The rough rule is that L/L = k, called the Weber-Fechner Law. This means that log(L) = logk + logL, so that the slope will be one on a log-log plot. Here are some experimental results from a PDF. Notice that the area of interest is 1.5" diameter, so we are not talking small stuff.
The general result is that in mid-range of 100 cd/m2 we have a threshold of about 1 unit so you can detect a change of about 1%. The thing plotted on the left is log(Lthreshold). At lower light, you need a little more than 1% change in order to see it, and at more light, a little less than 1%.
Here is a chart showing how this sensitivity varies with the "cycles per degree" of the luminance variation pattern. This is done with a sine grating where L is the peak-to-peak change in luminance, and where L is the average. What is plotted is the inverse, that is, log [ L/L].
Imagine we have two vertical lines or dots out in a scene that are separated by distance H. Put one right on axis, and the other at distance H off the axis, on a screen to the left at distance p from the eye lens. We know that the retinal height will be h = H*(q/p), where q is the lens to screen distance of 1". As p gets very large for fixed H, h gets smaller. The angle subtended by the two lines or points, p >> q, will be = H/p, since we just draw rays out to H from somewhere in the eye, perhaps center of the eye. This says H = *p, so we find that h = q where q =25.4 mm let's say. Then for 1 degree, h = 25400/57 = 446 .
Now imagine that we set this spacing on the retina to h=2D, where D is the apparent (shadow) diameter of a floater -- or 2D could be the spacing between lines of width D on the retina. Then 2D = 450 , so we would then claim this: one degree of center-to-center source separation puts the retina center-to-center separation at 2D = 450. If we interpret D as the diameter of the floater shadow, then an array of floater shadows with floaters of radius 450/4 = 112 would correspond to a perceived 1 degree separation between floater centers. An array of larger floaters of radius D/2 = 225 spaced center to
center 2D = 900 would appear as 2 degrees of separation.
So if this is the correct way to relate an array of floaters to an array of vertical lines, then we can say this:
D/2 = Rf = 112 * degrees = 112/cpd cpd = 112 / Rf
However, the circles shown above are no doubt harder to perceive than infinite vertical lines of the same geometry! Thus, for data taken with "lines", we need to somehow reduce that data to apply it to circles!
Experiment (done Weds 1/8/03): Piece of white paper with about 12 randomly spaced black disks of diameter 1/16" and radius 1/32". Paste on back garden wall in full sunlight. Wear new prescription bifocals. With left eye I can see the dots out to a distance of 8 yards, but with right eye only to 7 yards. For left eye, r = R*q/p = 2.8 ! Diameter is 5.6 , about the size of one retinal cell [ wrong! Campbell picture shows photosensor cells being about 1 in diameter on page 1022]. Very impressive eye performance! Note that cpd = 112 / Rf = 112/2.8 = 40, in the range of that 40-60 cutoff mentioned for bars.
If red blood cells are 8 in diameter as I have been assuming, then they would be visible if in a liquid right at the retina! But I don't see such things, why? If there really were little black spheres at the retina of this size, I would for sure see them as tiny dots if they could move relative to the retina. One explanation could be that these blood cells are sort of white/transparent and maybe they don't make a black shadow. I will continue along this line later on in this or in another document! Maybe there is a viscous layer above the surface that keeps anything there from moving relative to the retina.
Now, a typical DC value for Lth/L is .01, so the inverse would be 100. In the above chart you can see that at about 6 cpd this sensitivity increase to about 400, meaning 1/4 of 1% is all the change you need to see it! So these charts really do have a meaningful scale on the vertical axis.
This site has a little contrast demo: http://www.usd.edu/psyc301/CSFIntro.htm, but no scale.
The lux is a Candela and is a standard unit. A "nit" is a "lux" times , so 1 lux is 1/ nits. A troland is this:
troland =(luminance of the object in nits)(pupil area in mm2)
On a bright day, you might hold out a sheet of paper and it will have 10,000 nits, very bright. With a 1 mm radius pupil, area is 3.14 mm so you will have 31,400 trolands. Starlight is .0001 nits, so the same question would give an answer of .0003 trolands, or about 300 micro-trolands. Of course your pupil would be more open so amount would be more. A monitor might be 100-300 nits.
So let's look at a monitor doing 100 nits with a pupil which has radius 2 mm. Area is about 12, so you then have about 1200 trolands on your retina. With this as background, here is another contrast sensitivity chart:
This chart suggests that near 6 cpd we have sensitivity ratio of around 400 at the 1000 troland level, so lets just use that as a baseline.
So, we now have a model for the detection threshold of floaters! In our range, the number varies from 300-400 roughly, so I will just call it 400. This means 0.25% is required to see it.
Now, given this fact, let's look at our Excel spreadsheet. With Rp = 2.5 mm, a = 4 , Leye = 1", we can look at our table to see that we should drop out of perception at a retinal floater shadow diameter of about 160 which occurs when z = 820 . This is where we drop to 0.25% variation of luminance. As we look at floaters of the same size at larger z, they drop below the threshold of contrast detection! I have always thought this was the case, now finally I have some quantitative proof that fits with my observations!
One fact I have never verified is what the red blood cells do in the vitreous. Here is one comment: "In patients who have had a vitreous hemorrhage, some of the blood may travel forward from the vitreous into the anterior chamber. Red blood cells that have been in the eye for several weeks lose their hemoglobin and turn white. " If they are really white, then I interpret that as opaque, and this disk diffraction theory is justified. If they were perfectly transparent, no floaters, but that seems unlikely. Probably not as solid as when they are red. The 8 figure is only from the SA article.
One other thing. If the floaters sink by gravity, their actual image would drop down on the retina, but you should perceive this as going up. I now think this is true no matter WHERE the floater is in the eye, the focal point should not matter. This contradicts what I have seen. My only answer is that the floater cells are in a fluid that is denser than the cells, so they float up to the top of the pool, and I see them as then moving down and pinning at the end of the movement. The web says that normal red blood cells have specific gravity of ~ 1.10, but that is when they are filled with hemoglobin. Here is a comment on the hemo leaving: "When red blood cells are placed in distilled water or a hypotonic solution, water enters and the cell swells. Swelling occurs until a critical point is reached where the membrane abruptly becomes permeable to hemoglobin, which leaves it almost completely and enters the external medium (hemolysis). If the cell is given subsequent exposure to hypertonic saline will shrink the cell back towards the original volume." I have no idea what the specific gravity is after the hemo leaves and the cell bloats, but it could be very close to 1 for all I know.
Back to the question of coherence. How do you make "spatially coherent light" using an incoherent source? Consider the diffraction from an edge. The distance between maxima is on the order of sqrt(*R||/2), and if R1 is large this becomes sqrt(R2/2). This is the only way you can make something in this problem having the scale of distance! This pattern is non-Fraunhofer like because if R2 is doubled, the spacing between peaks does not double, it only goes up by sqrt(2). This is a characteristic of the fact that you are never in the "far zone" with an edge, you are always Fresnel.
Now, the angular distance between the first two maxima is on the order of sqrt(R2/2)/R2 which is just sqrt(/2R2). For the typical situation in the eye relative to edge of pupil, you have R = 1 inch and = the usual .5e-6, and you get that = 0.2 degrees = (1/3)e-3 radian. Therefore, if your two incoherent sources are transversely closer than this angular separation, each source makes its own intensity fringes and you add them, and if they are shifted by only a fraction of a wave, you will still see them, and this result will remain true if you add sources between your two test sources. Example: suppose a masked flashlight lamp is 2 meters away. Then as long as the flashlight filament is much less than about 2/3 cm (let's say it is << 7 mm or perhaps 2 mm), then you will still have visible fringes even though the source is incoherent! It is easy to imagine the filament being this small in a flashlight or a line source. Or your source could be light through a pinhole of diameter 2 mm with any incoherent source that is 2 m behind the pinhole. You have to then be 2 m behind this pinhole to be OK in seeing fringes.
What about the extent of the source in the line of sight? The edge pattern is independent of this for large R1, so no problem in this direction.
So, the above gives us a general way to analyze whether or not light is "coherent enough" to create diffraction fringes. We did this for an edge, and that is a good general case to deal with. But we could also do this with the Airy pattern of a hole. Consider two transversely displaced sources, and just see how far apart they can be such that the incoherent fringes don't shift too much, then you will see the fringes from an extended source that respects that rule. Of course for Airy, depth also matters, so you will have a constraint in that direction as well. Probably the thread-spool pinhole trick restricts the angle small enough that floaters have fringes.
I would not expect to see fringes against the wide blue sky because in this case the "extended incoherent source" is huge [wrong!]. You could ask how much of this source hits a tiny floater, and you might get something like = 1 mm / 25 mm = 1/25 radian = 2 degrees. If the sky were somehow coherent when you look at a small piece of it like a 2 degree sweep, you might see fringes. The blue light might be from a relatively small volume that is created by scattering of a perhaps small beam from the sun, so somehow there could be some coherence here. I guess if I see fringes on my floaters against the blue sky, that says there is some coherence for sure [wrong]. After all, it is polarized, so we have a precedent for an extended coherent effect. Re the sky, the area would have a definite fixed phase relationship since caused by the same sun beam. This subject is beyond the boundaries of my current research effort, at the moment. [ but read on]
Extended Sources Reviewed Again. In the Airy case, we know the rule for the width of the main peak is that the product of the H's ~ product of the V's, or z = ra. Easier way is (r/z) = (/a). Make it 1.22 in there if you want r to be width of central lobe. Looking at the Airy plot of intensity, the first max appears around 1.5, and the table says it is 1.635. So you could say that (r/z) = tan = (1.635/a) gives you the angle of separation between the first and second peak. If we have an extended source whose angular width relative to the "pinhole" of radius a is much less than this angle, then all points on the extended source will create intensity patterns which will incoherently add up and maintain the original pattern. In our normal case with =1/2 micron and a = 4 microns, we get tan = 1.635/8 = 0.204 = 11.6 degrees, which is a pretty large angle! The pupil itself limits light to an angle of about tan = Rp/Leye. On a bright day, perhaps Rp = 1 mm, and Leye = 25 mm, so tan = 1/25 = .04 = 2.3 degrees. Therefore, when you look at a bright blue sky, a floater near the back of the eye "sees" through the pupil an angular area of sky that has a full width of about 2.3 degrees. Even though the light source is completely incoherent, since this is much smaller than 11.6 degrees, the diffraction Airy fringes will still be present. [ yes!]
What about the longitudinal extend of our extended source? The Airy pattern is not altered at all as you move the source to the left, except in overall amplitude. Therefore, no amount of incoherent longitudinal extent will wash out the Airy fringes!!! Again, the basis of all this stuff is that for two incoherent sources, you add the intensity patterns.
Doing the Disk Integral. Recall from earlier notes that, according to Babinet, the intensity at z behind a disk of radius a in a plane wave is given by this formula (in the Fraunhofer approximation that B << )
|E(r)|2 = 1 - 2 sin(Ar2)q(r) + q(r)2
where
q(r) = B * 2 J1(Cr)/(Cr) B = (a2)/(z) C = ka/z A = k/2z k = 2/
and we know the general shape of this function. I plotted it in Excel and it is very ugly but shows a "bright spot" in the middle at r=0. As r gets larger, |E(r)|2 oscillates faster and faster. I tried doing numerical integration of this thing in Maple and had problems doing so because of the oscillation. But then I started thinking about doing a definite integral from r = 0 to . After many erroneous attempts, I was able to do the above integral exactly using definite integrals of Bessel functions shown on GR pages 692 and 755. The integral you want is over area: we want to integrate the above intensity over a large circular area behind the disk. We approximate the last two terms by making that area infinite for them only. The necessary integrals are these:
= 1/2
= (1/4A) cos(B/2)j0(B/2) = (1/4A) sin(B)/B
Here then is the exact result:
= - (a)2 [ 2 - 1] where dA = 2rdr. B =
This is a stunningly simple result for this ugly definite integral! Then when we actually apply the Fraunhofer limit, it becomes even simpler:
= - (a)2 where dA = 2rdr. B =
Note that the second AND third terms of |E(r)|2 contribute important amounts to this result. When starting, you might have ignored the third term since it is order B2 but you would then get a dramatically wrong result! You would conclude that the "rest" part was - 2a2 so your answer would be off by 100%! It must be that the second term oscillates so fast that its contribution to the integral is cut down to match the size of the third term's contribution.
How do we interpret this amazingly simple result? Let's integrate over a disk of radius R that is perhaps 10 times the radius of the Airy pattern, so we "pick up" all the action. Then what we get is this:
energy hitting large circle of radius R centered behind the disk = R2 - a2
with unit plane wave intensity. You interpret this as saying that the disk absorbed or back-scattered an energy = a2. Making this statement from the start would have been a hell of an easier way to "do" the integral, but it is nice to see that everything is consistent! The result is the same as would be obtained in geometric optics with no diffraction. It is fascinating to see that, although Fraunhofer can spread out the shadow of the disk to something much larger than a2 , he cannot cause violation of energy conservation.
Deconstructing the Babinet-for-intensities-theorem.
Even for a coherent point source illuminationg an aperture, this theorem is false. Babinet for fields says E2 + E1 = Ein, so you cannot possibly have |E2|2 + |E1|2 = |Ein|2 because you are then ignoring the cross term 2Re[E2E1*]. For E1 and E2 being complementary fields in the sense of our picture, you cannot say E1 and E2 are decorrelated! Also, the "situations" in our picture fail to add up both field-wise and intensity-wise! In each case we have Ein coming from the left. You cannot claim that the energy passed through the aperture plus the energy diffracted around the disk add up to 0!! Field equations are linear in field, not in energy, there is nothing more to say!
If we forget Babinet and just talk about adding the intensities of incoherent sources, then we are OK.
Therefore: we are not surprised about the Babinet result that the intensity for the disk has a bright spot in the center, while you could never get that result from |Edisk(r)|2 = |Ein|2 - |Ehole(r)|2 .
Conclusion of the Off-Axis Hole Diffraction Result.
This is another set of 6 hand-scribbled pages. On the first page I recap the results from the previous calculation, and conclude that no phases can just be ignored. On page 2 I look at each phase factor so that on page 3 I can write U as a multiple of U0 . Then in that formula I combine all the remaining phases and see that the result is a simple quadratic phase in r' and there is no t dependence. I then get the result shown on page 4. Here, variable r' is centered at position (0,y0).
What can we say about this result?
(1) First, remember that in reality, U0 is just exp(ikR)/R where R is the exact distance from the point source to the screen point. Since R is slightly larger than zt = z + z1, we are picking up all those extra phase factors in U0. Having a finite t, and being at some (x,y) on the screen, you know that R is a complicated function, and we have taken it in the Fresnel limit and that is where all those nasty phase factors are coming from, shown on the first page for U0(P0).
(2) When we take the difference U - U0, both terms have this extra distance, so we are not surprised to see the cancellation that shows up on page 3, which says that there is no t-dependence in U - U0 except through the definition of r'.
(3) What approximations are used in this calculation? First, we make the usual Kirchhoff ones that the field in the aperture are not affected by the aperture, and that we can neglect leakage behind the hole to the side, which both really mean a >> . Second, the two Fresnel distance expansions imply that we are assuming (r/z)4 << (/z) and (a/z1)4 << (/z1) and (t/z1)4 << (/z1). { These three come by making the first dropped terms be smaller than a radian in phase, see Goodman page 69, I left out the /4 factors.} The first one means that we restrict to small at the screen. The second one says that the point source has to be many hole radii to the left of the screen. The third says that t cannot be too large. The next assumption is that we neglect a phase inside the Fresnel integral, and this is the Fraunhofer assumption, and it is that a << where 1/z|| = 1/z + 1/z1. The Fresnel conditions, however, we know are a little "soft", and Goodman talks about this at length in his book.
(4) So now we come to our main conclusion: We have shown that displacing a source from on-axis down to a point at -t gives a result for U - U0 that depends only on t in one way: r' is centered at (0,y0) where y0 = (z/z1) t. Our result is for finite z and z1, and is for a point source. We know how to take the limit for large z1 and this gives our earlier version of the constants A and B.
(5) How large can t be and have the result still be valid? Our only t condition comes from the soft Fresnel approximation, more on this below.
So, we can restate this result in the following simple manner: Fraunhofer diffraction through a circular hole (or the Babinet disk result) is unaffected if the plane of the hole or disk is rotated by a small angle << 1. Because of the softness of the Fresnel condition, we could even go way out to something like r = z and still have a "correct" answer. We know that the width of the central peak on the screen is w = 1.22 (/a)z, so the first zero is going to be at r = [ .61 (/a)] z. Since /a is small by Kirchhoff, we know that even if we go out 10X further to say r = [ 6.1 (/a)] z, we are still going to have small r/z here. Beyond that point, we know the answer is that there is no field out there for the hole, and unit field for the disk. Thus, we can really think of the result as essentially correct for (r/z) < 1 ! We normally don't assume some radius cutoff on our Airy function result!
As t/z1 is made larger, which is to say, as we tilt our aperture plane more, I think this is what happens: the Fresnel pattern to the right is determined mainly by that 4 patch back in the aperture that Goodman talks about. As you really tilt a lot, the projection back of that patch goes onto an ellipse, so the resulting pattern gets distorted to an ellipse. The Fraunhofer Airy pattern will probably also be distorted in this way, so that the half width in the wide disk direction will be smaller, etc. So the Airy pattern will get ellipsed out somewhat. This would probably be very obvious if we had t/z1 = 1, for example, a full 45 degree tilt.
Incoherence and Airy. On page 5 of the above wad of papers we go on to consider two incoherent sources one at -t and the other at +t. If we do this for the hole, we get two slightly offset Airy patterns as a result, and we will see the intensity of these two patterns added together. Above we noted this fact " So you could say that (r/z) = tan = (1.635/a) gives you the angle of separation between the first and second peak. " What we mean by "r" here is distance on the screen. So the condition for our two sources is this: If we make (2y0/z) << (1.635/a), then we will assure that the alignment of our two Airy patterns is good, so maxima more or less line up, and so do minima. The fringes are retained! So the rule here becomes simply (t/z1) << (/a). As noted above, for our usual numbers the RHS is 1/8 and then the half-angle we can drop t down to is atan(1/8) = 7 degrees, or a 14 degree full width. We noted this above (12 degrees back there).
Now, is the result the same for the Babinet disk result? On page 6 of the wad I write this out. I think the result is that with the same condition, the central part of the pattern will be maintained, the first bump or two. BUT, the frequency increases at larger radius, so waves out there will be washed out very quickly by just a slight offset! For example, suppose we use our bright-sky pupil angle of 2.3 degrees for the half angle, so tangent is .04. That is, t/z1 = .04 at the extremes of our view. Now (/a) = 1/8 = .125.
Now, if we assume that the frequency of the Babinet curve is mainly due to the sin(Ar2) term after a while, then we can calculate the point at which you get "washout" when you add two Babinets:
rwashout= (/4)(z1/t)
As you increase t, you lower the washout radius and wipe out more of your pattern!
Now, here are some facts about the Babinet pattern:
(1) the J1 function has its first zero at r0 = .61 z/a.
(2) the "dip" should be at Ar2 = /2 which says that r(dip) = sqrt(z/2).
The ratio of these is: r(dip)/r0 = (1/(.61*1.414)) * [ a / sqrt(z) ] a/
But this is just the quantity that is supposed to be small in Fraunhofer, as noted above. Therefore, we hit that first dip before J1 hits the first zero, so r(dip) then is roughly really the position of the first dip. Similarly, the second peak will be here
(3) the "second peak" is at Ar2 = 3/2 which is at r(secondpeak) = sqrt(3z/2). This is likely also to come before that first zero, so really is the "second peak".
Qualitative Conclusion on Floater Patterns.
When you look at blue sky, your half-aperture angle of view through the pupil is about 2.3 degrees for a Rpupil = 1 mm. This spread of incoherent light will "wipe out" the outer regions of a floater shadow. It is likely that these outer regions would not be visible anyway due to reduced amplitude and high frequency. What happens at the inner regions is highly dependent on the distance z of the floater from the retina. If z is such that the washout radius is larger than the region of central peaks and valleys in the Babinet pattern [ larger z pushes these regions to larger r, giving less washout, for a small range of z at least ] , then despite the incoherent light spread of the blue sky, you will still see the central characteristics of the Babinet diffraction pattern. The central features are these: a bright central spot (brighter than background), then a wider dark region that makes up most of the floater shadow, then a white ring that might be brighter than even the central region, and then probably the rest will be hard to see. I think depending on z, this white ring might get washed out. I suspect that the central spot and the white ring might depart at the same time.
Now, if the washout radius is smaller, then the entire fringe pattern is wiped out, and we are left with nothing but a general circular region of slight darkness relative to the background. We have shown that this is the case when the central region (roughly the Airy width) is small compared to the distances associated with the extended source influence. This is the fact that depends on the Babinet integral always being -a2 for the non-unity terms. In this limit, the area of the floater is just subtracting luminosity from the cone hitting a point on the retina, making it darker.
[ With my spreadsheet floater4.xls on Alta, I was finally able to do exact plots of the Babinet result from a spread-out source and I can now look at what happens in the transition region where the things don't add up too closely, but they don't yet make the uniform dark shadow.]
When I look through the spool pinhole, there is no doubt about it: I see the central white spot, then the dark ring, and then the bright ring. I don't see any more detail beyond that point.
Tomorrow we can build these new features into our global floater model. Hopefully all the problems have now been solved and I can wrap this up. I really do now believe in that nice Babinet field.
Integration of the Final Model. First of all, let's make a statement about how we will handle diffraction from the disk. To the left, we have some conical angle of incoming incoherent light, and the angle of this cone is dependent on the disk z location. The Fraunhofer condition is a < sqrt(z) where we now assume that z1 >> z for the eye situation. With a/ = 8, this condition says that z > 8a = 32 . The width of the Airy hump for the hole is 1.22(/a)z or about .15z, so at z = 32 we have hump width = 5. Thus, from the Fraunhofer limiting value of z down to 0 we can assume a simple geometric shadow. Thus, we have a reasonable model for things at all z -- this model is the geometric shadow inside z = 32 , and the Babinet field outside that value of z.
Now here is how we handle the cone on the left. This cone geometrically implies a cone on the retina of radius L where L/z = Rp/q and z+q = Leye. The Airy zero is Az = .61(/a)z, and we assume that this is roughly the Babinet half-width as well, an obvious approximation. If L >> Az, then we say that that luminosity in the shadow circle of radius L on the retina is given by 1*L2 - a2 . This arises because inside the circle, we integrate over the cone of incoherent sources on the left, and we then approximate the Babinet integral as an infinite one, and we then get the famous -a2 for the value of the non-1 part of that integral. Normalizing this to unity for no disk, we say that intensity = 1 - (a/L)2. We can reach the same result on energy considerations: sit at some point on the retina within the circle of radius L and look back toward the pupil opening. The disk geometrically projects into a larger apparent disk in the plane of the pupil that has a radius of a' = a(q/z). The total light seen by our retina viewing point is proportional to (Rp)2 - (a')2 . When this is normalized and we use L/z = Rp/q, we arrive at the same result 1 - (a/L)2. Note that this is the exact same result you would get in a purely geometric model of disk shadowing where all light travels in straight lines only. It took me a lot of work to show that the presence of diffraction does not change the conclusions of the geometric model!
Now in the previous paragraph we arrive at our geometric result with the assumption that L >> Az. If we install our expressions into this inequality, we conclude that (Leye - z ) << (Rp/.61)(a/). For Rp = 1 mm and 8 for the fraction, we get (Leye - z ) = q << 13 mm. Interestingly, this is about half way in the middle of the eyeball. In this case, we can only apply the past paragraph if the our floater is in the half of the eyeball farthest from the retina! A web site I just looked at says pupil diameter ranges from 2 to 7 mm in the range of lighting conditions, so lets say Rp = (1, 3.5)mm as our nominal range. So at the 3.5 mm limit, we get that (Leye - z ) << 13*3.5 = 46 mm. In this case, our theory applies to NO possible location of the floater in the eye!
We have already said that if z < 32 we will use a geometric shadow, and then we say that the floater shadow on the retina is completely black. But what are we going to do in the transition region??? Here is one option: for z in this transition region, the Babinet field is large compared to the circle radius L. If we really were in the other limit L << Az, then we would say that what we get is in fact the Babinet field itself! We can estimate the radius of this thing to be Az. But what do we say for the intensity?
OK, here is my plan here. First, we assume the dip occurs at /2 of the phasor, which means that we say rdip = sqrt(z/2). At this point, the intensity is [1-q(rdip)]2 where C* rdip = 2a/sqrt(z). This intensity is the darkest point in the floater, and the intensity we get is relative to 1. You might argue that we should take the difference between the dip and the next brightness peak instead, which is at rbright= sqrt(3z/2). Then the result would be [1 + q(rbright)]2 - [1-q(rdip)]2 and this is easy to put into a spreadsheet. I argue against this as follows: when I see floaters causing trouble, it is the general gray disk that I see. I can see evidence of bright centers and rings, but when I am reading, it is the grey bulk area that is bothersome. When we are in the transition region for z, the Babinet field is going to be somewhat blurred. This will tend to lower the bright peaks and raise the dim peaks. So if we use the smaller [1-q(rdip)]2 estimate, that in some sense compensates for the blur.
So in summary, we generally have three regions to worry about in our model. However, I think the region of large L does not practically apply at all -- too bad, since we have a nice theory for it! In this region, we claim that the difference from unity in the intensity is (a/L)2 = (a/Rp)2 * (q/z)2 . Even for our smallest Rp = 1 mm, the first factor is still very small at 1.6 e-5. For q ~ z, this implies 1.6e-3 percent or .0016 %. We know that we need at least .25% in order to see the floater, so this means we really have no useful region in which to apply our large-L theory.
Now, what about the geometric region? Here z < 32 and the shadow is 4-5 in radius. I think here we will claim the shadow is too small to see at all, but if visible, it would be black. The floaters I see are more in the range of 65 in radius, and are never pitch black. So I think we can eliminate this geometric regime as well from our practical model.
Thus, our real practical model is going to be completely based on the Babinet intensity! For the radius, suppose we select rbright on the theory that with some washout, the dip might reach this radius. So,
Babinet model intensity at dip = [1-q(rdip)]2 rdip = sqrt(z/2)
Babinet model radius = rbright = sqrt(3*z/2)
In this model, the two quantities of interest, intensity and radius, are functions of , z, a but not Rp or Leye. The radius is independent of a! Both results are independent of eye geometry! Also, recall that rAiryZero = .61(/a)z, the Airy zero on the retina. Now, the above result assumes that rbright << rAiryZero. This means z >> 4(a/) a = 32 a = 128 . In this region, the Babinet curves are really determined by the phasor part, and A has no a-dependence! At this z, we have rbright = rAiryZero = 28 , somewhat smaller than I observe. If we have to model this other range, what shall we use? I could of course do it exactly with a real program, but I just want a simple Excel thing here. I drew a few cases of the phasor path. I think we can stay with the intensity model above, but use the Airy radius instead . So here is our full model:
For z > 32 :
Babinet model intensity = [1-q(rdip)]2 rdip = sqrt(z/2)
Babinet model radius = min(rbright, rAiryZero)
where rbright = sqrt(3*z/2) and rAiryZero = .61(/a)z = .076 z
boundary between these two will be at z = 128
For z < 32 :
Babinet model intensity = 0 / C* rdip = 2a/sqrt(z) = 2, B =
/ and q = J1(2) = -0.2, inten = 0.96 (big mismatch)
Babinet model radius = 4 / Airy is 2.4 , so a mismatch to some extent
So to do a better job, we really should have a transition region perhaps between z = 64 and z = 16 . In that transition region we would then say:
intensity = (z-16)/48 * [1-q(rdip)]2 + (64-z)/48 * [0]
radius = (z-16)/48 * min(rbright, rAiryZero) + (64-z)/48 * [4]
This sounds like a very doable spreadsheet to me!
Excel Spreadsheet. First bug is now noted.
Bug #1. I use L > rAiryZero to define my "simple model" region that I am not using at all right now, and in doing so, I am assuming that "most of the integral" of the Babinet curve is within rAiryZero. OK, that is fine. But then I try to use L < rAiryZero for my Babinet-intensity model where things are not blurred too much. But in this model region, the real width of strong variations goes out to rbright < rAiryZero. So I might end up using my detailed model where L is 10 times larger than rbright . In this case, it would really be much better to use the optical model.
Bug #2. After studying things with Excel, I see that the integrated shape of the Babinet in the intermediate range is quite subtle and needs to be handled perhaps with a table. The Alta machine can now do these integrals quickly at least through the center line in the 1D case.
Qualitative Results from Excel Integrator.
[ I think this program was called floater3.xls, then floater4.xls ]
At z = 1 mm, I get a nice Babinet curve. I am now going to integrate a bunch of these patterns such that the spread of patterns has some width from left Babinet center to right Babinet center. Let's call this distance the width. In the spreadsheet, this width is called deltaR, ignore that name [ later I made this be the radius, not the diameter] . The integration region itself should be infinite, but I limit it so it runs -2Airy to +2 Airy relative to the center. On our plot, one Airy is 50 units on the H axis because that is the way I scaled things on purpose.
Now, when the width is 2 Airy, we get a simple flat curve of width 4 Airy. Our L value is 1 Airy, so the center separation is 2 Airy, but we pick up an extra blur Airy on each side, making the total width appear to be 4 Airy. Our limiting geometric theory above would say h = (a/L)2 where L = 1 Airy. The integration gives 1 - h = .992 in the constant region, but this formula gives .997 for 1-h.
Let's set the width to 10 airys and see if our limiting theory is right. Doing this gives 1-h (formula) = .997. I have to set the n up to 1000, then the babv column shows .9984 all the way down, so closer but still not perfect. Now set width to 100 Airys.
Bug: I am not getting a good result even with width = 100 Airy and n =10,000. Restate the theory please. Imagine the L radius circle where L >> Airy radius. For a point well inside the circle, the integral over the L-circle of Bab intensity should be L2 - a2 . Write this as L2( 1 - (a/L)2 ). Thus, the intensity inside the L circle is less than outside the circle by the amount h = (a/L)2. In our test run, our symbol Rairy is really 2 airys! Thus, our deltaR is really 200 Airy, so the half width of the circle is 100 Airy. So the correct L to use is L =100 Airy. This L is deltaR/2. Doing all this, the integration routine gives a very solid central answer of .999839, stable all the way across. But the little formula gives .9999989. Why should these differ at all? In terms of h, our formula gives h = .0000003 but the integration .000161, so this is a huge difference! This completely clouds all the work I have done to this point!!!
Could my problem be the 1D integration I am doing, somehow?
The 1D Integration Problem. On two attached sheets I show the integration we really want over the L circle. Doing this out, I now see that the 1D integration I am having Excel do is completely irrelevant to what I want to know and to my L theory. Excel is computing assuming illumination by a line-source, but this is never what I look at!!! It is just the wrong calculation, and that is why things don't agree! If I want to model the correct situation, I have to put a 2D mesh of sources inside a circle and illuminate with them. I could do it! The a2 of the 2D integration has some corresponding 1D analog. I think I can guess what it is! Look back at the line source and repeat the calculation and you get h = (a/L) instead of (a/L)2.
2D Experiment. I set n = 400, and 2L = 10 Airy. The h formula gives .9999725. The integral right at the center computes to .9999680, so this is I think reasonable agreement! That is, neglecting the 1 we get answers of 725 and 680, so these are only 45/700 = 6% different. The error is that n is finite and L = 5 Airy is not all that big.
Computing Speed Issue. Even on Alta, things are now painfully slow since we how have a 2D integral we are estimating.
Maple. Can I write simple programs in Maple? How does one do this? And will Maple really be faster? And what language does it use? // I spent several hours in the Maple world and learned about its language. Yes, you can do everything, but it won't so hardware floating point for Bessel functions! So it runs slower than Excel! But it was a nice little visit, and I have some sample Maple code now.
What about the DLL approach? Does C know bessel functions? Yes it does. What do I have to do here to make this work? Look at the config.dll project. Let's make a simple program to start with. We will send over x, and it will send back sin(x). Get this into a separate project and make it go. Then we have a place to start. I have no other dll projects so I have to start with the big mess. Def file is done. Added basics.h. Bug: it cannot open xlcall.h, why?
Settings!
(1) Debug: C:\Program Files\Microsoft Office\Office\excel.exe in box.
(2) WIN32,_DEBUG,_WINDOWS,DLL
e:\DevStudio\Excel_SDK\Include -- it will find it here
/nologo /MTd /W3 /Gm /GX /Zi /Od /I "e:\DevStudio\Excel_SDK\Include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "DLL" /FAs
(3) Post build:
cp debug\floater.dll c:\winnt\system32
There may be more, but I see that some of these are needed~!
Next, I notice that configa has two extra files in project:
xlcall32.lib
framewrk.c
I moved the latter in only. Also had to add menus.h. Now floater.cpp compiles for first time! Link fails, it cannot find _Excel4 symbol. I see my comments in an old log file, need some "libraries" to fix this. Only one I see in configa is that xlcall32.lib, so I just added it. Got it! We are linked.
Now make an Excel test spreadsheet! I get NOVALUE on my first attempt to set_x. Some linkage problem, maybe name mangled. My def file was not "added to the project". Now linkage works! Both directions are linked, but sine answer is wrong! // Had to straight line some code, it is now working!
Done! We have a DLL. It was the usual bumpy road to get a starter package but we are there. I wish I had a better instruction sequence for doing this. Keep these notes.
Bug: I changed sin() to _j1(), and that seems to work OK.
Status: We can now compute things in the C world quickly and tie them into Excel. So let's try our fancy function now. How do we call a DLL function from VB code? Here is an example:
Private Declare Function search Lib "configa.dll" () As Boolean // above everything
success = search() // and here is the call in some code in the same file
It seems easy to add arguments to this, you can even declare an alias function name.
Status: I have the new babavD (D = DLL) function working, it gives the same result as the Excel function, but is MUCH faster. How much: (these numbers are on the Easy)
Excel time for n = 70 is about 20 seconds.
DLL time for n = 560 is about 2.5 seconds, this is about 8*8=64 times more work.
So speedup factor is 20*64/2.5 = 512 times. WELL worth the work of getting the DLL powered up!
Resume floater research.
Now we were trying to compare the "central value" in the shadow with the theoretical prediction based on the L-radius area. If I set the L circle radius to 10 Airy radii, we should get pretty good approximation with our integral to the exact theory for the infinite L circle. First, I display results not just at the central point, but at points representing 0/100 to 10 /100 of one Airy, so we are very near the center, but we take a sampling of 11 points. In doing this, we learn how large n has to be to get rid of oscillations in the central region, which oscillations arise from our finite-n approximation to the double integral. We find that n=200 does a good job and here are the results:
0.9999680
0.9999680
0.9999734
0.9999802 And 1 - (a/L)2 = 0.9999725 (a/L)2 = 0.0000275
0.9999802
0.9999735
0.9999680
0.9999732
0.9999801
0.9999804
0.9999737
0.9999744 // average of 11 samples 1 - num = 0.0000256
We really should compare 1- number, so those are shown too. So our "error" in having a finite-L circle of only 10 Airy radii is (275-256)/275 = 7 %. As we further raise the mesh size, we don't get any closer.
Now what if we set radius to 100 Airy. Easy speed is 15 seconds for n=400. Alta is 2 seconds or less, so call it a speed up of 8 going Easy to Alta. Now with larger radius, we need more mesh because the little Babinet intensity-lets are more localized! The result does not stabilize very well, and I think we are getting into rounding error now. C will only do double-precision which is 15 digits, seems a lot. If I set n = 2000, I finally get agreement: ratio gives .000,000,275 and integration gives .000,000,265. This is the calculation I have been wanting to see, and I could only do it with DLL and Alta. Even on that, it takes about 30 seconds to get our 11 numbers. As you can see, we are now at 10/275 = 3.6%. Either that is numerical error, or there is still stuff outside that circle. I believe it is numerical! If I raise to n=3200, takes about 3 minutes, and result of integration is then 342, so overshot the 275 in this case. So yes, we are at the limit of numerical accuracy here. Who knows how accurate the _j1(x) function really is?
Here is an interesting comment in DevStudio:
The Microsoft run-time library sets the default internal precision of the math coprocessor (or emulator) to 64 bits. This default applies only to the internal precision at which all intermediate calculations are performed; it does not apply to the size of arguments, return values, or variables. You can override this default and set the chip (or emulator) back to 80-bit precision by linking your program with LIB/FP10.OBJ. On the linker command line, FP10.OBJ must appear before LIBC.LIB, LIBCMT.LIB, or MSVCRT.LIB.
So I could maybe improve things a bit by doing this, but still C would handle "long double". Borland C++ and all gcc ports do the 80-bit hardware stuff, only M$ does not do it and won't let you do it!
SO, I now "believe" that my integration is doing the right thing, since it agrees with the L-theory for reasonably large radius like 10 Airy and 100 Airy. Now we can use this fast Alta to perhaps compute up some curves for smaller-L cases and maybe build a table or results, or come up with a simple "model" to handle these cases.
Now let's try to use this new DLL. I try to modify floater3, but suddenly the DLL and VB versions disagree with each other with n = 2. Remake the dll please! Did not fix it. I now have to step each routine to discover where they diverge! We have 4 loop passes to write down numbers for! I am mystified, but this typical of what happens when you try to do real work! It blocks you in any way it can. OH, this VB only has the single loop code. So install 2D from I guess floater4? Done, and now OK, my fault.
Qualitative Description of the Floater Cross Section with z = 1 mm.
The model is that we integrate over a smooth spread of Babinet Airy patterns where the separation between the two pattern centers at the extremes is 2*deltaR. We express deltaR is a percentage of Rairy which is the radius of Airy which makes the first zero from J1. We start the percent at 0 and get a replication of the Airy Bab function with no distortion, even though we are adding many of them together and dividing. As expected, the tail wiggle on each side is quickly attenuated, so by 3 it is largely gone already. As we increase to 5, the amplitude of all peaks comes down, and the central value which starts positive heads toward negative land. At 5 the center peak hits zero. At 11, we have the W shape and the middle central peak is at half the side negative peaks. At 16 the central region is now flat, so we now have a V with a flat bottom. But then the flat bottom bulges down instead of up. Then it comes back up so at 28 we have a perfect wide V. At 31 the bottom is flat again, but wider now that last time it was flat. By 36 the central part is bulging up again.
Hard to draw any clear conclusions on this! Let's now force L to be the right thing for pupil size.
Data. Each group is for a given value of Rp. The %theo means the (a/L)2 theoretical value for the diminution percent, while %calc is what we get averaging the index values 0 through 30 divided by 31. The plot -100 to +100 shows a range of 2*L, so we are looking in the center of this 2*L range, so this is 30/100 or 30% from center. Again: we are averaging points from center to 30% away. If there is a dark dip in this central region, we will measure that dark dip, etc. We use n=200.
Rp = 1mm
z(mm) L() Rairy %theo %calc cpd fraun(B) comment
6 309 458 .017 .014 0.4 not visible
5 254 381 .027 .028 not visible
4 187 305 .046 .048 .025 not visible
3 134 229 .089 .106 1.2 not visible
2.50 109 191 .134 .135 not visible
2.25 97 172 .169 .161 not visible
2.00 86 153 .219 .254 .05 threshold of visibility
1.75 74 133 .292 .290 visible
1.50 63 114 .406 .502 1.8 visible
1.25 52 95 .597 .599 visible
1.00 41 76 .953 1.343 2.7 0.1 some oscillations starting
0.75 30 57 1.728 1.674 "
0.50 20 38 3.968 6.163 5.5 0.2 smooth sine down bump
0.25 10 19 16.193 18.468 11.1 0.4 smooth hump down still
0.125 5 10 65 17 22.4 0.8 central bright spot
0.063 2.5 5 100! -.972 44.6 1.6 large central hump up to 1.55, bnif!
0.030 1.2 2.3 100! 1144 3.2 bigger hump, but not in Fraunhofer!
The cpd is cycles per degree. Imagine a 2L wide floater, then a 2L wide gap, and so on. Then cycle is 4L at distance of Leye from the pupil. (We can later correct this for lens effect). So tan(theta) = 4L/Leye, get theta, then cpd = 1/theta. Fraunhofer parameter is exactly parameter B.
Comments on the contrast sensitivity function. The chart above in this document shows the sensitivity of the eye at various lighting levels as a function of the spatial frequency measured in cpd, cycles per degree. Two points to make. (1) What is plotted is inverse of Lthreshold/L. This is why at best you see 400 meaning 1/4%. So the labels on the left axis are of L/Lthreshold. Now the max L you can have is all of L, and that is why the plot stops at 1! (2) Probably these measurements are made with linear sine patterns. Thus, a "ridge" in the pattern crosses many rods and cones on the retina: the ridge is thin and long. This is really a 1D sensitivity test, whereas for floaters I think a 2D test is more appropriate. Is there data on such a thing?
This site: http://www.cg.tuwien.ac.at/research/theses/matkovic/node20.html gives a nice simple model function for the CSF with a peak value at 1, so it is normalized to 1. It goes to 0 at cpd=60. It is done with thin vertical lines, as noted above. I need something done with dots!
This site: arapaho.nsuok.edu/~salmonto/VSII_2002/Lecture15.pdf says that the cutoff is in the 40-60 in the line test range.
Let's bring in the data quoted in the first reference above:
Author notes this is sometimes called visual acuity as opposed to CSF. Peak is .98 at f=8 roughly. Value at 40 is .059 ( I put this into Excel and read off that value, curve does look as above). Here is how I might apply this curve to my problem. With a back yard experiment with black disks on white paper in full sunlight, I found a cutoff at about cpd = 40. Were I to make these dots twice as big, they could be cpd=20 and my perception of them would be much stronger. The above curve hits .50 at 20, so .50/.059 = 8.5, so in some sense my perceptual signal would be 8.5 times larger for these larger disks.
Idea: How might we relate an isolated disk to those vertical lines? Do a Fourier analysis!
For example, in 1D, suppose we take a box of total width 2a. The FT is going to be 2a sin(ka)/(ka) and the first zero will be at ka= = 2a/, so we say = 2a. We would model our 1D box as a continuum of frequencies going from DC up to a roughly max frequency of = 2a, which seems very reasonable. Compare this to a line of slats each of width 2a and spaced by 2a. This slat array would have most of its energy at = 4a. The single slat runs from = inf (DC) to = 2a, so if we took the half way point in the inverse space going from f = 0 to f = 1/2a, we would pick f = (1/2)(1/2a) = 1/(4a) so = 4a, and we would have some rough agreement. We would say that a single slat has its crude average power at the same frequency that the slat array has almost all of its power.
Now in the 2D disk case, if we start with a disk of diameter 2a, we get J1(ka) which has first zero at ka = 3.83 instead of = 3.14. Specifically, I just computed that FT(disk radius a) = 2a2 J1(ka)/(ka). So, 3.83/ = 1.22, so we would conclude than that for disk of diameter 2a, frequency profile goes roughly out to ka = 1.22 so we go to a slightly higher frequency, meaning out to a slightly shorter = (2a)/1.22. So we could think of this disk as being a superposition of slat arrays from 1/ = 0 out to 1/ = 1.22/(2a). Inverting, we get a superposition from 2D = infinity down to 2D = 2Rf/1.22, where Rf is our floater shadow radius. In terms of cpd = 450/(2D), we go from cpd = 0 up to cpd = 450/(2Rf/1.22) = 275/Rf. So in some sense, you could average eye response between cpd = 0 and cpd = 275/Rf to evaluate your floater shadow effect. With Rf = 2.8 for my test paper on the garden wall, it has a spectrum from cpd = 0 up to cpd = 100.
In any event, we can write J1(ka) = J1(kRf ) = J1(2fRf ) where f = spatial frequency. But we know that cpd = 450/(2D) where 1/(2D) = 1/ = f, the frequency of our slat pattern with slats of width D. So we can say cpd = f*450 . Thus, we have J1(2*cpd*Rf/450) as our sensitivity spectrum. If we put in Rf = 2.8 and cpd = 100, we get that first zero at 3.83.
Now consider the 2D Fourier Transform representation of the disk:
The phasor phase is ikrcos(-) when you go into the usual coordinates, and we can set phi=0 and do the angular integral to get
This integral is a famous one which really does give the circle as shown in GR. Now, consider in the double integral above this k-space density function
(k) = a J1(ka)/(ka)
If you integrate this dk 0 to infinity, you get 1. Now go back to our form like this:
density = J1(2*cpd*Rf/450)/cpd
which I could plot in Excel as a function of cpd. This is again normalized so integral over cpd gives 1.
But now we need really to think of power and Parseval's Theorem. Think of the disk as a 2D distribution of energy. We integrate over this unit energy and we get a2 . We should be able to integrate the square of the FT and get this same number. Here is what I get:
(k) = (3/4)a * J1(ka)2/(ka)2 =
is the normalized density, such that integrate over k and get 1. Now convert this to our cpd and
density = (3/4) (2* Rf/450) * J1(2*cpd*Rf/450)2/(2*cpd*Rf/450)2
This should integrate to 1.
OK, I have this in the spreadsheet called "weighted CSF.xls".
Problem: what about the DC end of the CSF?
Should I believe the model at the very low DC end of the curve? At 0.5 it is in accord with the color plot above. So OK, I will believe it.
STOP. I don't like this theory any more, now that my spreadsheet is all done! (weighted csf). For something like Rf = 10 , the spectrum is flat out to high frequencies, and we get a very high visibility of .73 which I know is too high. I want to see the visibility drop at small size, not go up! The theory is wrong because the eye/brain cannot do a Fourier analysis unless it has enough samples!
I need to go out and read more about how the detectors really work, something along the lines of the comments Campbell made. Perhaps the signal is proportional to the amount of edge or something like that.
A New Model for How Eye detects Disk black disks. I have shown that they are just barely visible when we have Rf = 2.8 , diameter 5.6 , disk covers perhaps a 5x5 grid of detector cells, but some of these are wired together and summed I think. Now, at this stage we are just trying to gather enough light (actually, to gather enough absence of light in the dark area) such that we can perceive the dot. As you move closer, eventually the disk starts to have some internal structure that we can see. Perhaps you have to get 20 times closer, let's say, so that there are 20 detectable points within the disk. Then from that point on, the thing does not become more visible as it gets larger. So I am proposing that we multiply our results, whatever they are, by this factor:
Below r1, we get f = 0, no signal at all, dot is too small, so r1 = 2.8 today. Then we follow the quadratic up to some point r2 = 10*r1, say, and from then on we have a constant. Probably there would be a smooth taper at r2, not as shown, but OK. With 20X, we set r2 = 56 .
So let's go back to data collected yesterday from the general model spreadsheet:
These are from floater3.xls on Alta in D/optics. This version averages 30 values near the center, and I upped that since the last run, so I will update the data below in the %calc column: (n=200, and have to compute each one twice for some reason! )
Added comment: Notice that in all cases, L is actually a bit smaller than Rairy due to the small pupil size selected. Thus, we expect that our numerical "integration" over the L circle should always give a number smaller than the "theoretical "one computed assuming infinite L. This is born out in the table below, at least in the Fraunhofer region. As we get down the geometric region, we have to pin our theoretical formula at 100%, so to speak, since at that point a point behind the floater sees NONE of the pupil opening. Also in this region, we expect our integration result to be
Rp = 1mm
z(mm) L() Rairy %theo %calc cpd fraun(B) comment
6 309 458 .017 .013 0.4 not visible
5 254 381 .027 .022 not visible
4 187 305 .046 .036 .025 not visible
3 134 229 .089 .073 1.2 not visible
2.50 109 191 .134 .107 not visible
2.25 97 172 .169 .154 not visible
2.00 86 153 .219 .185 .05 threshold of visibility
1.75 74 133 .292 .258 visible
1.50 63 114 .406 .353 1.8 visible
1.25 52 95 .597 .530 visible
1.00 41 76 .953 .798 2.7 0.1 some oscillations starting
0.75 30 57 1.728 1.624 "
0.50 20 38 3.968 2.803 5.5 0.2 smooth sine down bump
1.6
0.25 10 19 16.193 15.637 11.1 0.4 smooth hump down still
1.7
0.125 5 10 65 25 22.4 0.8 central dark spot
0.9
0.063 2.5 5 100! 60 44.6 1.6 large central hump up to 1.55, bnif!
0.5 (.008)
0.030 1.2 2.3 100! --394 3.2 bigger hump, but not in Fraunhofer!
0.0
Right now I am interested in the entries in the last 6 rows or so. Where Rairy = 38 we are still OK in Fraunhofer limit with 0.2. We can regard this as the radius of the shadow, but it would be better to reduce this to an effective radius. Looking at the shape of the Airy square curve, I would say 1/2 Rairy would be a good effective shadow radius for our purposes here. On the other hand, perhaps when we look at small distant dots, they are doing Airy too, so we have already accounted for that. Fine, use the full Rairy as the radius. So on our Rairy = 38 line, we should be reducing our visibility factor by something like (38/56)2 which is 0.46. So instead of about 3.5% as our measure of detection, we might lower that to 1.6%. Now lets go to the Rairy = 19 line. Fraun is marginal but we shall keep it. Our factor now is (19/56)2 = 0.115, so we lower our 15% to 1.7%. So this thing is MORE visible than the 38 line one.
Let's go ahead with Rairy = 10 and treat the next line as Fraun even though 0.8. Hard to say what the % dimness is in there, let's just go with 30% since getting into geo shadow domain. But our factor is now (10/56)2 = .03, so we are then at 0.9%, and this one is dimmer than the previous line. But I think we should be able to see this Rairy = 10 floater which is floating 125 off the retina.
Now go to the next line with Rairy = 5. Call it 60%, and now have (5/56)2 = .008, and we are down now to 0.5%. The last line has Rairy = 2.3 and this is below our cutoff so we get 0 for perception here.
So the main point is that we now have a way to cut off floaters when they get too close to the retina. We are then down to the "light collection" stage. I have added the new numbers in red to the above table.
So, now we have a theory for all values of z. The above table suggests that things just become slightly visible when Rairy = 114 with 0.412% which is more than 1/4% so we can see it. Visibility then increases and peaks when Rairy = 60-20 with 1.6%. Things remain visible down to Rairy = 5 but we are down to 0.8%. Then when Rairy = 2 or so, we see nothing. This suggests a floater spectrum where things range in diameter from 228 down to 10 , a range of 20X. The most visible would be with diameter 120 to 40 , but our theory is pretty sensitive to our arbitrary fit at that point. My measurements usually showed 132 diameter, so this is at least in the general range! Maybe the 132 were the largest floaters I was seeing that day?
The most visible correspond to z in the range 0.75 down to .25 mm from the retina. So this is all consistent with blood cells being all over the place perhaps in the range 0 to 2 mm for all I know. Our theory now provides a maximum visibility peak when they are perhaps .5 mm from the retina.
If we now set Rp = 2mm, things are all different:
Rp = 2mm
z(mm) L() Rairy %theo %calc cpd fraun(B) comment
1.00 82 76 .238 .182 1.4 0.1 flat
0.75 61 57 .432 .331 "
0.50 40 38 .992 .747 0.2 smooth sine down bump
.34 (.46)
0.25 20 19 4.048 2.938 5.6 0.4 smooth hump down still
.34 (.115)
0.125 10 10 16.3 9.9 22.4 0.8 central bright spot
.30 (.03)
So we have a similar result, except the visibility of everything is lower because there is more blur with a larger pupil.
Conclusion. I think I am now done with this project. I came up with a theory that explains what I see and is consistent with a general spread out pool of blood cells in the 1 mm region of the retina. As floaters move beyond this distance, we are in the Fraunhofer regime, and the darkness on the retina is below perception levels, according to web data. On the bright day blue sky Rp = 1mm, the biggest you could see are maybe 260 diameter with z = 1.75 mm and % = .26, right at the threshold! As they get closer to the retina, they get more visible. My theory is probably still right at diameter 150 with z = 1 mm and % = .8, so these are much MORE visible than the larger ones. At this point, we enter the transition between Fraunhofer and geometric shadow and this is where my model is very weak. The model suggests that things continue to get more visible with a peak perhaps at 120-40 and % = 1.6. This is likely to be wrong. I am guessing that as floater shadows get smaller than 100 diameter, they rapidly become less visible. I see none at the 2.8 point that correspond to the black dots I see on paper, so it could be that the floaters are very transparent. I don't know how transparency affects the disk field because I don't know how to treat Babinet in this case! If you add up two 50% transparent things at the disk, what do you get? Maybe you just get the Babinet 1 - X field and then you add the transmitted portion to that, washing out the shadow somewhat. If this is right, then most of the Fraunhofer would not be altered since most of the Airy is not in the geometric shadow where we would be adding the extra transmitted field. So this mechanism could account for floaters being less visible when they get into the Fresnel zone and into the final geometric shadow zone. Also, my simple model for light collection is probably completely wrong, and some other mechanism does the cutoff as you get to small size. Also, floaters are spheres, not disks. Perhaps the diffraction of a dielectric sphere is the more appropriate problem to solve. In any event, I would be hard pressed to know what n value to use for a floater sphere!
What about just using the cpd chart "as is"? I found that in bright light, my visibility limit on a focussed retinal shadow was Rf = 2.8 with cpd = 40. My black single trace CSF plot shows that contrast sensitivity inverse just drops to 1 at this point, which is in perfect agreement. The color chart shows a similar thing but perhaps at middle lighting level. Remember that 1 implies that even with a black shadow, you cannot see it. My little function from yesterday that I put into Excel puts CSF at .06 as a percent of peak efficiency, although we have only a relative scale here.
Bug: Each time I run my floater3 program on Alta, I seem to get different answers for the integration result from the DLL, even if I hit F9 twice. My confidence is now shaken. What is the problem here? The DLL and VB versions of babav are giving the same answer. OHHHHH! The answer is a function of the plotwidth, because that determines where those 30 samples are taken!!