clear all   % Rensa alla variabler i arbetsminnet/workspace
figure(1)   % Öppna/aktivera figur 1
clf         % Rensa fönstret, om det ev. inte var tomt


% Matlabfunktionen imread används för att ladda in en bild till arbetsminnet.
% Digitala färgbilder representeras i Matlab som 3-dimensionella matriser,
% (rad x kolumn x kanal). Oftast är det 3 kanaler - Röd, Grön och Blå.
I = imread('peppers.png');


% Matlabfunktionen imshow används för att visa/rita bilder.
% Nu ritas först den uppladdade bilden.
figure(1); 
subplot(2,2,1)
imshow(I);
title('RGB-bild')


% Tag fram bildens dimensioner
rader    = size(I,1);
kolumner = size(I,2);


% Nu ska den 3-kanaliga färgbilden konverteras till en 1-kanals gråskalebild.
% Vid Konverteringen från färg till gråskala så kan de tre färgerna skalas
% med olika skalningskonstanter. 
% HÄR FINNS DET FÖRSTA FELET! VAR SKER FELET? KORRIGERA FELET!
% (Ändra inte skalningskonstanterna - de är korrekta!)
I_g = [];
for i=1:rader
    for j=1:kolumner
        I_g(j,i)=0.2126*I(i,j,1)+0.7152*I(i,j,2)+0.0722*I(i,j,3);
    end
end


% Nu ska även gråskalebilden ritas i Matlabfönstret.
% Värdena inom hakparanteser anger gråskalekanalens minsta resp. högsta värde.
subplot(2,2,2)
imshow(I_g,[0 255]);
title('Gråskalebild')


% Lägg på lite brus på bilden, genom att värdet på varje pixel justeras
% slumpmässigt en aning. Vi adderar ett gaussiskt brus till bilden.
% HÄR FINNS DET ANDRA FELET! VAR SKER FELET? KORRIGERA FELET!
I_n = imnoise(uint8(I_g'),'gaussian',0,0.01);


% Rita den brusiga gråskalebilden
subplot(2,2,3)
imshow(I_n);
title('Brusig gråskalebild')


% I nästa steg ska vi ta fram själva bruset, genom att subtrahera 
% gråskalebilden från den brusiga bilden: (bild + brus) - bild = brus.
% I stället för att subtrahera hela bilderna (matriserna) direkt 
% (som man naturligtvis *ska* göra för att vara effektiv), så ska vi
% som övning utföra subtraktionen pixel för pixel:
Brus = zeros(rader,kolumner);   % Initiera först Brus-matrisen,  
                                % som kommer att innehålla bildbruset. 

% HÄR NEDAN FINNS DE ÅTERSTÅENDE FELEN!      OBS: DET ÄR FLERA FEL!
% VAR SKER FELEN? KORRIGERA DEM!                                
i = 1;
% För "skojs" skull använder vi while-loopar i ställer för for-loopar!  :)
while i <= rader
    while k <= kolumner
        Brus(i,kolumner) = I_n(i, k) - I_g(i, k);
        i=i+1;
    end 
end


% Rita bilden med enbart bruset
subplot(2,2,4) 
imshow(Brus,[-128, 127]);
title('Brus')
