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:
Okomentovat