Lumens vs Candelas vs Lux

Whether you’re growing plants or have an obsession with flashlights, you will encounter the terms candela, lux and lumens. These all refer to measuring light, but what’s the difference?

Radiant flux

Let’s start from the beginning. Light is composed of photons, which have a specific energy depending on the wavelength. The radiant flux is simply the amount of light energy being emitted per second. So the units for this is joules per second, also known as a watt.

Luminous flux and the lumen

However, radiant flux doesn’t take into account the sensitivity of the human eye to certain wavelengths. To account for this, the power of each wavelength being emitted is weighted with a luminosity function, which models the sensitivity of the human eye. The unit for wavelength-weighted power is called the lumen.

A lumen is the total power emitted by a light source, weighted by the sensitivity of the human eye to certain wavelengths.
A lumen is the total power emitted by a light source, weighted by the sensitivity of the human eye to certain wavelengths.

Example: The human eye is most sensitive to greenish-yellow light at 555 nm wavelength. So if we had a single green (555nm) LED and a single red (650nm) LED emitting 1 watt of radiant flux, the green LED would actually have a higher lumen value than the red LED.

Factoring in the sensitivity profile of the human eye has implications. This means luminous flux and the lumen are meant to measure light as perceived by humans, which makes it a unit more useful whenever humans are involved. This is great for light bulbs and flashlights, but that means it’s less than ideal for non-human applications, like grow lights for plants.

Luminous intensity and the candela

Luminous flux and the lumen take into account the wavelength(s) of light being emitted, but they don’t account for the direction. So the next step is measuring light in a certain direction. If we lived in 2 dimensions, this would be radians or degrees, but since we live in 3 dimensions, we use the unit for solid angles, which is a steradian (just like how there are 360 degrees or 2π radians in a circle, there are 4π steradians in a sphere). So luminous intensity measures how much light power (lumens) is concentrated into a solid angle. This unit is called the candela: lumens per steradian.

Example: A light source putting out 2 lumens is focused so all its light is in a 1 steradian beam. This luminous intensity of the light beam is 2 candelas. Now, the beam is focused into a tighter, 0.5 steradian beam. The light source isn’t putting out any more or less power, but the light was focused into a more intense beam, so the light beam is now 4 candelas.

A candela is a lumen per steradian (solid angle).
A candela is a lumen per steradian (solid angle).

A common candle has luminous intensity of roughly 1 candela. I found this confusing, because candles emit light in (almost) all directions, like a sphere. Since there are 4π steradians in a sphere, the total human-visible light output of the candle is roughly 4π lumens, or about 12.57 lumens.

You may have heard of candlepower – it’s an obsolete unit of luminous intensity equal to 0.981 candelas.

Then what’s lux?

We just went over how a candela is a lumen per solid angle. Lux is a similar unit that measures lumens per area. Instead of lumens per steradian, lux is lumens per square meter. When you’re measuring the amount of light hitting a surface, it’s called illuminance; if you’re measuring the amount of light coming from a surface, it’s called luminous emittance. Illuminance is sometimes called “brightness”, but that term can have multiple meanings.

Example: You have 2 identical flashlights that each emit 2 lumens in a 10° angle.  If you pointed one of the flashlights at a wall 1 meter away, and the other flashlight at a wall 10 meters away, the patch of wall illuminated by the first flashlight has a greater illuminance (higher lux) than the patch of wall illuminated by the second flashlight. That is, both flashlights have the same luminous flux and luminous intensities, but one patch of wall is “brighter” than the other one.

A lux is a lumen per square meter.
A lux is a lumen per square meter.

Lumens, candela and lux are great for human applications, but in the world of hydroponics and grow lights, they’re pretty useless. Red and blue wavelengths drive plant growth, and green light is pretty much wasted on plants. When you’re buying or building an LED grow light, the spec sheet should specify radiant flux in watts (or radiant intensity in watts per steradian). Lumens are meaningless in the context of grow lights unless you know the emission spectrum of the lights in your comparison.

    • Lumens and watts can be thought of the as the raw number of photons being pumped out by the light source, but lumens take into account the sensitivity of the human eye.
    • Candelas take direction (i.e. “tightness of the beam”) into account (lumens per steradian), and so measures the luminous intensity.
    • Lux takes area into account (lumens per square meter), and so measures the illuminance or “brightness” of an area.

Raspberry Pi time lapse plant cam

Recently, I decided I wanted to take time lapse photos of plants in my hydroponics rig as they grew. I looked around to see if a device existed which would do that job, since a couple of friends bought and set up security cameras for their houses over the winter holidays. Everything I found was overkill for my needs; what I basically needed was a laptop with a webcam to take photos every minute or so and stitch them together into a video. So, I bought a Raspberry Pi 3 from Amazon and hooked up my Microsoft LifeCam. Here’s how I set it up:

Raspberry Pi

The Model 3 B comes with wifi built in, so all you really need is a webcam and a power supply. It’s powered by a 5V 2A micro USB port, so you need something like a wall charger – PC USB ports don’t supply enough current.


It’s a Microsoft LifeCam 720p Cinema. I forgot where I got it, but I think I won it as a prize a few years ago. Make sure to check online if your webcam will work with Linux/Raspbian.

Out-of-the-box configuration

I downloaded the non-GUI version of Raspbian and imaged it to an SD card; after plugging in the keyboard, monitor, and power supply, the first thing I did was change the password of the default account by running passwd. The second order of business was getting the wifi connected by editing /etc/wpa_supplicant/wpa_supplicant.conf. While editing the wpa_supplicant.conf file, I noticed the keyboard mapping was set to Great Britain by default, so I ran sudo raspi-config to set the locale, time zone, keyboard layout, and enabled the SSH server so I wouldn’t need to keep my keyboard and monitor plugged in.


With localization configured and the wifi successfully connected, it was time to start downloading packages. I started with sudo apt-get update and sudo apt-get upgrade. I installed the webcam package with sudo apt-get install fswebcam, and the video encoding tools with sudo apt-get install libav-tools.

Putting it all together

I wrote a bash script which:

  1. Creates a directory for the day, if it doesn’t exist, and then changes into it
  2. Takes a snapshot and saves it in the format imgNNNN.jpg, starting with 0001
  3. Stitches toether a video of all the .jpgs in the current directory
  4. Uploads it to

The full script is here.

There are already resources online which describe how to use fswebcam; the first few snapshots were inconsistent because the webcam needed some time to settle on the lighting conditions, so I added the -S option:
# -S 5 skips the first 5 frames; allows the camera to get settled with
#   lighting conditions
fswebcam -S 5 img$n.jpg

Raspbian doesn’t have ffmpeg; it has avconv instead, which runs more or less the same:
avconv -r 25 -f image2 -i img%04d.jpg -c:v h264 -crf 1 -y plant-$DAY.mp4

Uploading to
rsync -avzhe ssh *.mp4
However, I didn’t want to enter my password for every rsync call, so I set up an SSH key on the Raspberry Pi by running ssh-keygen -t rsa, then copied ~/.ssh/ to ~/.ssh on I also had to authorize the key in my web host’s SSH settings.

Finally, I set the script to run every 15 minutes between the hours of 5am and 10pm by running crontab -e and then entering the following line:
*/15 5-22 * * * ./