File: BasicToneMapCalFormat.m

package info (click to toggle)
psychtoolbox-3 3.0.18.12.dfsg1-1.1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 83,576 kB
  • sloc: ansic: 173,181; cpp: 20,885; objc: 5,148; sh: 2,752; python: 1,366; php: 384; makefile: 193; java: 113
file content (22 lines) | stat: -rwxr-xr-x 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