| 12
 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;
 |