1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
function [radiance, radianceS] =...
LumToRadiance(relativeSpectrum, relativeSpectrumS, luminance, photopic)
% [radiance, radianceS] =...
% LumToRadiance(relativeSpectrum, relativeSpectrumS, luminance, [photopic])
%
% Convert luminance in photopic cd/m2 to radiance, given relative spectrum
% of the source.
%
% Variable photopic can take on values:
% 'Photopic' (Default)
% 'JuddVos'
% 'Scotopic'
%
% 7/29/03 dhb Wrote it.
% Default
if (nargin < 4 || isempty(photopic))
photopic = 'Photopic';
end
S = [380 1 401];
% Load appropriate V_lambda for phot/scot
switch (photopic)
case 'Photopic'
load T_xyz1931;
T_vLambda = SplineCmf(S_xyz1931,T_xyz1931(2,:),S);
clear T_xyz1931 S_xyz1931
magicFactor = 683;
case 'JuddVos'
load T_xyzJuddVos;
T_vLambda = SplineCmf(S_JuddVos,T_JuddVos(2,:),S);
clear T_JuddVos S_JuddVos
magicFactor = 683;
case 'Scotopic'
load T_rods;
T_vLambda = SplineCmf(S_rods,T_rods,S);
magicFactor = 1700;
end
% Spline to common wavelength representation for computations
relativeSpectrum = SplineSpd(relativeSpectrumS,relativeSpectrum,S);
% Solve for putting our spectrum into watts/m2-sr-wlinterval.
scaleFactor = luminance / ( magicFactor*T_vLambda*relativeSpectrum );
% Set returned wavelength sampling to match input.
radiance = SplineSpd(S,scaleFactor*relativeSpectrum,relativeSpectrumS);
radianceS = relativeSpectrumS;
|