File: BasicToneMapCalFormat.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 (22 lines) | stat: -rw-r--r-- 805 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function outputXYZCalFormat = BasicToneMapCalFormat(inputXYZCalFormat, maxLum)
% outputXYZCalFormat = BasicToneMapCalFormat(inputXYZCalFormat, maxLum)
%
% Simple tone mapping.  Leaves any pixel with luminance below maxLum alone.
% For pixels whose luminance exceeds maxLum, scale XYZ down multiplicatively so
% that luminance is maxLum.
%
% 10/1/09 bjh, dhb     Created it.
% 10/4/09 dhb          Debug and make it work right.

% Find offending pixels
index = find(inputXYZCalFormat(2,:) > maxLum);

% If any pixel exceeds maxLum, scale it by 1/Y.  Uses
% MATLAB's indexing trick of repeating an index to replicate 
% values.
outputXYZCalFormat = inputXYZCalFormat;
if (~isempty(index))
   outputXYZCalFormat(:, index) = maxLum*(inputXYZCalFormat(:, index)./inputXYZCalFormat([2 2 2]', index)); 
end

end