Obsah

  1. Transformace jasu
  2. Ekvalizace histogramu

Společná část

Pro načtení obrázku still.tiff do Matlabu jsem použil následující příkazy:

im=imread('still.tiff');
im=double(im);
Dále jsem postupoval podle zadání úloh na stránce ZSO.

Originál obrázku still.tiff

Transformace jasu

  1. udělejte takovou transformaci jasu, která převede obrázek na jeho negativ

    function [imneg]=negativ(im)
    %Funkce vytvari negativ zadaneho obrazku
    %
    %>> imneg = negativ(im);
    
    max_int=max(im(:));
    imneg=max_int - im;
    
    Negativní obrázek:

  2. oprahujte obrázek hodnotou I=128 (tj udělejte transformaci J=J(I) takovou, že J(I)=0 pro I<128 a J(I)=255 pro I>=128)

    Pro oprahování obrázku jsem použil následující příkazy:

    » a=[zeros(1,128), ones(1,128)*255];
    » prah=a(im+1);
    » figure; imshow(prah,[]);
    
    Oprahovaný obrázek:

  3. udělejte transformaci jasové stupnice J=J(I), která jasy I<50 převádí na J=0, jasy I>200 na J=255 a mezihodnoty 50<=I<=200 transformuje lineárně mezi J=0 a J=255.


Ekvalizace histogramu

Pro zobrazení histogramu použiji funkci hist(im(:),255). Zobrazí se mi následující obrázek:

Pro spočítání kumulativního histogramu jsem vytvořil m-file 'kumhist.m':

function kh=kumhist(im)
% Vypocet kumulativniho histogramu pro vstupni obrazek
%
% Pro zobrazeni je vhodne pouzit nasledujici prikazy ('im' je vstupni obrazek):
% 
%>>kh=kumhist(im);
%>>figure; bar(cumsum(hist(kh(:),256)));
%

h  = hist(im(:),256);
hc = cumsum(h);
eq = 255/hc(end);
hq = round(h*eq);
hqc= cumsum(hq);
hqc2=hqc-round(hq/2);
kh = hqc2(im+1);
Pro jeho spuštění a zobrazení výsledků slouží následující příkazy:
» kh=kumhist(im);
» figure; bar(cumsum(hist(kh(:),256)));
» figure; imshow(kh,[]);
Výsledkem je obrázek po equalizaci a kumulativní histogram.