Quantifying Veiling Glare

"Veiling glare" is a term that is used in the field of imaging system design. Technically, veiling glare is stray light that reaches the sensor plane of an imaging system, and causes a decrease in performance. While a full non-sequential analysis is needed to account for this phenomenon accurately, many optical imaging systems only require a first-cut look at forward scattering effects. This article shows how to make such a preliminary veiling glare measurement using tools that are already built into OpticStudio. This analysis requires a few minutes to perform and can lead to meaningful results without going into the full non-sequential analysis.

Authored By Mike Tocci


There are many potential sources of stray light, and accurately modeling all of them can be a labor-intensive task.

For highly-sensitive optical systems, modeling as much of these different stray light phenomena as possible may be necessary to accurately represent the system performance. This is possible in OpticStudio, as demonstrated in this other article, but might require some effort to setup.

On the contrary, many optical imaging systems only require a first-cut look at forward scattering effects to analyse veiling glare, as demonstrated in the remainder of this article.

Prepare the lens for analysis

We’re going to model an imaging system with a protective window. The purpose of the protective window is to shield the sensitive lens elements from the environment. However, as we’ll see, the window itself can become a significant source of scattered light.

We’re going to be modeling a broad scattering effect (we’ll be using a partially Lambertian scattering model), and so we’re going to convert the lens to a Non-Sequential Component. The reason we do this is because OpticStudio will only allow small angle scattering in pure Sequential Mode, and we would miss out on some of the very interesting effects if we did not convert the lens to a Non-Sequential Component.

Note: if we were interested in modeling only small-angle scattering, we could skip the step of converting to NSC and simply add scatter properties to any of the surfaces by highlighting the surface, and then clicking the Scattering tab in the surface properties.

We’ll start with a lens that is provided with OpticStudio. The lens file is titled, “Double Gauss 28 degree field.zmx” and it’s located in the {Zemax}\Samples\Sequential\Objectives folder. After loading the lens into OpticStudio, the first thing we’ll do is tune it up a bit. The image below shows the layout of the system when it’s first loaded into OpticStudio:


Open a window to view the Geometric MTF of the system, under Analyze...MTF...Geometric MTF. Click Settings, and set the Max Frequency to 50. The settings dialog box should look like this:

geometric mtf

The system’s MTF is shown below:

geometric mtf

Note that we’re analyzing an imaging system with a [mostly] round pupil at its focal plane. Therefore Geometric MTF gives extremely accurate results compared to the FFT Diffraction MTF, but the important distinction here is that Geometric MTF gives us the ability to include scattering effects later on. See Understanding the MTF Operands for more details.

To tune the lens we’ll first increase the f-number of the system. Go to the System Explorer and click on the Aperture drop down.. Set the Aperture Value to 25 and click Enter on the keyboard.

Next go to Optimize...Optimization Wizard and click Reset and then click OK (Default sequential merit function: RMS wavefront centroid GQ 3 rings 6 arms). Now click Optimize!..Start. The MTF is now significantly improved.

geometric mtf

For this simple demonstration, we’re going to be modeling an imaging lens to be used for viewing through a porthole in an aircraft – the idea being that the outer window on this aircraft will get weathered and “bead-blasted” over time and will become a significant source of scattering. So the next thing we’ll do is add a window to the front of the model.

Go to the Lens Data Editor and click on Surface 1 (this is the outermost lens surface). Hit the Insert key twice to insert two new surfaces before the lens. Set the following values for these two new surfaces:

Surface 1

  • Surf:Type = Standard
  • Comment = Window-outer
  • Radius = Infinity
  • Thickness = 10
  • Glass = BK7

Surface 2

  • Surf:Type = Standard
  • Comment = Window-inner
  • Radius = Infinity
  • Thickness = 20

Next, we want to slightly oversize each lens so that it’s just a bit larger than the beam going through it. Go to System Explorer...Aperture and set Clear Semi-Diameter Margin Millimeters to 3 mm. Go to the Layout window...Settings, and set First Surface to 1.

Here is what the layout looks like at this point:


Convert the lens to a Non-Sequential Component Group

In order to perform a stray light analysis on this lens, we need to convert it to a Non-Sequential Component. This is a simple and speedy process in OpticStudio. The first thing we need to do is to realize that OpticStudio requires that the Aperture Stop of the system be located before any Non-Sequential Component in the Lens Data Editor. Remember: our plan is to make the outer surface of the flat window a scattering surface, so the window must be part of the Non-Sequential Component. Looking at our lens, we see that the Aperture Stop is actually buried deep inside the lens.

To make the Aperture Stop occur before the window in the Lens Data Editor, we’ll add the aperture stop before the window, such that its location and size coincide with the Entrance Pupil of the lens. Then we’ll have the Lens Data Editor step backwards in space to the location of the window, and then the rest of the system can follow as usual.

We need to know the Entrance Pupil’s location and size, so let’s go to the Merit Function Editor and insert two new operands: ENPP and EPDI. Update the merit function, and you’ll see these values calculated automatically.

merit function editor

Click on Surface 1 in the Lens Data Editor and hit the Insert key once. Set the following values for this new surface:

Surface 1

Surf:Type = Standard

Comment = Aperture Stop

Radius = Infinity

Thickness = -86.063994

Now open Surface 1...Properties...Type tab, check the box Make Surface Stop. Note that since this system’s Aperture Type is Entrance Pupil Diameter, we don’t need to set the Semi-Diameter of this surface: it’s already set for us to 12.5mm.

We’re almost ready to convert the lens to a Non-Sequential Component. Go to the last lens surface (Surface 14) in the Lens Data Editor, and make its comment “last surface.” This is not a necessary step, but it’s helpful when we go to find this surface when we convert to NSC, in the next step.

Now click File...Convert to NSC Group. First uncheck Convert file to Non-Sequential Mode. Next, set First Surface as  “2 – Window-outer” and set Last Surface as “14 – last surface” and click OK.

You’ll notice that the MTF of the system is identical to what it was before conversion to NSC: this is a good check that everything converted over correctly.

Open a 3D Layout window and set the First Surface to 2, and you’ll see that the system looks nearly identical to the original sequential layout.

3D layout

Note that the only difference is that the edges of the first group of lenses are bevelled: if this is not desired, just add apertures to these surfaces prior to conversion, or edit the file by hand after conversion.

Add scatter and analyze

The next step is to model the outer surface of the window as if it has been subjected to a harsh environment. We do this by adding an appropriate scatter model to the front face of the window element.

Open Non-Sequential Component Editor...Object Properties for Object 1 (this object represents the flat window of BK7 glass). Click Coat/Scatter tab and set Face to “1, Front Face.” Next change the Scatter Model to “ABg”and then for Transmit choose “LAMB-SPEC”. The dialog box should look like this when you’re finished:

non seq component editor

The system now simulates a highly-scattering front window surface, followed by perfectly smooth (non-scattering) lens surfaces behind the outer window.

Note that we have chosen a built-in ABg scatter model (LAMB-SPEC) for this article, but for modeling a real system you will need to carefully select a scatter model that accurately simulates whatever scatter you expect the system to encounter.

Go to the already-open Geometric MTF window and click Settings. Increase the sampling to 512 x 512, check Scatter Rays, and hit OK. The resulting plot shows the effects of veiling glare on the system’s MTF curves:

geometric MTF

A very interesting result here is that the on-axis field suffers the most from the effects of veiling glare in this set up. To understand why this is, we will look to the Spot Diagram next.

To look at the spot diagrams, go to Analyze...Rays & Spots...Standard Spot Diagram, and then fill in the Settings as shown below:

spot diagram

Note that we have left the Scatter Rays box un-checked for now. Here are the resulting Spot Diagrams when scattered light is neglected:

spot diagram

These are very good spots, measuring just a few tens of microns across (note the RMS radius values at the bottom of the diagram, in units of microns). The small black ring at the center of each spot diagram shows the calculated size of the diffraction Airy Disc, which has a diameter of 5.5 microns.

Now go to Spot Diagram...Settings check Scatter Rays and then click OK. Here are the Spot Diagrams when the effects of scattered light are included in the calculation:

spot diagram

You can see now that the spots measure several tens of millimeters across (the RMS Radius values are shown at the bottom of the diagram again), and you can further see that the on-axis field (whose spot is located at the top left of the diagram) has most of its light scattered in a tight cluster near the center, whereas the off-axis fields are not nearly as concentrated around the center. Zoom in on the two locations shown below to see the difference in light concentration for the on-axis and off-axis spot diagrams.

spot diagram

Below is a zoomed-in image of the on-axis spot diagram:

spot diagram

And here is a zoomed-in image of the off-axis spot diagram:

spot diagram

Usually, we consider an imaging system to be better if it concentrates more light toward the central image spot, so we might think that the spot diagram for the on-axis spot would be better than the spot diagram for the off-axis spot. Let’s zoom even further into the on-axis spot and see just what’s going on here…

I’ve changed the Settings for the Spot Diagram window to the following:

spot diagram

Next I zoomed far into  the center of the on-axis spot, and here is what we see:

spot diagram

The small black ring in the center of the tiny spot diagram represents a calculation of the Airy Disc size, as we saw in the spot diagrams before considering scattering. We can see now that the highest concentration of light is still in the exact same size and shape as the original spot diagram (back when we had neglected scattering effects), but the effect of scattering is to put some light around this small spot and thereby change what had been a perfectly dark background to a more-light-filled background. This, in turn, reduces the system’s contrast and thus the MTF drops.

Note: adding scatter to our model did nothing to the shape or size of the tiny spot diagram: it merely shifted some of the light away from the tiny spot.

We see that because the off-axis beam scatters light farther away from the central spot, the background in the vicinity of the tiny spot diagram is less intense than it is for the on-axis beam. Therefore we can expect the off-axis fields to have better contrast, and higher MTF, than the on-axis fields. And this is exactly what OpticStudio showed us in the MTF curves when we included scatter.

Note that there are two other Analysis features that allow you to “Scatter Rays”: Geometric Image Analysis and Geometric Encircled Energy. Feel free to check the effect of scatter on those, as well.



Was this article helpful?
6 out of 6 found this helpful



Please sign in to leave a comment.