UV short-pass filter stacks

Spectra, images and RGB values for a white reference

equipment
filters
Author

Pedro J. Aphalo

Published

2023-04-15

Modified

2023-05-10

Keywords

filters, ultraviolet, spectra, photographs

Introduction

Two expensive filters used for UV photography are the Baader U-filter (currently available) and the UVROptics StraightEdgeU filter (currently unavailable). The Baader U-filter is a thin (1 mm-thick) dichroic or interference filter on a Schott UG11 substrate, with each surface with a different interference coating. The UVROptics StraightEdgeU filter is a thick stack (5 mm-thick) of absorptive glass filters with one outer surface with an interference filter coating. They differ in spectral transmittance (Figure 1). The Baader filters are available in two sizes that can be adapted to camera lenses 1.25” and 2.0” in diameter as used in telescopes. The UVROptics filter was available in a M52 threaded frame. They cost about about eight to 10 times as much as a pair of Chinese filters as needed to assemble a stack of a similar diameter.

Code
autoplot(filter_mspct(
  list("Baader U-filter" = filters.mspct$Baader_U_filter_1.0mm_48mm,
       "StraightEdgeU I" = filters.mspct$UVROptics_StraightEdgeU_Mk_I_5.0mm_52mm)), 
  annotations = c("-", "peaks"), 
         w.band = c(UV_bands("CIE"), IR_bands("CIE"))) +
  labs(linetype = "")
Figure 1: Total transmittance spectra for two commercially available UV-pass filters. Baader U-filter and UVROptics StraightEdgeU Mk I.

It is rather difficult to find Schott and Hoya UV-pass glass filters mounted for use on camera lenses with different thread diameters. Heliopan has in its catalogue a UG1 filter in multiple diameters. Filters mounted in frames of various sizes are available from a few sellers in AliExpress and eBay. Most of these sellers are located in China and sell Chinese-glass filters. They are in most cases described by the true denomination together with a code from Schott or Hoya given as equivalent. One of these sellers is Tangsinuo, which has in my experience been a very reliable supplier. I have written separate pages about NIR-pass filters, UV-pass filters, UV-blocking filters, and UV- plus IR-blocking filters from various suppliers. In this page I compare the Baader U-filter against some of the stacks that can be assembled using cheap Chinese filters. Except for the Baader and the UVROptics filters, the filters tested were all supplied by Tangsinuo.

Tangsinuo TSN575 filter as NIR blocker

Transmittance

Warning

The spectra shown are for the exact same filters used to take the photographs in later sections. Not all filters of a given type have exactly the same transmittance because there is variation among individual glass melts. So, other individual filters of the same type obtained from the same supplier may be somehow different due to this variation.

Using the TSN575 filter from Tangsinuo to block NIR transmitted by the ZWB1, ZWB2 and ZWB3 filters could be a cheap alternative to filters like the Baader U-filter with the advantage of being absorptive glass filters less affected by the angle of incidence of the radiation. The spectra for ZWB1 and ZWB2 based stacks look rather good and ZWB2 is the recommendation from Tangsinuo.

Code
autoplot(filter_mspct(
  list("Tangsinuo ZWB1 + TSN575" = filters.mspct$Tangsinuo_ZWB1_2.1mm_52mm * 
         filters.mspct$Tangsinuo_TSN575_2.0mm_52mm,
       "Baader U-filter" = filters.mspct$Baader_U_filter_1.0mm_48mm)), 
  annotations = c("-", "peaks"), 
         w.band = c(UV_bands("CIE"), IR_bands("CIE"))) +
  labs(linetype = "")

autoplot(filter_mspct(
  list("Tangsinuo ZWB2 + TSN575" = filters.mspct$Tangsinuo_ZWB2_2.0mm_52mm * 
         filters.mspct$Tangsinuo_TSN575_2.0mm_52mm,
       "Baader U-filter" = filters.mspct$Baader_U_filter_1.0mm_48mm)), 
  annotations = c("-", "peaks"), 
         w.band = c(UV_bands("CIE"), IR_bands("CIE"))) +
  labs(linetype = "")

autoplot(filter_mspct(
  list("Tangsinuo ZWB3 + TSN575" = filters.mspct$Tangsinuo_ZWB3_2.2mm_52mm * 
         filters.mspct$Tangsinuo_TSN575_2.0mm_52mm,
       "Baader U-filter" = filters.mspct$Baader_U_filter_1.0mm_48mm)), 
  annotations = c("-", "peaks"), 
         w.band = c(UV_bands("CIE"), IR_bands("CIE"))) +
  labs(linetype = "")
(a) Tangsinuo SWB1 + TSN575 stack
(b) Tangsinuo SWB2 + TSN575 stack
(c) Tangsinuo SWB3 + TSN575 stack
Figure 2: Total transmittance spectra for stacks pairs of filters at thickness of 2 mm computed by convolution of separately measured spectra. Filter TSN575 from Tangsinuo used as IR blocker. Baader U-filter shown as reference.

Filtered sunlight

The spectra on a linear scale look promising for ZWB1 and especially for ZWB2. We can convolute the spectra in the figures above by the solar spectrum. I used the solar spectrum measured in Helsinki under a clear sky during the mid morning in May. None of the filters transmit UV-B radiation, so the spectra shown, should be a reasonable approximation a couple of hours on each side of midday.

Code
autoplot(convolve_each(filter_mspct(
  list("Tangsinuo ZWB1 + TSN575" = filters.mspct$Tangsinuo_ZWB1_2.1mm_52mm * 
         filters.mspct$Tangsinuo_TSN575_2.0mm_52mm,
       "Baader U-filter" = filters.mspct$Baader_U_filter_1.0mm_48mm)),
  sun.spct), 
  annotations = c("-", "peaks"), 
         w.band = c(UV_bands("CIE"), IR_bands("CIE"))) +
  labs(linetype = "")

autoplot(convolve_each(filter_mspct(
  list("Tangsinuo ZWB2 + TSN575" = filters.mspct$Tangsinuo_ZWB2_2.0mm_52mm * 
         filters.mspct$Tangsinuo_TSN575_2.0mm_52mm,
       "Baader U-filter" = filters.mspct$Baader_U_filter_1.0mm_48mm)),
  sun.spct), 
  annotations = c("-", "peaks"), 
         w.band = c(UV_bands("CIE"), IR_bands("CIE"))) +
  labs(linetype = "")

autoplot(convolve_each(filter_mspct(
  list("Tangsinuo ZWB3 + TSN575" = filters.mspct$Tangsinuo_ZWB3_2.2mm_52mm * 
         filters.mspct$Tangsinuo_TSN575_2.0mm_52mm,
       "Baader U-filter" = filters.mspct$Baader_U_filter_1.0mm_48mm)),
  sun.spct), 
  annotations = c("-", "peaks"), 
         w.band = c(UV_bands("CIE"), IR_bands("CIE"))) +
  labs(linetype = "")
(a) Tangsinuo SWB1 + TSN575 stack
(b) Tangsinuo SWB2 + TSN575 stack
(c) Tangsinuo SWB3 + TSN575 stack
Figure 3: Total transmittance spectra for stacks pairs of filters at thickness of 2 mm computed by convolution of separately measured spectra. Filter TSN575 from Tangsinuo used as IR blocker. Baader U-filter shown as reference.

Images

Warning

Different cameras may produce different colours with the same filters and subject matter. I used a full-spectrum-converted Olympus E-M1 (first version) and a Sigma 30 mm f 1:2.8 DN MFT objective. All images where taken using auto-focus and auto-exposure, and auto-ISO. In some cases exposure was adjusted within +1 and -1 EV using the histogram in camera. The images were white-balanced in post using the same region.

The SWB3 stack transmits a lot in the violet and some blue and even green light and produces a surprising false colour. The ZWB1 and ZWB2 stacks transmit not as short wavelengths as the Baader U-filter, but seem to have little NIR contamination. The question remains on how different the white-balanced images taken with a full-spectrum converted mirrorless camera look when using the different filter stacks. The first example is a view from an open balcony.

Baader U-filter

Baader U-filter

Tangsinuo SWB1 + TSN575 stack

Tangsinuo SWB1 + TSN575 stack

Tangsinuo SWB2 + TSN575 stack

Tangsinuo SWB2 + TSN575 stack

Tangsinuo SWB3 + TSN575 stack

Tangsinuo SWB3 + TSN575 stack

The second example is of plants inside a balcony illuminated by the sun through a UV-absorbing glass installed as “railing”. In the shade to the right of the plants, diffuse sunlight richer in UV predominates. The gap between the railing and the concrete edge gives an open view of the ground below, also illuminated by unfiltered sunlight.

Baader U-filter

Baader U-filter

Tangsinuo SWB1 + TSN575 stack

Tangsinuo SWB1 + TSN575 stack

Tangsinuo SWB2 + TSN575 stack

Tangsinuo SWB2 + TSN575 stack

Tangsinuo SWB3 + TSN575 stack

Tangsinuo SWB3 + TSN575 stack

Tangsinuo QB21 AR-coated filter as NIR blocker

Transmittance

Warning

The spectra are for the exact same filters used to take the photographs shown in later sections. Not all filters of a given type have exactly the same transmittance, there is variation between individual glass melts . So, other individual filters of the same type obtained from the same supplier may be different due to this variation.

The QB21 AR-coated filter is sold to be used to restore normal colour response to full-spectrum converted cameras by blocking NIR. It transmits UV-A better than the TSN575 filter described above, but it is less effective at blocking NIR radiation.

As above, transmittance spectra for the filter stacks are presented first.

Code
autoplot(filter_mspct(
  list("Tangsinuo ZWB1 + QB21 AR" = filters.mspct$Tangsinuo_ZWB1_2.1mm_52mm * 
         filters.mspct$Tangsinuo_QB21AR_2.0mm_52mm,
       "Baader U-filter" = filters.mspct$Baader_U_filter_1.0mm_48mm)), 
  annotations = c("-", "peaks"), 
         w.band = c(UV_bands("CIE"), IR_bands("CIE"))) +
  labs(linetype = "")

autoplot(filter_mspct(
  list("Tangsinuo ZWB2 + QB21 AR" = filters.mspct$Tangsinuo_ZWB2_2.0mm_52mm * 
         filters.mspct$Tangsinuo_QB21AR_2.0mm_52mm,
       "Baader U-filter" = filters.mspct$Baader_U_filter_1.0mm_48mm)), 
  annotations = c("-", "peaks"), 
         w.band = c(UV_bands("CIE"), IR_bands("CIE"))) +
  labs(linetype = "")

autoplot(filter_mspct(
  list("Tangsinuo ZWB3 + QB21 AR" = filters.mspct$Tangsinuo_ZWB3_2.2mm_52mm * 
         filters.mspct$Tangsinuo_QB21AR_2.0mm_52mm,
       "Baader U-filter" = filters.mspct$Baader_U_filter_1.0mm_48mm)), 
  annotations = c("-", "peaks"), 
         w.band = c(UV_bands("CIE"), IR_bands("CIE"))) +
  labs(linetype = "")
Figure 4: Total transmittance spectra for stacks pairs of filters at thickness of 2 mm computed by convolution of separately measured spectra. Filter QB21 AR coated from Tangsinuo used as IR blocker. Baader U-filter shown as reference.
Figure 5: Total transmittance spectra for stacks pairs of filters at thickness of 2 mm computed by convolution of separately measured spectra. Filter QB21 AR coated from Tangsinuo used as IR blocker. Baader U-filter shown as reference.
Figure 6: Total transmittance spectra for stacks pairs of filters at thickness of 2 mm computed by convolution of separately measured spectra. Filter QB21 AR coated from Tangsinuo used as IR blocker. Baader U-filter shown as reference.

Filtered sunlight

Followed by simulated irradiance spectra obtained by convolution of the transmittance of the filters stacks computed as above by the same solar irradiance spectrum as used for the examples with the TSN575 filter.

Code
autoplot(convolve_each(filter_mspct(
  list("Tangsinuo ZWB1 + QB21AR" = filters.mspct$Tangsinuo_ZWB1_2.1mm_52mm * 
         filters.mspct$Tangsinuo_QB21AR_2.0mm_52mm,
       "Baader U-filter" = filters.mspct$Baader_U_filter_1.0mm_48mm)),
  sun.spct), 
  annotations = c("-", "peaks"), 
         w.band = c(UV_bands("CIE"), IR_bands("CIE"))) +
  labs(linetype = "")

autoplot(convolve_each(filter_mspct(
  list("Tangsinuo ZWB2 + QB21AR" = filters.mspct$Tangsinuo_ZWB2_2.0mm_52mm * 
         filters.mspct$Tangsinuo_QB21AR_2.0mm_52mm,
       "Baader U-filter" = filters.mspct$Baader_U_filter_1.0mm_48mm)),
  sun.spct), 
  annotations = c("-", "peaks"), 
         w.band = c(UV_bands("CIE"), IR_bands("CIE"))) +
  labs(linetype = "")

autoplot(convolve_each(filter_mspct(
  list("Tangsinuo ZWB3 + QB21AR" = filters.mspct$Tangsinuo_ZWB3_2.2mm_52mm * 
         filters.mspct$Tangsinuo_QB21AR_2.0mm_52mm,
       "Baader U-filter" = filters.mspct$Baader_U_filter_1.0mm_48mm)),
  sun.spct), 
  annotations = c("-", "peaks"), 
         w.band = c(UV_bands("CIE"), IR_bands("CIE"))) +
  labs(linetype = "")
(a) Tangsinuo SWB1 + QB21AR stack
(b) Tangsinuo SWB2 + QB21AR stack
(c) Tangsinuo SWB3 + QB21AR stack
Figure 7: Total transmittance spectra for stacks pairs of filters at thickness of 2 mm computed by convolution of separately measured spectra. Filter QB21AR from Tangsinuo used as IR blocker. Baader U-filter shown as reference.

Images

Warning

Different cameras may produce different colours with the same filters and subject matter. I used a full-spectrum-converted Olympus E-M1 (first version) and a Sigma 30 mm f 1:2.8 DN MFT objective. All images where taken using auto-focus and auto-exposure, and auto-ISO. The images were white-balanced in post using the same region.

The images taken using the QB21 AR-coated filter stacks are more “colourful”. In the case of ZWB1 and ZWB2 filters is difficult to know how much of the difference is due to leakage of NIR and how much due to the enhanced transmission of UV-A1 and especially UV-A2 radiation. In the case of the ZWB3 filter, leakage of visible and NIR radiation is clearly behind the colours we see.

Baader U-filter

Baader U-filter

Tangsinuo SWB1 + QB21AR stack

Tangsinuo SWB1 + QB21AR stack

Tangsinuo SWB2 + QB21AR stack

Tangsinuo SWB2 + QB21AR stack

Tangsinuo SWB3 + QB21AR stack

Tangsinuo SWB3 + QB21AR stack

The second example is of plants inside a balcony illuminated by the sun through a UV-absorbing glass installed as “railing”.

Baader U-filter

Baader U-filter

Tangsinuo SWB1 + QB21AR stack

Tangsinuo SWB1 + QB21AR stack

Tangsinuo SWB2 + QB21AR stack

Tangsinuo SWB2 + QB21AR stack

Tangsinuo SWB3 + QB21AR stack

Tangsinuo SWB3 + QB21AR stack

Test with a modified flash

The photographs above suggested that using the QB21 AR filter results in stacks that may leak some red light or NIR radiation. The leak is so small that it is difficult to see in the plotted spectra, but the read leak can be seen in Table 2.

I have only one UV-pass filter large enough to be used on the round flash head of my AD200 flash, a ZWB1 (Figure 8).

Code
autoplot(filter_mspct(
  list("Tangsinuo ZWB1 72mm" = filters.mspct$Tangsinuo_ZWB1_1.6mm_67mm,
       "Tangsinuo TSN575 52mm" = filters.mspct$Tangsinuo_TSN575_2.0mm_52mm,
       "Tangsinuo QB21 AR 52mm" = filters.mspct$Tangsinuo_QB21AR_2.0mm_52mm)), 
  annotations = c("+", "wls"), 
         w.band = c(UV_bands("CIE"), IR_bands("CIE"))) +
  labs(linetype = "")
Figure 8: Total transmittance spectra for three filters. Filters QB21 AR and TSN575 used as IR blockers on the camera lens compared to the ZWB1 filter used as UV-pass on the flash. Baader U-filter shown as reference.

I took a series of photographs using the same camera as for the photographs above and a Godox AD200 flash with a modified H200R. The head if modified by removing the thick glass diffuser that blocks UV radiation, and installing in its place a step up ring with a M72 (72mm) thread for lens filters. This allows me to filter the radiation output of the flash in parallel with filters on the lens. Under this set-up the stacks with the TSN575 filter gave images comparable to those using the Baader U-Filter or the UVROptics StraightEdgeU filter, with only minor differences in the false colouration. The stacks with the QB21 AR filter gave yellow images, and weak UV patterns in flowers. Furthermore the yellowish colour of leaves suggests that there is a substantial NIR leak in these stacks. The QB21 AR does an excellent job for its intended use of restoring the normal response of the full-spectrum converted camera when the flash output is filter concurrently with a UVIR cut filter.

These photographs are in an album at Flicker.

Summary tables

Code
all_filter_stacks.mspct <-  
  filter_mspct(
    list("Tangsinuo ZWB1 + TSN575" = filters.mspct$Tangsinuo_ZWB1_2.1mm_52mm * 
           filters.mspct$Tangsinuo_TSN575_2.0mm_52mm,
         "Tangsinuo ZWB2 + TSN575" = filters.mspct$Tangsinuo_ZWB2_2.0mm_52mm * 
           filters.mspct$Tangsinuo_TSN575_2.0mm_52mm,
         "Tangsinuo ZWB3 + TSN575" = filters.mspct$Tangsinuo_ZWB3_2.2mm_52mm * 
           filters.mspct$Tangsinuo_TSN575_2.0mm_52mm,
         "Tangsinuo ZWB1 + QB21AR" = filters.mspct$Tangsinuo_ZWB1_2.1mm_52mm * 
        filters.mspct$Tangsinuo_QB21AR_2.0mm_52mm,
         "Tangsinuo ZWB2 + QB21AR" = filters.mspct$Tangsinuo_ZWB2_2.0mm_52mm * 
         filters.mspct$Tangsinuo_QB21AR_2.0mm_52mm,
         "Tangsinuo ZWB3 + QB21AR" = filters.mspct$Tangsinuo_ZWB3_2.2mm_52mm * 
        filters.mspct$Tangsinuo_QB21AR_2.0mm_52mm,
         "Baader U-filter" = filters.mspct$Baader_U_filter_1.0mm_48mm)
    )

irradiance.mspct <- 
  convolve_each(all_filter_stacks.mspct, sun.spct)
irradiance.mspct[["sun"]] <- sun.spct

Optical density (OD) of the stacks in different bands of the spectrum in shown in Table 1. Given the performance of the spectrophotometer used, spectral O.D. values measured of more than 3 or 4 are likely to be unreliable. In waveband averages, as shown in the table, some of the noise is expected to cancel out but not stray light. Furthermore, as the stacks have been simulated by convolution of the transmittance of two filters, at wavelengths were both filters have low transmittance the noise is dampened. So all values higher than 4 or 5 should be considered equivalent to “high OD”, and the comparison between the Baader filter and stacks done keeping in mind the limitations of the approach. Table 2 shows the energy irradiances compute by convolution of one sunlight spectrum with the transmittance of the stacks.

Code
stacks_OD_VIS.tb <- 
  absorbance(all_filter_stacks.mspct, 
             w.band = c(UV_bands("CIE"), VIS_bands(), IR_bands()), idx = "Filter stack")
names(stacks_OD_VIS.tb) <- 
  gsub("A(wl)_", "", names(stacks_OD_VIS.tb), fixed = TRUE)
names(stacks_OD_VIS.tb) <- 
  gsub(".ISO|.CIE", "", names(stacks_OD_VIS.tb), fixed = FALSE)
knitr::kable(stacks_OD_VIS.tb, digits = 1)
Table 1: Optical density of filter stacks compared to the Baader U-Filter. Ultraviolet, visible and NIR bands.
Filter stack ]UVC UVB UVA2 UVA1 Purple Blue Green Yellow Orange Red NIR[
Tangsinuo ZWB1 + TSN575 6.6 4.0 3.0 1.0 2.3 3.2 3.9 4.4 4.7 5.5 7.5
Tangsinuo ZWB2 + TSN575 7.9 5.0 3.1 0.7 2.0 3.6 4.0 4.4 4.7 5.6 5.6
Tangsinuo ZWB3 + TSN575 5.1 3.9 2.9 0.5 0.9 1.9 3.1 4.0 4.3 4.3 4.3
Tangsinuo ZWB1 + QB21AR 6.5 3.1 0.7 0.8 2.2 3.2 3.8 4.1 4.2 3.8 7.0
Tangsinuo ZWB2 + QB21AR 7.8 4.1 0.8 0.4 2.0 3.6 3.9 4.1 4.2 3.9 5.1
Tangsinuo ZWB3 + QB21AR 5.1 3.0 0.6 0.2 0.9 1.9 3.0 3.7 3.8 2.5 3.8
Baader U-filter 4.0 3.3 0.7 0.4 2.1 3.7 3.9 4.0 4.0 4.0 3.9
Code
stacks_irrad.tb <- 
  e_irrad(irradiance.mspct, w.band = c(UV_bands("CIE"), VIS_bands(), IR_bands()), idx = "Filter stack")
names(stacks_irrad.tb) <- 
  gsub("E_", "", names(stacks_irrad.tb), fixed = TRUE)
names(stacks_irrad.tb) <- 
  gsub(".ISO|.CIE", "", names(stacks_irrad.tb), fixed = FALSE)
knitr::kable(stacks_irrad.tb, digits = 3)
Table 2: Estimated irradiance (\(W m^{-2}\)) based on the solar spectrum measured at Helsinki. Some of the small irradiance values are doubtful due to the uncertainties in the OD measurements, explained above, and the use of these OD values as the basis for the computations.
Filter stack UVB UVA2 UVA1 Purple Blue Green Yellow Orange Red NIR[
Tangsinuo ZWB1 + TSN575 0.000 0.032 4.090 3.037 0.023 0.008 0.001 0.000 0.000 0.000
Tangsinuo ZWB2 + TSN575 0.000 0.028 6.143 5.137 0.010 0.005 0.001 0.000 0.001 0.000
Tangsinuo ZWB3 + TSN575 0.000 0.035 9.230 10.002 0.448 0.062 0.001 0.001 0.005 0.000
Tangsinuo ZWB1 + QB21AR 0.015 1.640 7.242 3.928 0.025 0.009 0.001 0.001 0.044 0.000
Tangsinuo ZWB2 + QB21AR 0.007 1.340 9.564 6.366 0.011 0.006 0.001 0.001 0.036 0.001
Tangsinuo ZWB3 + QB21AR 0.017 1.798 13.481 11.848 0.493 0.071 0.003 0.002 0.668 0.003
Baader U-filter 0.001 3.249 11.471 6.431 0.008 0.006 0.001 0.001 0.008 0.001
sun 0.645 5.982 22.002 47.755 37.552 49.269 13.680 12.004 79.382 8.694

We can see that because UV-B is a small percentage of sunlight, the irradiance available is much less than that of UV-A irrespective of the transmittance of these filter stacks. Whether leakage of light in the range 400 nm to 430 nm is an advantage or a disadvantage depends on the case and purpose. Leakage in the red and NIR is in most cases problematic.

Conclusions

  1. As NIR blocker the TSN575 filter works better than the ‘QB21 AR-coated’ filter.

  2. For UV-A1 imaging in sunlight the stack ‘ZWB2 + TSN575’ is very good.

  3. For ‘UV-A1 + UV-A2’ the stack ‘ZWB1 + QB21 AR-coated’ can be preferable if the camera and lens combination “see” wavelengths shorter than 340 nm.

  4. With the different filters one gets different false colours. None are real and if the interest is artistic, then these different combinations of filters provide different starting points for manipulation during image editing.

Tip

All the spectral transmittance data shown above in figures have been measured by the author with the same Agilent/Hewlett-Packard diode array spectrophotometer (HP 8453). The specifications from Schott are from 2015. The data are available in R package ‘photobiologyFilters’. The figures were produced in R with R packages ‘ggspectra’, which is an extension to package ‘ggplot2’. All these packages are open-source and available through CRAN. See also the R for photobiology web site.

The code is included in this page, but “folded”. To display the code used to produce the figures and compute reflectance from the refractive index click on the word Code or the triangle before it.