JunMultiLED
Introduction
Multispectral imaging has enabled identification and analysis of targets across sectors, from agriculture to defense. This project focuses on the practical engineering-related aspects of creating an illumination system for future use in a portable multispectral imager. Specifically, this work describes efforts to characterize and evaluate the non-uniformity of high-power LEDs for this illumination system, as well as efforts to mitigate the associated challenges from running such a system.
Background
Photographers use LED-based ring lights to control illumination of a target. These ring lights take the form of an annulus with an inner radius sufficiently large enough to accommodate a camera lens. One example of such a product is shown below:

The illumination system for the multispectral imager will have a similar form factor to the above figure in order to enhance the uniformity of the output light.
Experimental Setup
Power LED:

iPixel LED’s 3W “warm white” (3000-3300nm) power LEDs packaged on an aluminum-backed PCB base were chosen for their availability and ease of use. According to the provided datasheet, each LED had an expected forward current of 750 mA with an absolute maximum of peak pulsed forward current of 3A. In addition, the worst-case forward voltage drop across the LED is 3.8V while the minimum voltage drop is 3.2V.

With a 5V power supply, the circuit’s ballast resistor needed to accommodate a 1.2V drop with 750mA of current. Using standard values and +/- 5% tolerances, a 1ohm power resistor was selected. The circuit schematic follows below.

Under these test conditions, resultant current from the test circuit was 1.1-1.3A with worst-case fluctuation of 20 mA. Furthermore, significant heat was emitted to the point that some adhesive used to secure the LED had begun to warp. Although these findings were expected, both the current fluctuation and emitted heat had to be controlled before further work could be done.
Mounting Frame: Duron hardboard was originally used as the mounting material for its ease to machine and versatility. Being composed of treated wood fibers however, Duron offered little to no dissipation of heat. To accommodate the mechanical requirement of an annulus-shaped frame while also improving its thermal dissipation, the frame’s material was changed to plate metal. To accommodate the range of radial distances needed for LED mounting, the frame was fashioned by securing two Lazy Susans together. For stability, four metal angle braces were added to ensure the frame would remain standing. A picture of the mechanical frame and the associated camera (described later) are shown below:

LED Driver: A DC-DC step-down converter, alternatively known as a buck converter, was used to limit and control the current supplied to the LED. Although many options were available, the AL8805 was ultimately selected. Its 6V to 36V input was within the 12V range of the lab’s power supply, eliminating the need to purchase additional test equipment. The control voltages for the IC were 2.6V to 5.5V, meaning most micro controllers could directly interface with the IC. Most importantly though, the AL8805 could tolerate up to 1A of continued switch current but could be set to a lower output current based on the feedback resistors interfaced to it. The IC was set to output approximately 350mA of current, lowering the total dissipated heat. The IC and supplementary passives were available as a PCB from Sparkfun; the board’s schematic and picture follow below:


Camera:
The Point Grey Flea3 USB camera was used to capture images. Two separate configurations were used:
Configuration 1: 0.102ms shutter exposure interval, 0.000dB gain, 60.0000 fps
Configuration 2:
0.051ms shutter exposure interval, 0.000dB gain, 60.0000 fps
A second configuration was necessary due to four of the experimental conditions causing saturation of the image. To correct for this, the shutter exposure interval was reduced to 0.051ms. Although this change means there is no uniform set of camera settings, we are not aware of any work demonstrating that shutter exposure interval causes changes in uniformity of output light.
Methods
As discussed in the background section, there are three variables whose effect on uniformity are being tested: Number of LEDs: three, four, or five LEDs were placed at regular angular intervals on the annular frame; these angles were 120 degrees, 90 degrees, and 72 degrees respectively. Radial distance of mounted LEDs: the tested radial distances were 6cm, 9cm, and 12cm from the center of the annulus respectively. Target distance from lens: a piece of white posterboard was placed in front of the camera at distance of 5cm, 10cm, and 15cm away from the camera. All pictures were taken under scotopic conditions.
In total, all 27 possible combinations were evaluated.
| Run # | # LEDs | Radial distance(cm) | Target distance(cm) |
| Run 1 | 3 LEDs | 6 cm radius | 5 cm target |
| Run 2 | 4 LEDs | 6 cm radius | 5 cm target |
| Run 3 | 4 LEDs | 9 cm radius | 5 cm target |
| Run 4 | 4 LEDs | 9 cm radius | 10 cm target |
| Run 5 | 4 LEDs | 12 cm radius | 5 cm target |
| Run 6 | 4 LEDs | 12 cm radius | 10 cm target |
| Run 7 | 4 LEDs | 6 cm radius | 10 cm target |
| Run 8 | 3 LEDs | 6 cm radius | 10 cm target |
| Run 9 | 3 LEDs | 6 cm radius | 15 cm target |
| Run 10 | 3 LEDs | 9 cm radius | 5 cm target |
| Run 11 | 3 LEDs | 9 cm radius | 10 cm target |
| Run 12 | 3 LEDs | 9 cm radius | 15 cm target |
| Run 13 | 3 LEDs | 12 cm radius | 5 cm target |
| Run 14 | 3 LEDs | 12 cm radius | 10 cm target |
| Run 15 | 3 LEDs | 12 cm radius | 15 cm target |
| Run 16 | 4 LEDs | 6 cm radius | 15 cm target |
| Run 17 | 4 LEDs | 9 cm radius | 15 cm target |
| Run 18 | 4 LEDs | 12 cm radius | 15 cm target |
| Run 19 | 5 LEDs | 6 cm radius | 5 cm target |
| Run 20 | 5 LEDs | 6 cm radius | 10 cm target |
| Run 21 | 5 LEDs | 6 cm radius | 15 cm target |
| Run 22 | 5 LEDs | 9 cm radius | 5 cm target |
| Run 23 | 5 LEDs | 9 cm radius | 10 cm target |
| Run 24 | 5 LEDs | 9 cm radius | 15 cm target |
| Run 25 | 5 LEDs | 12 cm radius | 5 cm target |
| Run 26 | 5 LEDS | 12 cm radius | 10 cm target |
| Run 27 | 5 LEDs | 12 cm radius | 15 cm target |
Results
The tools used to process the resultant images were the Python wrapper for OpenCV, Numpy, Scipy, and Matplotlib (including 3D extensions). All data were RGB images with dimensions of 1280 x 1024. The first method applied to analyze non-uniformity of the image was to plot the BGR value of the image along a horizontal line from the point (0, 512) to (1279, 512).

A gradient was then applied to the resultant BGR signal in order to identify the set of conditions with least change in BGR value.

The aforementioned approach does not account for non-uniformity across the entire image. One standard method to account for the non-uniformity of an illuminated area is described in Section 8.2 of the Information Display Measurements Standard. The algorithm is described below:
1) Load the image in monochrome format
2) Calculate the RMS intensity of the entire image
3) Find the global maximum and global minimum intensity of the image
4) Calculate the maximum deviation from the mean: report the larger of difference between maximum and RMS or difference between minimum and RMS
A table of the calculated maximum deviation from the mean per run has been provided below.
| Run # | # LEDs | Radial distance(cm) | Target distance(cm) | Maximum deviation from mean |
| Run 1 | 3 LEDs | 6 cm radius | 5 cm target | 209.7 |
| Run 2 | 4 LEDs | 6 cm radius | 5 cm target | 139.6 |
| Run 3 | 4 LEDs | 9 cm radius | 5 cm target | 152.3 |
| Run 4 | 4 LEDs | 9 cm radius | 10 cm target | 104.0 |
| Run 5 | 4 LEDs | 12 cm radius | 5 cm target | 142.6 |
| Run 6 | 4 LEDs | 12 cm radius | 10 cm target | 116.8 |
| Run 7 | 4 LEDs | 6 cm radius | 10 cm target | 152.5 |
| Run 8 | 3 LEDs | 6 cm radius | 10 cm target | 190.5 |
| Run 9 | 3 LEDs | 6 cm radius | 15 cm target | 55.22 |
| Run 10 | 3 LEDs | 9 cm radius | 5 cm target | 170.1 |
| Run 11 | 3 LEDs | 9 cm radius | 10 cm target | 84.26 |
| Run 12 | 3 LEDs | 9 cm radius | 15 cm target | 154.5 |
| Run 13 | 3 LEDs | 12 cm radius | 5 cm target | 129.0 |
| Run 14 | 3 LEDs | 12 cm radius | 10 cm target | 153.1 |
| Run 15 | 3 LEDs | 12 cm radius | 15 cm target | 118.2 |
| Run 16 | 4 LEDs | 6 cm radius | 15 cm target | 134.9 |
| Run 17 | 4 LEDs | 9 cm radius | 15 cm target | 118.2 |
| Run 18 | 4 LEDs | 12 cm radius | 15 cm target | 134.7 |
| Run 19 | 5 LEDs | 6 cm radius | 5 cm target | 165.9 |
| Run 20 | 5 LEDs | 6 cm radius | 10 cm target | 115.3 |
| Run 21 | 5 LEDs | 6 cm radius | 15 cm target | 217.9 |
| Run 22 | 5 LEDs | 9 cm radius | 5 cm target | 75.68 |
| Run 23 | 5 LEDs | 9 cm radius | 10 cm target | 78.09 |
| Run 24 | 5 LEDs | 9 cm radius | 15 cm target | 66.65 |
| Run 25 | 5 LEDs | 12 cm radius | 5 cm target | 65.53 |
| Run 26 | 5 LEDS | 12 cm radius | 10 cm target | 56.37 |
| Run 27 | 5 LEDs | 12 cm radius | 15 cm target | 137.2 |
The runs with maximum deviation from mean below a value of 100 are listed below and highlighted in gold: <br\> Run 9: 55.22 <br\> Run 26: 56.37 <br\> Run 25: 65.53 <br\> Run 24: 66.65 <br\> Run 22: 75.68 <br\> Run 23: 78.09 <br\> Run 11: 84.26 <br\>
In addition to calculating the maximum deviation from the mean for each image, the Python code renders each raw image as a 3D mesh grid with colormap.







Conclusions
Using the findings above, we can identify an optimal set of parameters for maximizing uniformity of output light.
Number of LEDs: Five out of the seven runs with the smallest maximum deviation from mean utilized an arrangement of five LEDs located at 72 degree angular intervals.
Radial distance: Four out of the seven runs with the smallest maximum deviation from mean had the LEDs mounted 9 cm from the center point of the lens.
Target distance: No one option of 5 cm, 10 cm, or 15 cm outperformed the others.
From this experiment, it appears that a configuration where five 3W LEDs are placed at 72 degree angular intervals and at a radial distance of 9 cm from the center of the lens shows consistently high uniformity across the range of distances that a point-of-contact imager would be used at.
Limitations and improvements:
This work needs to be repeated over multiple trials and many different power LED units in order to ensure the validity of the results. The findings found should not be generalized for other variants of power LEDs, as uniformity of output light is device-dependent. One major improvement would be to design and fabricate a PCB with LEDs mounted. To do so, a pattern of heat-sinking vias would be needed for a PCB with FR-4 substrate while a metal-core PCB would not require such an optimization.
The collection of 3D heat maps for the top-performing configurations shows a radially-shaped region at an acute angle near the center of each heat map corresponding to lower brightness. This pattern demonstrates the varying output of each LED and also begs the question of how much the output of each LED contributes to the non-uniformity of the entire image. One future experiment would be to turn on each LED individually and measure the non-uniformity of each one’s output with respect to the non-uniformity of the entire image.
Acknowledgments
I would like to thank Dr. Joyce Farrell and Dr. Henryk Blasinski for their mentorship and guidance throughout the course of the project. I would also like to thank Professor Brian Wandell and Trisha Lian for their teaching and insights.
Appendix
The project was focused on designing a lighting system capable of uniform output. In the process however, it was found that a simple smoothing filter would be able to correct for non-uniform input. A Savitsky-Golay filter with a window length of 51 elements and 3rd-order polynomial smoothed the raw BGR value to the point where the peak-to-peak value of the gradient of the BGR value was significantly reduced.

The complete set of images as well as all their resulting plots are available as zip files according to the listing below.
| File Name | Description | File Download |
| UniformityData.zip | Camera RGB images saved as JPG files | File:UniformityData.zip |
| raw_out.zip | Plot of BGR value along horizontal line | File:Raw out.zip |
| bgr_gradient.zip | Plot of gradient of BGR value along horizontal line | File:Bgr gradient.zip |
| bgr_diff_fft.zip | Plot of RFFT applied to gradient of BGR value | File:Bgr diff fft.zip |
| bgr_savgol.zip | Savistky-Golay filter applied to BGR value | File:Bgr savgol.zip |
| savgol_gradients.zip | Gradient applied to output of Savitsky-Golay filter | File:Savgol gradient.zip |
| meshplots.zip | 3D Mesh plot of camera images | File:Meshplots.zip |
The Python code used to process the data and generate plots is available upon request.
References
[1]https://www.amazon.com/dp/B00AY0J4OY/ref=cm_sw_r_pi_dp_B1Lqwb0FDFP5A
[2]https://www.sparkfun.com/products/13104
[3]https://www.sparkfun.com/products/13716