Løsningsforslag i Matlab til ukeoppgave om gråtonemapping

Table of contents

Oppgave 2

Oppgave 2

img = imread('mona.png');
if ndims(img) > 2
    img = rgb2gray(img);
end

[p, bins] = oppgave2_hist(img);

% For aa sammenligne med imhist fra Mathworks:
[h1, bins1] = imhist(img);
p1 = h1 ./ numel(img);

figure()

subplot(1,2,1)
bar(bins1, p1)
title('imhist (normalisert)')

subplot(1,2,2)
bar(bins, p1)
title('oppgave2\_hist')

% Sjekker om oppgave2_hist og imhist gjoer det samme:
thr = 1e-10;
test = all(abs(p1 - p) < thr);
if test == false
    error('oppgave2\_hist og imhist gjoer ikke det samme')
end

Programmet kan lastes ned her (høyreklikk og trykk "lagre lenke som"/"save link as")

function [p, intensities] = oppgave2_hist(img)
    % Anta at bildet har heltallige verdier mellom 0 og 255 
    G = 256;
    
    intensities = 0:(G-1);
    
    p = zeros(G, 1);
    for i = 1:G
        p(i) = sum(sum(img == intensities(i))); 
    end
    
    p = p ./ numel(img);

end

Programmet kan lastes ned her (høyreklikk og trykk "lagre lenke som"/"save link as")

Programmet viser et forslag til hvordan en kan programmere en histogram funksjon i Matlab. Det gjøres også en kort sammenligning om det funksjonen returnerer, faktisk stemmer med imhist. Å teste sine egne metoder er en fin måte å utelukke bugs som kan komme senere i programmet ditt, og en fin mulighet til å bli kjent med hvilke funksjoner som allerede finnes!

Made with DocOnce