I'd like to estimate the colour-temperature of sunlight (as applied in photography) based on the position of the sun in the sky for a mobile phone app I'm working on (app link from a more appropriate question -Are there any mobile applications that calculate sunrise/sunset based on location?).

I'm already able to determine the position of the sun in the sky based on the date, time, latitude and longitude.

From this position (sun elevation from the horizon) I'd like to estimate the colour-temperature assuming clear skys. I understand there are factors such as how overcast the sky is that I won't be able to take into account. I'll assume an unobstructed view of the horizon.

E.g. Something like the following.

Light Source                    Colour Temperature in K
============                    =======================
Sunrise and Sunset              2,000 to 3,000
Sunlight at 10 Degree elevation 3,500
Sunlight at 20 Degree elevation 4,000
Sunlight at 30 Degree elevation 4,500
Noon Sun and Clear Sky          4,900 to 5,800
Start of Blue Hour              ?

Is there a formula I can use that directly relates the estimated colour temperature to the suns position in the sky?

Note, this question was originally asked on the photography stack exchange but was migrated here as more of a physics based problem.

My current understanding of the problem is that I'll need to apply Rayleigh scattering and possibly Mie scattering.

The following image from Cambridge in colour shows an (exaggerated?) colour temperature scale with dawn (1), sunrise (2), midday (3), sunset (4) and dusk (5) marked. Exaggerated sky colour temperature

  • 2
    $\begingroup$ In addition to the angle of the sun in the sky and the resulting thickness of the atmosphere it passes through, cloud cover, the amount of water vapor in the air, the amount and types of particulate matter suspended in the air, as well as the type and color of ground cover reflecting the sunlight all play a significant role in the color temperature of sunlight in a particular shooting environment. Heavy cloud cover in particular will affect it far more than the angle in the sky. $\endgroup$ – Michael Clark May 29 '13 at 23:10
  • 1
    $\begingroup$ @MichaelClark So would there be any worth in estimating the colour temp if the other factors are far more significant? People have been asking me to add the blue hour and golden hour times to the app. I thought it would be interesting to estimate the colour temp throughout the day based on the location and date. $\endgroup$ – Daniel Ballinger May 29 '13 at 23:33
  • 1
    $\begingroup$ A great contributor to atmosphere thickness and color-temperature is altitude. Without altitude data any such estimate would be useless. $\endgroup$ – Itai May 30 '13 at 1:16
  • $\begingroup$ @Itai. Good to know. I can get a reasonable estimate of the observers altitude with the GPS data, or look it up using the latitude and longitude which tend to be much more accurate. The difficult part is how the latitude, longitude, altitude and sun position in the sky might be used to estimate the color-temperature. I understand that whatever I end up with will be crude at best as it won't take into account weather conditions or local terrain/surfaces. $\endgroup$ – Daniel Ballinger May 30 '13 at 1:33
  • 1
    $\begingroup$ What about taking photos with fixed camera parameters every 30min on a clear day? Using that dataset, you can look at a histogram of the colors for each image and fit a color temperature distribution to that image. From there you have an empirical relation for the color temp, and you can adjust for sunrise and sunset variations. $\endgroup$ – KF Gauss Feb 19 '18 at 5:43

The sun's color is directly related to the air mass its light travels through to reach the observer.

An article which relates the air mass to the observed spectrum of the sun is linked here. In particular, equation 17 provides the intensity seen by an observer as a function of wavelength, accounting for contributions from air molecules and aerosols. This equation applies to an observer at sea level, although the role of altitude is also discussed in the article.

At a given zenith angle, one can then calculate the radiation spectrum as a function of wavelength, for various levels of aerosols (figures 9, 10, and 11).

The resulting spectra are no longer Planckian, and you'll have to apply your favorite definition of color temperature to each one.

| cite | improve this answer | |
  • 3
    $\begingroup$ +1 would recommend you explicitly write the equations in the answer to keep it self-contained $\endgroup$ – KF Gauss Feb 20 '18 at 4:17
  • 1
    $\begingroup$ @kleingordon, I agree that adding the equations explicitly would complete this answer and then I can award the bounty $\endgroup$ – D. Betchkal Feb 21 '18 at 16:55
  • 1
    $\begingroup$ As mentioned above, equation 17 is $I(\lambda) \approx {I_0}(\lambda) exp \biggl ( - \bigl ( \frac{M_{Mol} K_{Mol}}{\lambda^4} + \frac{M_{Aer} K_{Aer}}{\lambda} + M_{Lay} K_{Lay} \lambda \bigr ) \biggr )$ $\endgroup$ – D. Betchkal Feb 23 '18 at 16:48
  • 1
    $\begingroup$ Where $K$ values are scattering coefficients and $M$ values are an optical air mass defined as a ratio of optical thicknesses of an oblique and vertical ray. The subscripts $Mol$, $Aer$, and $Lay$ "represent molecular atmosphere, trophospheric aerosols, and elevated aerosol layers respectively." $\endgroup$ – D. Betchkal Feb 23 '18 at 16:54
  • 1
    $\begingroup$ $I_0(\lambda)$ is a Planck radiator at 5800 K, given by: $$I_0(\lambda) \approx \frac{2 h c^2}{\lambda^5} (e^{\frac{h c}{k \lambda T}} - 1)^{-1}$$ where $h$ is Planck's constant, $k$ is Boltzmann's constant, and $c$ is the speed of light. $\endgroup$ – D. Betchkal Feb 23 '18 at 16:57

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.