File: LumToRadiance.m

package info (click to toggle)
psychtoolbox-3 3.0.19.14.dfsg1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 86,796 kB
  • sloc: ansic: 176,245; cpp: 20,103; objc: 5,393; sh: 2,753; python: 1,397; php: 384; makefile: 193; java: 113
file content (51 lines) | stat: -rw-r--r-- 1,387 bytes parent folder | download | duplicates (7)
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;