Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- clear 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];
- %Najpierw mediana potem normalizacja
- %Najpierw filtry potem operacje
- %Np FiltDolno5 -> normalizacja -> obrot -> umiescNaSrodku
- 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);
- obraz = im2double(obraz);
- orgMediana = filtrMedianowy(obraz, rozmiar);
- blad = 0;
- sumaBledow = 0;
- [x1, y1, z1] = size(obraz);
- for m = 1:x1
- for n = 1:y1
- blad = blad + ((obraz(m, n) - orgMediana(m, n))^2);
- end
- sumaBledow = sumaBledow + blad;
- blad = 0;
- end
- licznik = sumaBledow;
- blad = 0;
- sumaBledow = 0;
- for m = 1:x1
- for n = 1:y1
- blad = blad + (obraz(m, n)^2);
- end
- sumaBledow = sumaBledow + blad;
- blad = 0;
- end
- mianownik = sumaBledow;
- %licznik
- %mianownik
- C = licznik / mianownik;
- S = immse(check, A);
- wynik = S;
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement