Zadání
Implementace různých operací nad rastrovým obrázkem v Matlabu.
Soubory včetně vstupu a výstupů
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');