Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- clear all;
- close all;
- DolnoPrzepustowy3 = [ 1, 1, 1; 1, 1, 1; 1, 1, 1];
- DolnoPrzepustowy5 = [ 1, 1, 1, 1, 1; 1, 1, 1, 1, 1; 1, 1, 1, 1, 1; 1, 1, 1, 1, 1; 1, 1, 1, 1, 1];
- DolnoPrzepustowy7 = [ 1, 1, 1, 1, 1, 1, 1; 1, 1, 1, 1, 1, 1, 1; 1, 1, 1, 1, 1, 1, 1; 1, 1, 1, 1, 1, 1, 1; 1, 1, 1, 1, 1, 1, 1; 1, 1, 1, 1, 1, 1, 1; 1, 1, 1, 1, 1, 1, 1];
- GornoPrzepustowy3 = [ -1, -1, -1; -1, 9, -1; -1, -1, -1];
- GornoPrzepustowy5 = [ 0, -1, -1, -1, 0; -1, 2, -4, 2, -1; -1, -4, 13, -4, -1; -1, 2, -4, 2, -1; 0, -1, -1, -1, 0];
- Laplace = [ 0, -1, 0; -1, 4, -1; 0, -1, 0];
- Prewit = [ -1, -1, -1; 0, 0, 0; 1, 1, 1];
- Sobel = [ -1, -2, -1; 0, 0, 0; 1, 2, 1];
- Emboss = [ -1, -1, -1; 0, 0, 0; 1, 1, 1];
- DetekcjaLini1 = [ -1, -1, -1; 2, 2, 2; -1, -1, -1];
- DetekcjaLini2 = [ 0, -1, 0; 0, 1, 0; 0, 0, 0];
- A = imread('kwiatek.jpg');
- [x1,y1,z1] = size(A);
- B = filtracjaSplotowa(A,DolnoPrzepustowy3,1);
- licznikx = 1;
- liczniky = 1;
- for x=2:x1 - 1
- for y=2:y1 - 1
- obrOrg(licznikx, liczniky) = A(x,y);
- obrPrz(licznikx, liczniky) = B(x, y);
- liczniky = liczniky + 1;
- end
- licznikx =+ 1;
- liczniky=1;
- end
- C = immse(obrOrg,obrPrz);
- function wynik = pustePole(szerokosc, wysokosc)
- wynik = ones(szerokosc, wysokosc);
- wynik = wynik * 0;
- end
- function wynik = umiescNaSrodku(obrazOrg, obraz)
- [x1,y1,z3] = size(obrazOrg);
- [x2,y2,z3] = size(obraz);
- wynik = obrazOrg;
- x2
- y2
- punktStartowyX = int16((x1/2) - (x2/2));
- punktStartowyY = int16((y1/2) - (y2/2));
- punktStartowyX
- punktStartowyY
- for x = 1:x2
- for y = 1:y2
- obrazOrg(punktStartowyX + x - 1, punktStartowyY + y - 1) = obraz(x, y);
- end
- end
- wynik = obrazOrg;
- end
- function wynik = skalujObraz(obraz, k1, k2)
- [x, y, z] = size(obraz);
- wynik = imresize(obraz,[x*k1 y*k2]);
- end
- function wynik = normalizujObraz(obraz)
- %5A = mat2gray(obraz);
- %A = im2double(obraz);
- wynik = imadjust(obraz);
- end
- function wynik = obrocObraz(obraz, kat)
- wynik = imrotate(obraz, kat);
- end
- function wynik = filtracjaSplotowa(obraz, maska, krawedzie)
- rozmiarMaski = size(maska, 1);
- [x1, y1, z] = size(obraz);
- obraz = double(obraz);
- if krawedzie == 0
- if rozmiarMaski == 3
- for x = 1:x1
- for y = 1:y1
- if x == 1 || x == x1 && y == 1 || y == y1
- przepisanie(x, y) = obraz(x, y);
- end
- end
- end
- C = conv2(obraz, maska);
- C = imresize(C, [x1, y1]);
- for x = 1:x1
- for y = 1:y1
- if x == 1 || x == x1 && y == 1 || y == y1
- C(x, y) = przepisanie(x, y);
- end
- end
- end
- C = mat2gray(C);
- C = im2uint8(C);
- wynik = C;
- end
- if rozmiarMaski == 5
- for x = 1:x1
- for y = 1:y1
- if x == 1 || x == 2 || x == x1 || x == x1 - 1 && y == 1 || y == 2 || y == y1 || y == y1 - 1
- przepisanie(x, y) = obraz(x, y);
- end
- end
- end
- C = conv2(obraz, maska);
- C = imresize(C, [x1, y1]);
- for x = 1:x1
- for y = 1:y1
- if x == 1 || x == 2 || x == x1 || x == x1 - 1 && y == 1 || y == 2 || y == y1 || y == y1 - 1
- C(x, y) = przepisanie(x, y);
- end
- end
- end
- C = mat2gray(C);
- C = im2uint8(C);
- wynik = C;
- end
- if rozmiarMaski == 7
- for x = 1:x1
- for y = 1:y1
- if x == 1 || x == 2 || x == 3 || x == x1 || x == x1 - 1 || x == x1 - 2 && y == 1 || y == 2 || y == 3 || y == y1 || y == y1 - 1 || y == y1 - 2
- przepisanie(x, y) = obraz(x, y);
- end
- end
- end
- C = conv2(obraz, maska);
- C = imresize(C, [x1, y1]);
- for x = 1:x1
- for y = 1:y1
- if x == 1 || x == 2 || x == 3 || x == x1 || x == x1 - 1 || x == x1 - 2 && y == 1 || y == 2 || y == 3 || y == y1 || y == y1 - 1 || y == y1 - 2
- C(x, y) = przepisanie(x, y);
- end
- end
- end
- C = mat2gray(C);
- C = im2uint8(C);
- wynik = C;
- end
- end
- if krawedzie == 1
- if rozmiarMaski == 3
- C = conv2(obraz, maska);
- C = mat2gray(C);
- C = im2uint8(C);
- C = imresize(C, [x1, y1]);
- %C = imresize(C, (x1 + 8) / y1);
- %C = imcrop(C, [rozmiarMaski rozmiarMaski y1-1 y1-1]);
- wynik = C;
- end
- if rozmiarMaski == 5
- C = conv2(obraz, maska);
- C = mat2gray(C);
- C = im2uint8(C);
- C = imresize(C, [x1, y1]);
- %C = imresize(C, (x1+10) / y1);
- %C = imcrop(C, [rozmiarMaski rozmiarMaski y1-1 y1-1]);
- wynik = C;
- end
- if rozmiarMaski == 7
- C = conv2(obraz, maska);
- C = mat2gray(C);
- C = im2uint8(C);
- %C = imresize(C, [x1, y1]);
- %C = imresize(C, (x1 + 12) / y1);
- C = imcrop(C, [rozmiarMaski rozmiarMaski y1-1 y1-1]);
- wynik = C;
- end
- end
- end
- function wynik = solPieprz(obraz, gestosc)
- %gaussian
- wynik = imnoise(obraz,'salt & pepper', gestosc);
- end
- function wynik = filtrMedianowy(obraz, rozmiar)
- maska = [rozmiar rozmiar];
- wynik = medfilt2(obraz, maska);
- end
- function wynik = obliczBladMediany(obraz, rozmiar) %"efektywno�� filtru" rozmiar to macierz np [1 1] [3 3] poda� sam� liczb� np 1 3 5 lub 7 reszta zrobi si� automatycznie
- A = obraz;
- check = filtrMedianowy(A, rozmiar);
- S = immse(check, A);
- wynik = S;
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement