pondělí 23. ledna 2012

VUT FIT - ISS projekt

Filtrace obrazu v Matlabu. Kód je tady:




%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%ZAOSTRENI OBRAZU
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
iptsetpref('UseIPPL', false);
obrazekOrig = imread('xmarec12.bmp'); %nacteni originalniho obrazku
obrazekSoucasny = imread('xmarec12.bmp');
vystupniImg = 'step1.bmp' %ulozeni vystupniho jmena do promenne


maticeZaostreni = [ -0.5 -0.5 -0.5; -0.5 5 -0.5; -0.5 -0.5 -0.5];
zaostrenyImg = imfilter(obrazekSoucasny, maticeZaostreni);


imwrite(zaostrenyImg, vystupniImg); %ulozeni obrazku


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%OTOCENI OBRAZU
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
vystupniImg = 'step2.bmp'; %ulozeni vystupniho jmena do promenne
preklopenyImg = fliplr(zaostrenyImg); %preklopim obrazek


imwrite(preklopenyImg, vystupniImg); %ulozeni obrazku


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%MEDIAN OBRAZU
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
vystupniImg = 'step3.bmp';
medianImg = medfilt2(preklopenyImg, [5 5]);


imwrite(medianImg, vystupniImg); %ulozeni obrazku


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%ROZMAZANI OBRAZU
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
vystupniImg = 'step4.bmp';
maticeRozmazani = [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;
rozmazanyImg = imfilter(medianImg, maticeRozmazani);


imwrite(rozmazanyImg, vystupniImg); %ulozeni obrazku


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%CHYBA V OBRAZE
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
porovnavanyImg = fliplr(rozmazanyImg);


porovnavanyImgDouble = im2double(porovnavanyImg);
obrazekOrigDouble = im2double(obrazekOrig);


chyba = 0;


velikostObrazku = size(obrazekOrig);
velikostObrazkuX = min(velikostObrazku);
velikostObrazkuY = max(velikostObrazku);


for(i=1:velikostObrazkuX)
for(j=1:velikostObrazkuY)
chyba = chyba + abs(obrazekOrigDouble(i, j) - porovnavanyImgDouble(i, j));
end;
end;


vyslednaChyba = (chyba / (velikostObrazkuX * velikostObrazkuY))*255


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%ROZTAZENI HISTOGRAMU
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
rozmazanyImgDouble = im2double(rozmazanyImg);
vystupniImg = 'step5.bmp';


min1 = min(rozmazanyImgDouble);
vstupL = min(min1);
max1 = max(rozmazanyImgDouble);
vstupH = max(max1);


vystupL = 0.0;
vystupH = 1.0;


roztazenyImg = imadjust(rozmazanyImg, [vstupL vstupH], [vystupL vystupH]);
imwrite(roztazenyImg, vystupniImg); %ulozeni obrazku


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%MERODATNA ODCHYLKA
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
rozmazanyImgDouble = im2double(rozmazanyImg);
stredniHodnaBezHist = mean2(rozmazanyImgDouble)*255
smerodatnaOdchylkaBezHist = std2(rozmazanyImgDouble)*255


roztazenyImgDouble = im2double(roztazenyImg);
stredniHodnaSHist = mean2(roztazenyImgDouble)*255
smerodatnaOdchylkaSHist = std2(roztazenyImgDouble)*255


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%KVANTIZACE OBRAZU
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
N = 2;
a = 0;
b = 255;


vystupniImg = 'step6.bmp';
vysledekKvantizace = zeros(velikostObrazkuX, velikostObrazkuY);
tmpImg = double(roztazenyImg);
for(i=1:velikostObrazkuX)
for(j=1:velikostObrazkuY)
vysledekKvantizace(i,j) = round(((2^N)-1)*(tmpImg(i, j)-a)/(b-a))*(b-a)/((2^N)-1) + a;
end;
end;


vysledekKvantizace2 = uint8(vysledekKvantizace);
imwrite(vysledekKvantizace2, vystupniImg); %ulozeni obrazku


Download: http://cejky.xf.cz/all/VUT/ISS/xmarec12-ISS_project.zip 
Download mirror1: https://docs.google.com/open?id=0BzEavpv8QogcMDBhNjc5ZDUtMzc3Ni00ZjM1LTk2MTctNzNhNDc2ZWZiNDMy

Žádné komentáře: