ISS Projekt

Zadání

Implementace různých operací nad rastrovým obrázkem v Matlabu.

Soubory včetně vstupu a výstupů

iss1.zip

Solution.m

 
% pro matlab R2008a
% iptsetpref('UseIPPL',false);
 
I = imread('xsabat01.bmp');
 
% zaostreni
h = [-0.5 -0.5 -0.5; -0.5 5.0 -0.5; -0.5 -0.5 -0.5];
I1 = imfilter(I, h);
imwrite(I1, 'step1.bmp');
 
% otoceni kolem svisle osy
I2 = fliplr(I1);
imwrite(I2, 'step2.bmp');
 
% medianovy filtr
I3 = medfilt2(I2, [5 5]);
imwrite(I3, 'step3.bmp');
 
% rozmazani obrazu
h2 = [1 1 1 1 1; 1 3 3 3 1; 1 3 9 3 1; 1 3 3 3 1; 1 1 1 1 1] / 49;
I4 = imfilter(I3, h2);
imwrite(I4, 'step4.bmp');
 
% chyba oproti originalu
Ipom = fliplr(I);
noise=0;
Iorig=im2double(Ipom);
Inew=im2double(I4);
for (x=1:512)
   for (y=1:512)
      noise=noise+double(abs(Iorig(x,y)-Inew(x,y)));
   end;
end;
noise=noise/512/512
 
% roztazeni histogramu
l = min(min(im2double(I4)));
m = max(max(im2double(I4)));
I5 = imadjust(I4, [l m], [0 1]); 
imwrite(I5, 'step5.bmp');
 
% stredni hodnoty a odchylky
mean_no_hist = mean2(im2double(I4))
std_no_hist = std2(im2double(I4))
mean_hist = mean2(im2double(I5))
std_hist = std2(im2double(I5))
 
% kvantizace na 2 bity: N=2, a=0, b=255
a = 0;
b = 255;
N = 2;
Ipom = double(I5);
I6 = zeros(512,512);
for k=1:512
   for l=1:512      
      I6(k,l) = round(((2^N)-1)*(Ipom(k,l)-a)/(b-a))*(b-a)/((2^N)-1) + a;
   end
end
I6=uint8(I6);
imwrite(I6, 'step6.bmp');

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

*

Můžete používat následující HTML značky a atributy: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">