
%%
%
% Diplomova prace 
% Martin Krupicka
% FEL CVUT
% leden 2017
%
% Skript provadejici mapovani tonu (tone mapping) HDR verze snimku na LDR verzi. 
% LDR verzi nasledne uklada ve formatu PPM, pripadne i v JPEG.
% 
% Jak teoreticka, tak prakticka cast teto prace 
% vychazi z materialu vypracovanych v ramci magisterskeho
% predmetu Projekt individualni (A2M37IND) [1].
%
%
%%

close all;
clear all;
clc;

%%

% nastaveni rozsahu poradovych cisel obrazku (index cisla v nazvu)
% Pokud nastavime stejne cislo v obou promennych, zpracuje cyklus jen jeden
% soubor. Jinak lze vice souboru najednou, pokud maji poradova cisla
% presne za sebou.
pocatecni_soubor = 1;
konecny_souboru = 2;

% JPEG kvalita pro mozne ulozeni mapovaneho LDR snimku jako .jpg
q = 75;

% expozicni rozdil mezi LDR snimky v puvodni LDR serii
deltafstops = 5;

% uzity TMO
TMO = 'KimKautz';

% moznost pracovat s soubory najednou, pokud maji poradova cisla za sebou
for s=pocatecni_soubor:konecny_souboru
   
    % nacteni vstupniho souboru s poradovym cislem
    img = hdrimread(['in' int2str(s) '_slozeny_uniform_REFERENCE_bezeztratova_deltafstops_' num2str(deltafstops) '.pfm']);
    
    % vychazim z PFM, v MATLAB nutne prevratit vzhuru nohama
    img = flipud(img);
    
    % tone mapping a ulozeni LDR verze
    img_TMO_LDR = KimKautzConsistentTMO(img); % aplikace KimKautzConsistentTMO 
    img_TMO_LDR = GammaTMO(img_TMO_LDR, 2.2, 0, 0); % gamma korekce je nutna, jak je napsano v Readme v HDR Toolboxu - u operatoru, kde by nutna nebyla, je to uvedeno jako upozorneni pri jejich uziti
    hdrimwrite(img_TMO_LDR, ['in' int2str(s) '_LDR_slozeny_uniform_REFERENCE_bezeztratova_deltafstops_' num2str(deltafstops) '_' TMO '.ppm']); % ulozeni mapovaneho LDR obrazku jako PPM
    
    imwrite(img_TMO_LDR, ['in' int2str(s) '_LDR_slozeny_uniform_REFERENCE_bezeztratova_q_' int2str(q) '_deltafstops_' num2str(deltafstops) '_' TMO '.jpg'], 'Quality', q); % ulozeni mapovaneho LDR obrazku jako JPEG
    
end



