Closed npcottaris closed 9 years ago
Hi Nicolas,
Great you are doing this. The code I have that analyzes the human OTF is in the script s_humanOptics.m
The values computed there don't fall off like the code you wrote. It might be best for you to compare what's in there with your script (which is much longer and has lots of moves in it that would be hard for me to track down). In the s_humanOptics.m script, at 550 nm with a pupil radius of 3 mm the OTF is down to about 0.15. Clearly, this is much higher than the values you are calculating.
That script could be improved, too, of course. It relies only on humanCore(), and the value of your script is that it goes all the way to the OI and Optics. We will try to stick with you on this, but don't give up hope. I think the core calculation is about right. There is a lot of complexity in tracking the variables and maintaining units.
This code also produces a reasonable OTF, using reasonably high level calls.
Brian
scene = sceneCreate('line d65'); scene = sceneSet(scene,'h fov',1); oi = oiCreate('human'); oi = oiCompute(oi,scene); vcAddObject(oi); oiWindow; vcNewGraphWin; plotOI(oi,'otf wavelength')
Hi Brian,
The problem was on my part. I was calling fftshift on the 3D OTF instead on the 2D slice at the desired wavelength. Stupid.
Now the OTF slices look much more reasonable. I will validate these against those appearing in Watson's paper.
Thanks, Nicolas
But what you are doing is really important. When you are done, we will all be feeling much more confident about the numbers. So far, it has been our lab and a few colleagues from industry who checked (mainly in cyc/mm space). When you are done, we will have a good validation procedure. Very cool.
The following panel assemblies depict the human OTF as a function of pupil diameter from 1.0 mm to 6.0 mm. The code used to generate these panels is attached at the end.
(1) Perhaps the code is not setup correctly, but if it is, I think that the built-in OTF does not do a very good job for low frequencies. It needs to be computed at a much finer grid. Which brings me to my earlier issue (#26), of how to specify a fine support grid for the OTF.
(2) Also, assuming I did not do something stupid in the code, it appears that there is significant noise in the OTF for certain pupil sizes (e.g., diam=3.0 mm). Is this expected? I think these are also due to the coarse support grid.
(3) Finally, should't the amplitude of the human OTF be much higher than what is shown here ? I am comparing these curves to those shown in Fig. 2 of Watson's JOV(2013) 13(6) paper (http://www.journalofvision.org/content/13/6/18.short?related-urls=yes&legid=jov;13/6/18) It this attenuation because of another optical element, like a diffuser? The diffuser method is shown as 'skip'.
Nicolas
Here is the code: